• 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
build_overrides Loading commit data...
custom_deps Loading commit data...
docs Loading commit data...
gni Loading commit data...
include Loading commit data...
infra Loading commit data...
samples Loading commit data...
src Loading commit data...
test Loading commit data...
testing Loading commit data...
third_party Loading commit data...
tools Loading commit data...
.clang-format Loading commit data...
.clang-tidy Loading commit data...
.editorconfig Loading commit data...
.flake8 Loading commit data...
.git-blame-ignore-revs Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.gn Loading commit data...
.vpython Loading commit data...
.ycm_extra_conf.py Loading commit data...
AUTHORS Loading commit data...
BUILD.gn Loading commit data...
CODE_OF_CONDUCT.md Loading commit data...
COMMON_OWNERS Loading commit data...
DEPS Loading commit data...
ENG_REVIEW_OWNERS Loading commit data...
INFRA_OWNERS Loading commit data...
INTL_OWNERS Loading commit data...
LICENSE Loading commit data...
LICENSE.fdlibm Loading commit data...
LICENSE.strongtalk Loading commit data...
LICENSE.v8 Loading commit data...
LICENSE.valgrind Loading commit data...
MIPS_OWNERS Loading commit data...
OWNERS Loading commit data...
PPC_OWNERS Loading commit data...
PRESUBMIT.py Loading commit data...
README.md Loading commit data...
S390_OWNERS Loading commit data...
WATCHLISTS Loading commit data...
codereview.settings Loading commit data...