Chromium Code Reviews

Issue 6116001: Use a separate marker value to allocate the arguments object on deoptimzation... (Closed)

Created:
9 years, 11 months ago by fschneider
Modified:
9 years, 6 months ago
Reviewers:
Kevin Millikin (Chromium)
CC:
v8-dev
Visibility:
Public.

Description

Use a separate marker value to allocate the arguments object on deoptimzation. Before we used the hole value for this purpose, but this does not work once we start using the hole value for other purposes in the optimizing compiler. Committed: http://code.google.com/p/v8/source/detail?r=6210

Patch Set 1 #

Patch Set 2 : '' #

Total comments: 6

Patch Set 3 : '' #

Unified diffs Side-by-side diffs Stats (+55 lines, -28 lines)
M src/accessors.cc View 1 chunk +1 line, -1 line 0 comments
M src/arm/codegen-arm.cc View 4 chunks +4 lines, -4 lines 0 comments
M src/assembler.h View 1 chunk +3 lines, -0 lines 0 comments
M src/assembler.cc View 1 chunk +5 lines, -0 lines 0 comments
M src/deoptimizer.cc View 1 chunk +4 lines, -4 lines 0 comments
M src/heap.h View 1 chunk +1 line, -0 lines 0 comments
M src/heap.cc View 1 chunk +6 lines, -0 lines 0 comments
M src/ia32/codegen-ia32.cc View 5 chunks +8 lines, -8 lines 0 comments
M src/objects.h View 1 chunk +1 line, -0 lines 0 comments
M src/objects-debug.cc View 1 chunk +4 lines, -2 lines 0 comments
M src/objects-inl.h View 1 chunk +5 lines, -0 lines 0 comments
M src/runtime.cc View 1 chunk +1 line, -1 line 0 comments
M src/serialize.cc View 1 chunk +4 lines, -0 lines 0 comments
M src/x64/codegen-x64.cc View 5 chunks +8 lines, -8 lines 0 comments

Messages

Total messages: 4 (0 generated)
fschneider
9 years, 11 months ago (2011-01-06 12:07:43 UTC) #1
fschneider
New version. Added a new oddball object arguments_marker. Changed all the places that used the ...
9 years, 11 months ago (2011-01-06 13:48:01 UTC) #2
Kevin Millikin (Chromium)
You will have to update the classic code generators for ARM and c64, because they ...
9 years, 11 months ago (2011-01-06 14:00:47 UTC) #3
fschneider
9 years, 11 months ago (2011-01-06 16:22:49 UTC) #4
http://codereview.chromium.org/6116001/diff/8001/src/heap.h
File src/heap.h (right):

http://codereview.chromium.org/6116001/diff/8001/src/heap.h#newcode119
src/heap.h:119: V(Object, arguments_marker, ArgumentsMarker)
On 2011/01/06 14:00:47, Kevin Millikin wrote:
> I guess this list is unordered, but it makes sense to put all the oddballs
> together.

Done.

http://codereview.chromium.org/6116001/diff/8001/src/objects-debug.cc
File src/objects-debug.cc (right):

http://codereview.chromium.org/6116001/diff/8001/src/objects-debug.cc#newcode371
src/objects-debug.cc:371: ASSERT(value == 0 || value == 1 || value == -1 ||
On 2011/01/06 14:00:47, Kevin Millikin wrote:
> This seems a bit silly, but I guess it could catch a corrupted oddball?  Maybe
> add a comment that we use distinct negative integers for ToNumber on 'hidden'
> oddballs, and then rewrite the assert as:
> const int kLeastHiddenOddballNumber = -4;
> ASSERT(value <= 1);
> ASSERT(value >= kLeastHiddenOddballNumber);

Done.

http://codereview.chromium.org/6116001/diff/8001/src/objects.h
File src/objects.h (right):

http://codereview.chromium.org/6116001/diff/8001/src/objects.h#newcode596
src/objects.h:596: INLINE(bool IsArgumentsMarker());
On 2011/01/06 14:00:47, Kevin Millikin wrote:
> I wonder why we INLINE exactly these two?

Good question. I don't know. Maybe we should use INLINE for the others too.

Powered by Google App Engine