Bug 126387 - Refactor LLInt C stack frame munging helpers so that 32-bit code paths can use them
Summary: Refactor LLInt C stack frame munging helpers so that 32-bit code paths can us...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on:
Blocks: 116888
  Show dependency treegraph
 
Reported: 2014-01-02 10:41 PST by Filip Pizlo
Modified: 2014-01-02 14:13 PST (History)
7 users (show)

See Also:


Attachments
the patch (6.16 KB, patch)
2014-01-02 10:46 PST, Filip Pizlo
msaboff: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
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.