• mtrofin's avatar
    [turbofan] Greedy allocator refactoring. · 1cd60451
    mtrofin authored
    Separated core greedy allocator concepts, exposing the APIs we would want to continue working with. In particular, this change completely reworks CoalescedLiveRanges to reflect the fact that we expect more than one possible conflict, scrapping the initial design of the structure. Since this is a critical part of the design, this change may be thought of as a full rewrite of the algorithm.
    
    Reduced all heuristics to just 2 essential ones: split "somewhere", which we'll still need when all other heuristics fail; and spill.
    
    Introduced a simple primitive for splitting - at GapPosition::START. The goal is to use such primitives to quickly and reliably author heuristics.
    
    I expected this primitive to "just work" for any arbitrary instruction index within a live range - e.g. its middle. That's not the case, it seems to upset execution in certain scenarios. Restricting to either before/after use positions seems to work. I'm still investigating what the source of failures is in the case of "arbitrary instruction in the range" case.
    
    I intended to document the rationale and prove the soundness of always using START for splits, but I will postpone to after this last remaining issue is resolved.
    
    Review URL: https://codereview.chromium.org/1205173002
    
    Cr-Commit-Position: refs/heads/master@{#29352}
    1cd60451
Name
Last commit
Last update
..
arm Loading commit data...
arm64 Loading commit data...
ia32 Loading commit data...
mips Loading commit data...
mips64 Loading commit data...
ppc Loading commit data...
x64 Loading commit data...
x87 Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
STYLE Loading commit data...
access-builder.cc Loading commit data...
access-builder.h Loading commit data...
all-nodes.cc Loading commit data...
all-nodes.h Loading commit data...
ast-graph-builder.cc Loading commit data...
ast-graph-builder.h Loading commit data...
ast-loop-assignment-analyzer.cc Loading commit data...
ast-loop-assignment-analyzer.h Loading commit data...
basic-block-instrumentor.cc Loading commit data...
basic-block-instrumentor.h Loading commit data...
change-lowering.cc Loading commit data...
change-lowering.h Loading commit data...
coalesced-live-ranges.cc Loading commit data...
coalesced-live-ranges.h Loading commit data...
code-generator-impl.h Loading commit data...
code-generator.cc Loading commit data...
code-generator.h Loading commit data...
common-node-cache.cc Loading commit data...
common-node-cache.h Loading commit data...
common-operator-reducer.cc Loading commit data...
common-operator-reducer.h Loading commit data...
common-operator.cc Loading commit data...
common-operator.h Loading commit data...
control-builders.cc Loading commit data...
control-builders.h Loading commit data...
control-equivalence.cc Loading commit data...
control-equivalence.h Loading commit data...
control-flow-optimizer.cc Loading commit data...
control-flow-optimizer.h Loading commit data...
dead-code-elimination.cc Loading commit data...
dead-code-elimination.h Loading commit data...
diamond.h Loading commit data...
frame-elider.cc Loading commit data...
frame-elider.h Loading commit data...
frame-states.cc Loading commit data...
frame-states.h Loading commit data...
frame.h Loading commit data...
gap-resolver.cc Loading commit data...
gap-resolver.h Loading commit data...
graph-builder.h Loading commit data...
graph-reducer.cc Loading commit data...
graph-reducer.h Loading commit data...
graph-replay.cc Loading commit data...
graph-replay.h Loading commit data...
graph-trimmer.cc Loading commit data...
graph-trimmer.h Loading commit data...
graph-visualizer.cc Loading commit data...
graph-visualizer.h Loading commit data...
graph.cc Loading commit data...
graph.h Loading commit data...
greedy-allocator.cc Loading commit data...
greedy-allocator.h Loading commit data...
instruction-codes.h Loading commit data...
instruction-selector-impl.h Loading commit data...
instruction-selector.cc Loading commit data...
instruction-selector.h Loading commit data...
instruction.cc Loading commit data...
instruction.h Loading commit data...
ir-operations.txt Loading commit data...
js-builtin-reducer.cc Loading commit data...
js-builtin-reducer.h Loading commit data...
js-context-specialization.cc Loading commit data...
js-context-specialization.h Loading commit data...
js-generic-lowering.cc Loading commit data...
js-generic-lowering.h Loading commit data...
js-graph.cc Loading commit data...
js-graph.h Loading commit data...
js-inlining.cc Loading commit data...
js-inlining.h Loading commit data...
js-intrinsic-lowering.cc Loading commit data...
js-intrinsic-lowering.h Loading commit data...
js-operator.cc Loading commit data...
js-operator.h Loading commit data...
js-type-feedback.cc Loading commit data...
js-type-feedback.h Loading commit data...
js-typed-lowering.cc Loading commit data...
js-typed-lowering.h Loading commit data...
jump-threading.cc Loading commit data...
jump-threading.h Loading commit data...
linkage-impl.h Loading commit data...
linkage.cc Loading commit data...
linkage.h Loading commit data...
liveness-analyzer.cc Loading commit data...
liveness-analyzer.h Loading commit data...
load-elimination.cc Loading commit data...
load-elimination.h Loading commit data...
loop-analysis.cc Loading commit data...
loop-analysis.h Loading commit data...
loop-peeling.cc Loading commit data...
loop-peeling.h Loading commit data...
machine-operator-reducer.cc Loading commit data...
machine-operator-reducer.h Loading commit data...
machine-operator.cc Loading commit data...
machine-operator.h Loading commit data...
machine-type.cc Loading commit data...
machine-type.h Loading commit data...
move-optimizer.cc Loading commit data...
move-optimizer.h Loading commit data...
node-aux-data.h Loading commit data...
node-cache.cc Loading commit data...
node-cache.h Loading commit data...
node-marker.cc Loading commit data...
node-marker.h Loading commit data...
node-matchers.cc Loading commit data...
node-matchers.h Loading commit data...
node-properties.cc Loading commit data...
node-properties.h Loading commit data...
node.cc Loading commit data...
node.h Loading commit data...
opcodes.cc Loading commit data...
opcodes.h Loading commit data...
operator-properties.cc Loading commit data...
operator-properties.h Loading commit data...
operator.cc Loading commit data...
operator.h Loading commit data...
osr.cc Loading commit data...
osr.h Loading commit data...
pipeline-statistics.cc Loading commit data...
pipeline-statistics.h Loading commit data...
pipeline.cc Loading commit data...
pipeline.h Loading commit data...
register-allocator-verifier.cc Loading commit data...
register-allocator-verifier.h Loading commit data...
register-allocator.cc Loading commit data...
register-allocator.h Loading commit data...
register-configuration.cc Loading commit data...
register-configuration.h Loading commit data...
representation-change.h Loading commit data...
schedule.cc Loading commit data...
schedule.h Loading commit data...
scheduler.cc Loading commit data...
scheduler.h Loading commit data...
select-lowering.cc Loading commit data...
select-lowering.h Loading commit data...
simplified-lowering.cc Loading commit data...
simplified-lowering.h Loading commit data...
simplified-operator-reducer.cc Loading commit data...
simplified-operator-reducer.h Loading commit data...
simplified-operator.cc Loading commit data...
simplified-operator.h Loading commit data...
source-position.cc Loading commit data...
source-position.h Loading commit data...
state-values-utils.cc Loading commit data...
state-values-utils.h Loading commit data...
tail-call-optimization.cc Loading commit data...
tail-call-optimization.h Loading commit data...
typer.cc Loading commit data...
typer.h Loading commit data...
value-numbering-reducer.cc Loading commit data...
value-numbering-reducer.h Loading commit data...
verifier.cc Loading commit data...
verifier.h Loading commit data...
zone-pool.cc Loading commit data...
zone-pool.h Loading commit data...