23a8837fcc
Reason for revert: Weird endless loop in TopLevelLiveRange::Merge() due to always splitting first and not making progress. See comments, unfortunately no useable repro. Original issue's description: > [turbofan] Splinter into one range. > > Before this CL, we created one live range per successive set of > deferred blocks. For scenarios with many such blocks, this creates > an upfront pressure for the register allocator to deal with many ranges. > Linear sorts ranges, which is a super-linear operation. > > The change places all deferred intervals into one range, meaning that, > at most, there will be twice as many live ranges as the original set. In > pathological cases (benchmarks/Compile/slow_nbody1.js), this change > halves the compilation time. We see some improvements elsewhere, > notably SQLite at ~4-5%. > > We may be able to avoid the subsequent merge. Its cost is the > additional ranges it may need to create. The sole reason for the merge > phase is to provide an unchanged view of the world to the subsequent > phases. With the at-most-one splinter model, we may be able to teach > the other phases about splintering - should we find perf hindrances > due to merging. > > Committed: https://crrev.com/efdcd20267870276c5824f1ccf4e171ac378f7ae > Cr-Commit-Position: refs/heads/master@{#31224} TBR=jarin@chromium.org,mtrofin@google.com,mtrofin@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true Review URL: https://codereview.chromium.org/1403163003 Cr-Commit-Position: refs/heads/master@{#31300} |
||
---|---|---|
.. | ||
base | ||
compiler | ||
heap | ||
interpreter | ||
libplatform | ||
runtime | ||
atomic-utils-unittest.cc | ||
char-predicates-unittest.cc | ||
counters-unittest.cc | ||
DEPS | ||
run-all-unittests.cc | ||
test-utils.cc | ||
test-utils.h | ||
unittests.gyp | ||
unittests.isolate | ||
unittests.status |