• 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
..
baseline Loading commit data...
DEPS Loading commit data...
OWNERS Loading commit data...
c-api.cc Loading commit data...
c-api.h Loading commit data...
compilation-environment.h Loading commit data...
decoder.h Loading commit data...
function-body-decoder-impl.h Loading commit data...
function-body-decoder.cc Loading commit data...
function-body-decoder.h Loading commit data...
function-compiler.cc Loading commit data...
function-compiler.h Loading commit data...
graph-builder-interface.cc Loading commit data...
graph-builder-interface.h Loading commit data...
jump-table-assembler.cc Loading commit data...
jump-table-assembler.h Loading commit data...
leb-helper.h Loading commit data...
local-decl-encoder.cc Loading commit data...
local-decl-encoder.h Loading commit data...
memory-tracing.cc Loading commit data...
memory-tracing.h Loading commit data...
module-compiler.cc Loading commit data...
module-compiler.h Loading commit data...
module-decoder.cc Loading commit data...
module-decoder.h Loading commit data...
module-instantiate.cc Loading commit data...
module-instantiate.h Loading commit data...
object-access.h Loading commit data...
signature-map.cc Loading commit data...
signature-map.h Loading commit data...
streaming-decoder.cc Loading commit data...
streaming-decoder.h Loading commit data...
struct-types.h Loading commit data...
sync-streaming-decoder.cc Loading commit data...
value-type.h Loading commit data...
wasm-arguments.h Loading commit data...
wasm-code-manager.cc Loading commit data...
wasm-code-manager.h Loading commit data...
wasm-constants.h Loading commit data...
wasm-debug-evaluate.cc Loading commit data...
wasm-debug-evaluate.h Loading commit data...
wasm-debug.cc Loading commit data...
wasm-debug.h Loading commit data...
wasm-engine.cc Loading commit data...
wasm-engine.h Loading commit data...
wasm-external-refs.cc Loading commit data...
wasm-external-refs.h Loading commit data...
wasm-feature-flags.h Loading commit data...
wasm-features.cc Loading commit data...
wasm-features.h Loading commit data...
wasm-import-wrapper-cache.cc Loading commit data...
wasm-import-wrapper-cache.h Loading commit data...
wasm-js.cc Loading commit data...
wasm-js.h Loading commit data...
wasm-limits.h Loading commit data...
wasm-linkage.h Loading commit data...
wasm-module-builder.cc Loading commit data...
wasm-module-builder.h Loading commit data...
wasm-module-sourcemap.cc Loading commit data...
wasm-module-sourcemap.h Loading commit data...
wasm-module.cc Loading commit data...
wasm-module.h Loading commit data...
wasm-objects-inl.h Loading commit data...
wasm-objects.cc Loading commit data...
wasm-objects.h Loading commit data...
wasm-objects.tq Loading commit data...
wasm-opcodes-inl.h Loading commit data...
wasm-opcodes.cc Loading commit data...
wasm-opcodes.h Loading commit data...
wasm-result.cc Loading commit data...
wasm-result.h Loading commit data...
wasm-serialization.cc Loading commit data...
wasm-serialization.h Loading commit data...
wasm-subtyping.cc Loading commit data...
wasm-subtyping.h Loading commit data...
wasm-tier.h Loading commit data...
wasm-value.h Loading commit data...