Bug 129056

Summary: Need to align sp before calling operationLoadVarargs on 32-bit platforms
Product: WebKit Reporter: Mark Lam <mark.lam>
Component: JavaScriptCoreAssignee: Mark Lam <mark.lam>
Status: RESOLVED FIXED    
Severity: Normal CC: fpizlo, ggaren, mcrobertg7, mhahnenberg, mmirman, msaboff, oliver
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
the patch. msaboff: review+

Description Mark Lam 2014-02-19 12:59:02 PST
In JIT::compileLoadVarargs(), we'll call operationSizeFrameForVarargs() to compute the amount of stack space we need for the varargs, adjust the stack pointer to make room for those varargs, and then call operationLoadVarargs() to fill in the varargs.  Currently, the stack pointer adjustment took care of allocating space for the varargs, but did not align the stack pointer for the call to operationLoadVarargs().  The fix is to align the stack pointer there.

ref: <rdar://problem/16035552>
Comment 1 Filip Pizlo 2014-02-19 13:03:11 PST
(In reply to comment #0)
> In JIT::compileLoadVarargs(), we'll call operationSizeFrameForVarargs() to compute the amount of stack space we need for the varargs, adjust the stack pointer to make room for those varargs, and then call operationLoadVarargs() to fill in the varargs.  Currently, the stack pointer adjustment took care of allocating space for the varargs, but did not align the stack pointer for the call to operationLoadVarargs().  The fix is to align the stack pointer there.
> 
> ref: <rdar://problem/16035552>

What does 64-bit do?
Comment 2 Mark Lam 2014-02-19 13:04:29 PST
(In reply to comment #1)
> What does 64-bit do?

The stack pointer adjustment there is based on the new CallFrame pointer value.  On 64-bit, they are both similarly aligned (i.e. low nibbles are 0).  Hence, no additional adjustment is needed.
Comment 3 Mark Lam 2014-02-19 13:11:33 PST
Created attachment 224666 [details]
the patch.
Comment 4 Michael Saboff 2014-02-19 13:15:24 PST
Comment on attachment 224666 [details]
the patch.

Add comment similar to what is in the LLInt.
r=me
Comment 5 Mark Lam 2014-02-19 15:36:41 PST
Landed in r164397: <http://trac.webkit.org/r164397>.