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

Issue 1242123006: [turbofan] Deferred block spilling heuristic - first step. (Closed)

Created:
5 years, 5 months ago by Mircea Trofin
Modified:
5 years, 4 months ago
CC:
v8-dev
Base URL:
https://chromium.googlesource.com/v8/v8.git@master
Target Ref:
refs/pending/heads/master
Project:
v8
Visibility:
Public.

Description

[turbofan] Deferred block spilling heuristic - first step. This is the first step to enabling optimal handling of spills in deferred blocks. Currently, the feature is limited to ranges that spill just in such a block. This avoids, at this point, complexities around connecting live ranges and control flow. The heuristic consists of: - a general purpose splitting heuristic - split before a call and until the first position needing a register (note: we may want to change this later to fill in a "good" place, i.e. ensure we don't fill in a loop). This is general purpose because it should provide value even in non-deferred block scenarios - a detection of "deferred block splitting", when committing assignments.

Patch Set 1 : #

Total comments: 10

Patch Set 2 : TEMP #

Total comments: 1

Patch Set 3 : Tight splitting #

Total comments: 2

Patch Set 4 : #

Patch Set 5 : #

Patch Set 6 : #

Patch Set 7 : #

Patch Set 8 : #

Patch Set 9 : #

Unified diffs Side-by-side diffs Delta from patch set Stats (+647 lines, -46 lines) Patch
M src/compiler/greedy-allocator.h View 1 2 3 4 1 chunk +6 lines, -2 lines 0 comments Download
M src/compiler/greedy-allocator.cc View 1 2 3 4 5 6 7 8 17 chunks +294 lines, -22 lines 0 comments Download
M src/compiler/instruction.h View 1 2 3 4 5 6 7 1 chunk +4 lines, -0 lines 0 comments Download
M src/compiler/move-optimizer.cc View 1 2 3 4 5 6 7 8 1 chunk +8 lines, -0 lines 0 comments Download
M src/compiler/register-allocator.h View 1 2 3 4 5 6 7 8 4 chunks +27 lines, -1 line 0 comments Download
M src/compiler/register-allocator.cc View 1 2 3 4 5 6 7 8 7 chunks +104 lines, -15 lines 0 comments Download
M test/mjsunit/mjsunit.status View 1 2 3 4 5 6 7 8 1 chunk +1 line, -0 lines 0 comments Download
M test/unittests/compiler/instruction-sequence-unittest.h View 2 chunks +2 lines, -2 lines 0 comments Download
M test/unittests/compiler/instruction-sequence-unittest.cc View 3 chunks +4 lines, -4 lines 0 comments Download
M test/unittests/compiler/register-allocator-unittest.cc View 1 2 3 4 5 6 7 8 2 chunks +197 lines, -0 lines 0 comments Download

Messages

Total messages: 9 (5 generated)
Mircea Trofin
https://codereview.chromium.org/1242123006/diff/40001/src/compiler/register-allocator.cc File src/compiler/register-allocator.cc (right): https://codereview.chromium.org/1242123006/diff/40001/src/compiler/register-allocator.cc#newcode356 src/compiler/register-allocator.cc:356: InstructionBlock* start_block = code->GetInstructionBlock(first_instr); We may actually want to ...
5 years, 5 months ago (2015-07-20 15:46:58 UTC) #4
Jarin
https://codereview.chromium.org/1242123006/diff/40001/src/compiler/greedy-allocator.cc File src/compiler/greedy-allocator.cc (right): https://codereview.chromium.org/1242123006/diff/40001/src/compiler/greedy-allocator.cc#newcode87 src/compiler/greedy-allocator.cc:87: auto instr = data->code()->InstructionAt(index); Expand 'auto', please. https://codereview.chromium.org/1242123006/diff/40001/src/compiler/greedy-allocator.cc#newcode88 src/compiler/greedy-allocator.cc:88: ...
5 years, 5 months ago (2015-07-22 12:59:36 UTC) #5
Mircea Trofin
This particular patch is *not* a candidate for commit. I wanted to leverage the time ...
5 years, 5 months ago (2015-07-23 02:20:04 UTC) #6
Benedikt Meurer
5 years, 4 months ago (2015-07-28 04:57:18 UTC) #7
The general direction seems good. Did you investigate the test failures already?

https://codereview.chromium.org/1242123006/diff/80001/src/compiler/register-a...
File src/compiler/register-allocator.cc (right):

https://codereview.chromium.org/1242123006/diff/80001/src/compiler/register-a...
src/compiler/register-allocator.cc:475: UsePosition*
LiveRange::NextStackPosition(LifetimePosition start) const {
Nit: I'd use NextSlotPosition as name for consistency (use type is
kRequiresSlot).

https://codereview.chromium.org/1242123006/diff/80001/src/runtime/runtime-int...
File src/runtime/runtime-internal.cc (right):

https://codereview.chromium.org/1242123006/diff/80001/src/runtime/runtime-int...
src/runtime/runtime-internal.cc:29: Object* ret = isolate->Throw(args[0]);
What is the motivation for this change?

Powered by Google App Engine
This is Rietveld 408576698