[webkit-dev] JavaScript Stack Changes

Michael Saboff msaboff at apple.com
Mon Oct 7 11:19:55 PDT 2013

We have been making changes to the JavaScript native stack layout in order to align the layout more closely with native C/C++ stack layout. This is being done as part of integrating LLVM as a back-end for the FTL JIT.  This is being tracked with the umbrella bug https://bugs.webkit.org/show_bug.cgi?id=116888.

We have already changed the stack direction from growing up in address to growing down.  We are in the process of changing calls from JavaScript to C helpers to be compliant with native calling conventions by changing calls using JITStubCall.h to use CCallHelpers.h (tracked with https://bugs.webkit.org/show_bug.cgi?id=122287).  Other tasks that remain are to rearrange the layout of JSStack so that the CallerFrame and ReturnPC frame location are consistent with native C stack conventions, using the native stack pointer register instead of reserving our own register, and modifying the thunks used to invoke JavaScript from C/C++ code.

The JavaScript team at Apple will make and test the changes to support X86 and X86_64 for Mac OS X and Windows, and ARM Thumb 2.  We will likely make speculative changes for the other ports (ARM Traditional, MIPS and SH4), but have no means to test those changes. If you maintain the processor specific JavaScript code for one of those ports, send me a reply so we can coordinate changes to minimize breakage.

- Michael Saboff

More information about the webkit-dev mailing list