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

Issue 7132002: Remove RESTORE_CONTEXT flag from ia32 crankshaft codegen. (Closed)

Created:
9 years, 6 months ago by William Hesse
Modified:
9 years, 5 months ago
CC:
v8-dev
Visibility:
Public.

Description

As part of allowing different contexts for inlined functions, eliminate most explicit reads of the context from the stack frame in ia32 crankshaft codegen. Eliminates the enum flag RESTORE_CONTEXT and CONTEXT_ADJUSTED, and adds a context HValue and LOperand to many hydrogen and lithium instructions. Context is still used from the stack from in CallKnownFunction (this seems safe), and in CallRuntimeFromDeferred in lithium-codegen-ia32.cc, which needs to be fixed. BUG= TEST= Committed: http://code.google.com/p/v8/source/detail?r=8529

Patch Set 1 #

Patch Set 2 : Add ArithmeticOperation #

Patch Set 3 : More changes #

Patch Set 4 : Yet more changes #

Patch Set 5 : Yet more changes #

Patch Set 6 : Some changes, to add to the existing changes. #

Patch Set 7 : more changes #

Patch Set 8 : What happened? #

Patch Set 9 : Remove RESTORE_CONTEXT and CONTEXT_ADJUSTED enum, and its uses. #

Patch Set 10 : Fix x64 and arm port. #

Patch Set 11 : Fix required input representations for changed functions. #

Patch Set 12 : Completed - use HContext everywhere except for HChange to tagged allocation. #

Total comments: 10

Patch Set 13 : Fix lint errors, address comments. #

Patch Set 14 : Fix errors after merge #

Patch Set 15 : Fix merge issues part 1. #

Patch Set 16 : svn rebase #

Patch Set 17 : last linting changes #

Unified diffs Side-by-side diffs Delta from patch set Stats (+617 lines, -389 lines) Patch
M src/arm/lithium-arm.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +5 lines, -5 lines 0 comments Download
M src/hydrogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -1 line 0 comments Download
M src/hydrogen.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 25 chunks +81 lines, -46 lines 0 comments Download
M src/hydrogen-instructions.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 51 chunks +230 lines, -138 lines 0 comments Download
M src/hydrogen-instructions.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +5 lines, -3 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +6 lines, -14 lines 0 comments Download
M src/ia32/lithium-codegen-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 52 chunks +105 lines, -85 lines 0 comments Download
M src/ia32/lithium-ia32.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 18 chunks +121 lines, -63 lines 0 comments Download
M src/ia32/lithium-ia32.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 15 chunks +57 lines, -29 lines 0 comments Download
M src/x64/lithium-x64.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +5 lines, -5 lines 0 comments Download

Messages

Total messages: 3 (0 generated)
William Hesse
OK, this is done except for the LIn instruction, and ready for review. I'll do ...
9 years, 5 months ago (2011-06-28 15:45:00 UTC) #1
Kevin Millikin (Chromium)
A round of comments. Also make sure it lints. http://codereview.chromium.org/7132002/diff/19001/src/hydrogen-instructions.h File src/hydrogen-instructions.h (right): http://codereview.chromium.org/7132002/diff/19001/src/hydrogen-instructions.h#newcode2501 src/hydrogen-instructions.h:2501: ...
9 years, 5 months ago (2011-06-29 08:36:15 UTC) #2
William Hesse
9 years, 5 months ago (2011-06-29 10:30:21 UTC) #3
http://codereview.chromium.org/7132002/diff/19001/src/hydrogen-instructions.h
File src/hydrogen-instructions.h (right):

http://codereview.chromium.org/7132002/diff/19001/src/hydrogen-instructions.h...
src/hydrogen-instructions.h:2501: if (index == 0) {
All changed to
return cond
    ? value1
    : value2;

On 2011/06/29 08:36:20, Kevin Millikin wrote:
> I sort of prefer
> 
> return (index == 0) ? Representation::Tagged() : representation();
> 
> but I guess you don't?

http://codereview.chromium.org/7132002/diff/19001/src/hydrogen-instructions.h...
src/hydrogen-instructions.h:2644: HValue* left() { return value(); }
On 2011/06/29 08:36:20, Kevin Millikin wrote:
> It might make sense to define left() before right() here :)

Done.

http://codereview.chromium.org/7132002/diff/19001/src/ia32/lithium-codegen-ia...
File src/ia32/lithium-codegen-ia32.cc (right):

http://codereview.chromium.org/7132002/diff/19001/src/ia32/lithium-codegen-ia...
src/ia32/lithium-codegen-ia32.cc:3543: __ mov(esi, Operand(ebp,
StandardFrameConstants::kContextOffset));
On 2011/06/29 08:36:20, Kevin Millikin wrote:
> This needs a comment that we're potentially passing the wrong context (in the
> case of an inlined function).

Done.

http://codereview.chromium.org/7132002/diff/19001/src/ia32/lithium-ia32.cc
File src/ia32/lithium-ia32.cc (right):

http://codereview.chromium.org/7132002/diff/19001/src/ia32/lithium-ia32.cc#ne...
src/ia32/lithium-ia32.cc:2167: new LDeleteProperty(UseFixed(instr->context(),
esi),
On 2011/06/29 08:36:20, Kevin Millikin wrote:
> I like to name these UseXXX subexpressions and linearize them.  I'm not sure
if
> we still have an evaluation-order dependency, but I'd like the register
> allocator to be determinstic wrt. the compiler's evaluation order. 
> 
> So feel free to clean them up as you notice them.

Done.

Powered by Google App Engine
This is Rietveld 408576698