Bug 126387

Summary: Refactor LLInt C stack frame munging helpers so that 32-bit code paths can use them
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, ggaren, mark.lam, mhahnenberg, msaboff, oliver, sam
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on:    
Bug Blocks: 116888    
Attachments:
Description Flags
the patch msaboff: review+

Description Filip Pizlo 2014-01-02 10:41:36 PST
Patch forthcoming.
Comment 1 Filip Pizlo 2014-01-02 10:46:12 PST
Created attachment 220232 [details]
the patch
Comment 2 Filip Pizlo 2014-01-02 11:17:19 PST
Landed on the branch in http://trac.webkit.org/changeset/161211
Comment 3 Michael Saboff 2014-01-02 13:11:08 PST
Comment on attachment 220232 [details]
the patch

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

r=me with comments.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:278
> +    elsif ARM64 or ARM or ARMv7 or ARMv7_TRADITIONAL or MIPS
> +        pushLRAndFP

Only ARM64 has the pushLRAndFP / popLRAndFP pseudo ops.  The other platforms can push and pop individual registers.  Therefore use the push cfr ; push lr instructions for the non-ARM64 platforms.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:286
> +        popLRAndFP

Ditto, except use pop lr ; pop cfr

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:293
> +        pushLRAndFP

Same comment as functionPrologue.

> Source/JavaScriptCore/llint/LowLevelInterpreter.asm:305
> +        popLRAndFP

Same comment as functionEpilogue.
Comment 4 Filip Pizlo 2014-01-02 14:13:32 PST
(In reply to comment #3)
> (From update of attachment 220232 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=220232&action=review
> 
> r=me with comments.
> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:278
> > +    elsif ARM64 or ARM or ARMv7 or ARMv7_TRADITIONAL or MIPS
> > +        pushLRAndFP
> 
> Only ARM64 has the pushLRAndFP / popLRAndFP pseudo ops.  The other platforms can push and pop individual registers.  Therefore use the push cfr ; push lr instructions for the non-ARM64 platforms.
> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:286
> > +        popLRAndFP
> 
> Ditto, except use pop lr ; pop cfr
> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:293
> > +        pushLRAndFP
> 
> Same comment as functionPrologue.
> 
> > Source/JavaScriptCore/llint/LowLevelInterpreter.asm:305
> > +        popLRAndFP
> 
> Same comment as functionEpilogue.

Thanks!  Comments addressed in http://trac.webkit.org/changeset/161225.