• 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
..
api Loading commit data...
asmjs Loading commit data...
assembler Loading commit data...
base Loading commit data...
codegen Loading commit data...
compiler Loading commit data...
compiler-dispatcher Loading commit data...
date Loading commit data...
diagnostics Loading commit data...
execution Loading commit data...
heap Loading commit data...
interpreter Loading commit data...
libplatform Loading commit data...
logging Loading commit data...
numbers Loading commit data...
objects Loading commit data...
parser Loading commit data...
profiler Loading commit data...
regress Loading commit data...
strings Loading commit data...
tasks Loading commit data...
torque Loading commit data...
utils Loading commit data...
wasm Loading commit data...
zone Loading commit data...
BUILD.gn Loading commit data...
DEPS Loading commit data...
run-all-unittests.cc Loading commit data...
test-helpers.cc Loading commit data...
test-helpers.h Loading commit data...
test-utils.cc Loading commit data...
test-utils.h Loading commit data...
testcfg.py Loading commit data...
unittests.status Loading commit data...