[regalloc] Fix slow edge case in BuildBundles
The issue is with this pattern, assuming disjoint uses for all vregs: phi: v1 = v0 ... phi: v2 = v0 ... phi: v3 = v0 ... ... phi: vN = v0 ... For every phi, BuildBundles proceeds as follows: - Create a new bundle for the output - Merge the input bundle into the output bundle Since the bundle gets bigger at every iteration, the merges become more and more expensive and consume Zone memory that is immediately thrown away at the next iteration. A simple fix is to check the size of the bundles before merging and always copy the smallest one into the biggest. In the pattern above this should always copy the single-range output bundle into the large input bundle. R=sigurds@chromium.org Bug: v8:11237 Change-Id: I6ad9152035da698d94b02b5b41802545ba149307 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2584879Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Cr-Commit-Position: refs/heads/master@{#71714}
Showing
Please
register
or
sign in
to comment