[wasm][liftoff] Fix spill offsets in merge regions
Recompute the spill offsets for values in the merge region, instead of reusing the offsets of the source. This ensures that spill slots stay contiguous (modulo alignment). This also solves a correctness issue where the spill offsets in the merge region could move up, thereby overwriting the source of another move. With this change, the spill offsets always move down (to fill the gap) or stay the same, such that processing them from bottom to top can only overwrite sources of already-processed moves. Since we do not reuse the current state's offsets, this might generate extra stack moves and regress generated code performance a bit. Drive-by: print spill offsets in the Liftoff trace R=clemensb@chromium.org Bug: v8:12270 Change-Id: I8d20df8fc1e80dd36b6f651de457686e9935a628 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3245115 Commit-Queue: Thibaud Michaud <thibaudm@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Cr-Commit-Position: refs/heads/main@{#77556}
Showing
Please
register
or
sign in
to comment