• Manos Koukoutos's avatar
    [wasm][refactor] Rework immediate-argument abstractions · 55ddbaa0
    Manos Koukoutos authored
    Motivation:
    The immediate-argument classes defined in function-body-decoder.h were
    often adding an offset to the provided pc. This was inconsistent,
    bug-prone, and counterintuitive. This CL imposes that all immediates
    are passed as pc the start of the immediate argument they are parsing.
    Some other smaller inconsistencies are fixed as well.
    
    Changes:
    
    src/wasm/:
    - Enforce that all Immediates are passed the pc at the start of the
      argument they are parsing. Adapt all call sites.
    - Remove unneeded offset arguments from two SIMD related immediates.
    - Add a pc argument to all Validate functions for immediates instead
      of using the Decoder's current pc.
    - Remove the (unused) pc argument from all Complete functions for
      immediates.
    - Introduce Validate() for BranchOnExceptionImmediate.
    - In WasmDecoder::Decode(), make sure len is updated before breaking out
      of the loop in case of a Validate() failure.
    - Change the default prefix_len of DecodeLoadMem/DecodeStoreMem to 1.
    
    wasm-interpreter.cc:
    - Change the default prefix_len of ExecuteLoad/Store to 1.
    - Adapt offsets in calls to Immediates.
    - Remove redundant opcode_length argument from ExecuteSimdOp, use len
      in its place.
    
    function-body-decoder-unittest.cc
    - Adapt offsets in calls to Immediates.
    - Introduce and use EXPECT_OK, as is done in other tests.
    
    Change-Id: I534606c0e238af309804d4a7c8cec75b1e49c6ad
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2267381
    Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#68559}
    55ddbaa0
function-body-decoder.cc 10.2 KB