Bug 150511

Summary: Air needs a late register liveness phase that calls Special::reportUsedRegisters()
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, benjamin, ggaren, mark.lam, mhahnenb, msaboff, nrotem, oliver, saam, sam
Priority: P2    
Version: WebKit Nightly Build   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 150279, 150750    
Attachments:
Description Flags
the patch saam: review+

Description Filip Pizlo 2015-10-23 13:03:07 PDT
Otherwise, stackmaps will think that no registers are in use.
Comment 1 Filip Pizlo 2015-10-30 19:47:17 PDT
Created attachment 264462 [details]
the patch
Comment 2 Saam Barati 2015-10-30 22:37:30 PDT
Comment on attachment 264462 [details]
the patch

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

LGTM

> Source/JavaScriptCore/b3/air/AirGenerate.cpp:79
> +    recordUsedRegisters(code);

Do we cache the results of the used registers?
If not, maybe a better name would be just reportUsedRegisters like the function name?

> Source/JavaScriptCore/b3/air/AirRecordUsedRegisters.cpp:67
> +

Style: I think we can drop the new lines at the end of the file.

> Source/JavaScriptCore/b3/air/AirRecordUsedRegisters.h:35
> +// This allocates StackSlots to places on the stack. It first allocates the pinned ones in index

Is this really what this phase does?
Comment 3 Filip Pizlo 2015-10-30 23:39:55 PDT
(In reply to comment #2)
> Comment on attachment 264462 [details]
> the patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=264462&action=review
> 
> LGTM
> 
> > Source/JavaScriptCore/b3/air/AirGenerate.cpp:79
> > +    recordUsedRegisters(code);
> 
> Do we cache the results of the used registers?
> If not, maybe a better name would be just reportUsedRegisters like the
> function name?

Good point.

> 
> > Source/JavaScriptCore/b3/air/AirRecordUsedRegisters.cpp:67
> > +
> 
> Style: I think we can drop the new lines at the end of the file.

OK.

> 
> > Source/JavaScriptCore/b3/air/AirRecordUsedRegisters.h:35
> > +// This allocates StackSlots to places on the stack. It first allocates the pinned ones in index
> 
> Is this really what this phase does?

Ooops!
Comment 4 Filip Pizlo 2015-10-31 16:02:56 PDT
Landed in http://trac.webkit.org/changeset/191845