Bug 169515

Summary: Air should be powerful enough to support Tmp-splitting
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: NEW ---    
Severity: Normal    
Priority: P2    
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Attachments:
Description Flags
the patch saam: review+

Description Filip Pizlo 2017-03-11 19:19:16 PST
I implemented a live range splitting phase that splits Tmps that are live only for cold uses. It's a performance regression, because it turns out that IRC isn't sufficiently graceful at coalescing to handle being overloaded with even more temporaries. The performance losses all came from programs that would get slightly worse register allocation when both the versions of the Tmp got spilled. Perhaps one day we could solve that with spill coalescing. But this patch didn't speed *anything* up, which casts a lot of doubt about the profitability of this approach.

But in the process of writing the phase, I added some utilities to Air. I want to land those utilities.
Comment 1 Filip Pizlo 2017-03-11 19:26:09 PST
Created attachment 304181 [details]
the patch

I want to at least upload this useful code.
Comment 2 Saam Barati 2017-03-14 18:10:43 PDT
Comment on attachment 304181 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=304181&action=review

r=me

> Source/JavaScriptCore/b3/air/AirBreakCriticalEdges.h:34
> +void breakCriticalEdges(Code&);

nice