• Thibaud Michaud's avatar
    [wasm][liftoff] Fix spill offsets in merge regions · a4252db3
    Thibaud Michaud authored
    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: 's avatarClemens Backes <clemensb@chromium.org>
    Cr-Commit-Position: refs/heads/main@{#77556}
    a4252db3
liftoff-assembler.cc 50.8 KB