Change ARM exit frame layout and alingment handling
authorsgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 25 Jan 2011 07:49:39 +0000 (07:49 +0000)
committersgjesse@chromium.org <sgjesse@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Tue, 25 Jan 2011 07:49:39 +0000 (07:49 +0000)
commit161d631b5e03bf869dd6ae5d640ac0c787c31bd8
tree66a25866010ebabcc7cf896f008e264bfbbba623
parent2e8b8d3ddf66e7f7272b8cc585c35ad5a6685419
Change ARM exit frame layout and alingment handling

Change the ARM exit frame to have the same layout as the IA32 exit frame. This basically re-arranges the order of fp and sp and changes the sp location of the entry frame to hold the sp used by the gc and not the sp for popping the arguments. This removes the option of tearing down the frame and returning using one ldm instruction.

The main motivation for this is to avoid pushing an alignment word before generating the entry frame. The GC handling of optimized frames process the registers pushed as part of a safepoint and asumes that these are at the top of the frame, so if an alignment word is pushed this processing will be one off.

The alignment handling in the C entry stub have also been simplified. Now the value of lr is stored to a stack slot already reserved avoiding pushing it and keeping track of "frame skew".

This does result in more instructions in the exit frame on ARM, but we can look into improving this later.
Review URL: http://codereview.chromium.org/6247019

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6448 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/arm/code-stubs-arm.cc
src/arm/frames-arm.cc
src/arm/frames-arm.h
src/arm/macro-assembler-arm.cc
src/code-stubs.h
src/ia32/code-stubs-ia32.cc
src/ia32/macro-assembler-ia32.cc
src/x64/code-stubs-x64.cc