• bmeurer's avatar
    Revert of [turbofan] Splinter into one range. (patchset #2 id:80001 of... · 23a8837f
    bmeurer authored
    Revert of [turbofan] Splinter into one range. (patchset #2 id:80001 of https://codereview.chromium.org/1391023007/ )
    
    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}
    23a8837f
register-allocator.cc 114 KB