Files
Clemens Backes ed75381f7f Reland "[wasm] Turn WebAssembly constructors into CPP builtins"
This is a reland of commit eadf266117.
The test that caused the revert was buggy before and is now skipped:
https://crrev.com/c/8649799

Original change's description:
> [wasm] Turn WebAssembly constructors into CPP builtins
>
> Previously, WebAssembly constructors (Module, Instance, Table, Memory,
> Global, Tag, Exception, Suspending) used API FunctionTemplates with a
> dummy instance template, allocating a throwaway JSObject and later
> migrating its map via TransferPrototype onto the freshly allocated Wasm
> object. This failed if the subclass prototype or instance had been made
> non-extensible during super() argument evaluation.
>
> Instead, implement all WebAssembly constructors as CPP builtins and
> allocate the Wasm object directly using JSFunction::GetDerivedMap. This
> matches how other complex constructors in V8 are implemented (such as
> ArrayBuffer, DataView, DisposableStack, and the Intl constructors).
>
> TAG=agy
> R=jkummerow@chromium.org
>
> Bug: 572830550
> Change-Id: If33ce8688317dffdbabf9fd30bd6827cd0bc31f3
> Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8585478
> Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
> Auto-Submit: Clemens Backes <clemensb@chromium.org>
> Commit-Queue: Clemens Backes <clemensb@chromium.org>
> Commit-Queue: Eric Leese <leese@chromium.org>
> Reviewed-by: Eric Leese <leese@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#111108}

Bug: 572830550
Change-Id: I74908fe0cabe1cef6d071f471d82abda0d3bd909
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/8656918
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Eric Leese <leese@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/main@{#111210}
2026-10-27 05:30:33 -07:00
..
…
…
…
2026-02-06 08:34:23 -08:00

JavaScript tests with expected output

Tests in test/message pass if the output matches the expected output. Message tests are particularly useful when checking for exact error messages.

Tests and their expected output must have the same filename, with the .js and .out extension.

foo.js
foo.out

You can use a regex in the expected output instead of the exact path:

*%(basename)s:7: SyntaxError: Detected cycle while resolving name 'a'

Empty lines are ignored in the comparison, but whitespaces are not.

Exact details of the test runner are in testcfg.py.