• Manos Koukoutos's avatar
    Reland "[wasm] Refactor initializer expression handling" · 7981dc33
    Manos Koukoutos authored
    This is a reland of 071a1acf
    
    Changes compared to original:
    Expect SIMD test to fail if SIMD is not supported.
    
    Original change's description:
    > [wasm] Refactor initializer expression handling
    >
    > Design doc: https://bit.ly/3xPxWUe
    >
    > This CL introduces two main changes:
    > - Initializer expressions are now decoded by WasmFullDecoder. With
    >   wasm-gc, initializer expressions are no longer just constants, and
    >   require complex decoding (including stack tracking). This resulted in
    >   extensive code duplication.
    > - Initializer expressions are not stored explicitly by module-decoder as
    >   an AST (WasmInitExpr), but rather as a WireBytesRef, and are decoded
    >   again during module instantiation. This should reduce memory
    >   consumption for globals and other module elements with initializer
    >   expressions (which has been observed in the 40MB range in some
    >   real-world benchmarks.
    >
    > Summary of changes:
    > - Add a static parameter {kFunctionBody, kInitExpression} to the
    >   WasmDecoder. Use it to specialize validation to function bodies/init.
    >   expressions.
    > - Introduce a new Interface for the WasmFullDecoder for init.
    >   expressions.
    > - Differentiate between constant and non-constant opcodes in
    >   WasmFullDecoder.
    > - Change representation of init. expressions in WasmModule to
    >   WireBytesRef.
    > - Reimplement EvaluateInitExpression in module-instantiate to re-decode
    >   initializer expressions.
    > - Remove some now-invalid module decoder tests.
    >
    > Pending changes:
    > - Also refactor initializer expressions for element segment entries.
    > - Reintroduce deleted tests.
    >
    > Bug: v8:11895
    > Change-Id: I76512bfe1386c8338667d30fa6db93880a1e4b42
    > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2972910
    > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
    > Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#75476}
    
    Bug: v8:11895
    Change-Id: I2dface5ff28d5a2d439a65d3e5cb83135c061bb9
    Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2997722
    Commit-Queue: Manos Koukoutos <manoskouk@chromium.org>
    Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
    Cr-Commit-Position: refs/heads/master@{#75492}
    7981dc33
function-body-decoder-impl.h 201 KB