• 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
Name
Last commit
Last update
..
benchmarks Loading commit data...
cctest Loading commit data...
common Loading commit data...
debugger Loading commit data...
debugging Loading commit data...
fuzzer Loading commit data...
fuzzilli Loading commit data...
inspector Loading commit data...
intl Loading commit data...
js-perf-test Loading commit data...
memory Loading commit data...
message Loading commit data...
mjsunit Loading commit data...
mkgrokdump Loading commit data...
mozilla Loading commit data...
test262 Loading commit data...
torque Loading commit data...
unittests Loading commit data...
wasm-api-tests Loading commit data...
wasm-js Loading commit data...
wasm-spec-tests Loading commit data...
webkit Loading commit data...
BUILD.gn Loading commit data...
OWNERS Loading commit data...