Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Issue 6247019: Change ARM exit frame layout and alingment handling... (Closed)

Created:
9 years, 11 months ago by Søren Thygesen Gjesse
Modified:
9 years, 7 months ago
CC:
v8-dev
Visibility:
Public.

Description

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. Committed: http://code.google.com/p/v8/source/detail?r=6448

Patch Set 1 #

Total comments: 6

Patch Set 2 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+74 lines, -115 lines) Patch
M src/arm/code-stubs-arm.cc View 1 7 chunks +13 lines, -33 lines 0 comments Download
M src/arm/frames-arm.h View 1 2 chunks +7 lines, -11 lines 0 comments Download
M src/arm/frames-arm.cc View 1 2 chunks +2 lines, -9 lines 0 comments Download
M src/arm/macro-assembler-arm.cc View 1 5 chunks +44 lines, -51 lines 0 comments Download
M src/code-stubs.h View 1 1 chunk +1 line, -2 lines 0 comments Download
M src/ia32/code-stubs-ia32.cc View 1 2 chunks +2 lines, -3 lines 0 comments Download
M src/ia32/macro-assembler-ia32.cc View 1 3 chunks +3 lines, -3 lines 0 comments Download
M src/x64/code-stubs-x64.cc View 1 2 chunks +2 lines, -3 lines 0 comments Download

Messages

Total messages: 3 (0 generated)
Søren Thygesen Gjesse
9 years, 11 months ago (2011-01-24 15:22:57 UTC) #1
Mads Ager (chromium)
LGTM Getting rid of the "frame skew" is a nice simplification. http://codereview.chromium.org/6247019/diff/1/src/arm/code-stubs-arm.cc File src/arm/code-stubs-arm.cc (right): ...
9 years, 11 months ago (2011-01-24 18:21:08 UTC) #2
Søren Thygesen Gjesse
9 years, 11 months ago (2011-01-25 07:48:38 UTC) #3
http://codereview.chromium.org/6247019/diff/1/src/arm/code-stubs-arm.cc
File src/arm/code-stubs-arm.cc (right):

http://codereview.chromium.org/6247019/diff/1/src/arm/code-stubs-arm.cc#newco...
src/arm/code-stubs-arm.cc:2609: masm->add(lr, pc, Operand(4));  // Compute
return address: (pc + 8) + 4
On 2011/01/24 18:21:08, Mads Ager wrote:
> You haven't changed this, but where is the '+ 8'?

The '+ 8' refers to that the pc is already at '+ 8' from the current
instruction. Rephrased the comment.

http://codereview.chromium.org/6247019/diff/1/src/arm/frames-arm.h
File src/arm/frames-arm.h (right):

http://codereview.chromium.org/6247019/diff/1/src/arm/frames-arm.h#newcode116
src/arm/frames-arm.h:116: static const int kCallerPCOffset = +1 * kPointerSize;
On 2011/01/24 18:21:08, Mads Ager wrote:
> Remove the +?

Done.

http://codereview.chromium.org/6247019/diff/1/src/arm/frames-arm.h#newcode120
src/arm/frames-arm.h:120: static const int kCallerSPDisplacement = +2 *
kPointerSize;
On 2011/01/24 18:21:08, Mads Ager wrote:
> Remove the +?

Done.

Powered by Google App Engine
This is Rietveld 408576698