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 9325019: Allow bailing out of the register allocator when running out of virtual registers. (Closed)

Created:
8 years, 10 months ago by fschneider
Modified:
8 years, 10 months ago
Reviewers:
Sven Panne
CC:
v8-dev
Visibility:
Public.

Description

Allow bailing out of the register allocator when running out of virtual registers. 1. Instead of checking upfront and estimating a limit for the number, we now are able to stop register allocation and bailout when we don't have enough virtual registers. 2. GCed some out-dated flags from flag-definition.h 3. Simplified the interface from the Lithium builder to the register allocator in lithium-*.cc: For uses and definitions, we just record the virtual register number given by the Hydrogen value id. For temporaries, we request a new virtual register from the allocator. For fixed temps, we don't need to do anything. 4. Increased number of deoptimization entries to 16K. Eventually we probably want to make this array grow dynamically. Committed as r10597.

Patch Set 1 #

Total comments: 3

Patch Set 2 : '' #

Unified diffs Side-by-side diffs Delta from patch set Stats (+74 lines, -84 lines) Patch
M src/arm/lithium-arm.cc View 3 chunks +6 lines, -5 lines 0 comments Download
M src/compiler.cc View 2 chunks +2 lines, -2 lines 0 comments Download
M src/deoptimizer.h View 1 chunk +1 line, -1 line 0 comments Download
M src/flag-definitions.h View 1 chunk +0 lines, -4 lines 0 comments Download
M src/hydrogen.cc View 1 chunk +8 lines, -10 lines 0 comments Download
M src/ia32/lithium-ia32.cc View 3 chunks +6 lines, -5 lines 0 comments Download
M src/lithium-allocator.h View 4 chunks +14 lines, -13 lines 0 comments Download
M src/lithium-allocator.cc View 14 chunks +25 lines, -34 lines 0 comments Download
M src/mips/lithium-mips.cc View 3 chunks +6 lines, -5 lines 0 comments Download
M src/x64/lithium-x64.cc View 3 chunks +6 lines, -5 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
fschneider
8 years, 10 months ago (2012-02-03 08:44:07 UTC) #1
Sven Panne
http://codereview.chromium.org/9325019/diff/1/src/arm/lithium-arm.cc File src/arm/lithium-arm.cc (right): http://codereview.chromium.org/9325019/diff/1/src/arm/lithium-arm.cc#newcode795 src/arm/lithium-arm.cc:795: if (!allocator_->AllocationOk()) Abort("Not enough virtual registers."); I am a ...
8 years, 10 months ago (2012-02-03 09:01:20 UTC) #2
fschneider
http://codereview.chromium.org/9325019/diff/1/src/arm/lithium-arm.cc File src/arm/lithium-arm.cc (right): http://codereview.chromium.org/9325019/diff/1/src/arm/lithium-arm.cc#newcode795 src/arm/lithium-arm.cc:795: if (!allocator_->AllocationOk()) Abort("Not enough virtual registers."); Abort in this ...
8 years, 10 months ago (2012-02-03 09:17:41 UTC) #3
Sven Panne
8 years, 10 months ago (2012-02-03 09:46:50 UTC) #4
lgtm

http://codereview.chromium.org/9325019/diff/1/src/arm/lithium-arm.cc
File src/arm/lithium-arm.cc (right):

http://codereview.chromium.org/9325019/diff/1/src/arm/lithium-arm.cc#newcode795
src/arm/lithium-arm.cc:795: if (!allocator_->AllocationOk()) Abort("Not enough
virtual registers.");
On 2012/02/03 09:17:41, fschneider wrote:
> Abort in this case is doing exactly that, namely bailing out of the lithium
> construction by setting the is_aborted flag which is checked in
> LChunkBuilder::DoBasicBlock.

Ooops, I've missed the Abort method in LChunkBuilder, sorry... %-}

Powered by Google App Engine
This is Rietveld 408576698