Unreviewed, rolling out r247440.
Broke builds
Reverted changeset:
"[JSC] Improve wasm wpt test results by fixing miscellaneous
issues"
https://bugs.webkit.org/show_bug.cgi?id=199783
https://trac.webkit.org/changeset/247440
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@247445 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/JSTests/ChangeLog b/JSTests/ChangeLog
index 232ab44..f2c0f63 100644
--- a/JSTests/ChangeLog
+++ b/JSTests/ChangeLog
@@ -1,3 +1,16 @@
+2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
+
+ Unreviewed, rolling out r247440.
+
+ Broke builds
+
+ Reverted changeset:
+
+ "[JSC] Improve wasm wpt test results by fixing miscellaneous
+ issues"
+ https://bugs.webkit.org/show_bug.cgi?id=199783
+ https://trac.webkit.org/changeset/247440
+
2019-07-15 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Improve wasm wpt test results by fixing miscellaneous issues
diff --git a/JSTests/wasm/js-api/Module-compile.js b/JSTests/wasm/js-api/Module-compile.js
index d5a8599..d723bf4 100644
--- a/JSTests/wasm/js-api/Module-compile.js
+++ b/JSTests/wasm/js-api/Module-compile.js
@@ -2,7 +2,7 @@
import Builder from '../Builder.js';
assert.isFunction(WebAssembly.compile);
-assert.truthy(WebAssembly.hasOwnProperty('compile'));
+assert.isFunction(WebAssembly.__proto__.compile);
assert.eq(WebAssembly.compile.length, 1);
async function testPromiseAPI() {
diff --git a/JSTests/wasm/js-api/test_basic_api.js b/JSTests/wasm/js-api/test_basic_api.js
index 5e37210..2158743 100644
--- a/JSTests/wasm/js-api/test_basic_api.js
+++ b/JSTests/wasm/js-api/test_basic_api.js
@@ -78,7 +78,7 @@
for (const invalid of invalidInstanceImports)
assert.throws(() => new WebAssembly[c](new WebAssembly.Module(emptyModuleArray), invalid), TypeError, `second argument to WebAssembly.Instance must be undefined or an Object (evaluating 'new WebAssembly[c](new WebAssembly.Module(emptyModuleArray), invalid)')`);
assert.isNotUndef(instance.exports);
- checkAccessorOwnPropertyDescriptor(WebAssembly.Instance.prototype, "exports", { configurable: true, enumerable: true });
+ checkAccessorOwnPropertyDescriptor(WebAssembly.Instance.prototype, "exports", { configurable: true, enumerable: false });
assert.throws(() => WebAssembly.Instance.prototype.exports = undefined, TypeError, `Attempted to assign to readonly property.`);
assert.throws(() => WebAssembly.Instance.prototype.exports, TypeError, `expected |this| value to be an instance of WebAssembly.Instance`);
assert.isUndef(instance.exports.__proto__);
diff --git a/JSTests/wasm/js-api/validate.js b/JSTests/wasm/js-api/validate.js
index d5d9e99..4fe83c2 100644
--- a/JSTests/wasm/js-api/validate.js
+++ b/JSTests/wasm/js-api/validate.js
@@ -2,7 +2,7 @@
import Builder from '../Builder.js';
assert.isFunction(WebAssembly.validate);
-assert.truthy(WebAssembly.hasOwnProperty('validate'));
+assert.isFunction(WebAssembly.__proto__.validate);
assert.eq(WebAssembly.validate.length, 1);
{
diff --git a/JSTests/wasm/js-api/web-assembly-instantiate.js b/JSTests/wasm/js-api/web-assembly-instantiate.js
index 1b6b714..f606725 100644
--- a/JSTests/wasm/js-api/web-assembly-instantiate.js
+++ b/JSTests/wasm/js-api/web-assembly-instantiate.js
@@ -2,7 +2,7 @@
import Builder from '../Builder.js';
assert.isFunction(WebAssembly.instantiate);
-assert.truthy(WebAssembly.hasOwnProperty('instantiate'));
+assert.isFunction(WebAssembly.__proto__.instantiate);
assert.eq(WebAssembly.instantiate.length, 1);
{
diff --git a/JSTests/wasm/spec-tests/jsapi.js b/JSTests/wasm/spec-tests/jsapi.js
index 2969f07..8e5d228 100644
--- a/JSTests/wasm/spec-tests/jsapi.js
+++ b/JSTests/wasm/spec-tests/jsapi.js
@@ -230,7 +230,7 @@
const moduleImportsDesc = Object.getOwnPropertyDescriptor(Module, 'imports');
assert_equals(typeof moduleImportsDesc.value, "function");
assert_equals(moduleImportsDesc.writable, true);
- assert_equals(moduleImportsDesc.enumerable, true);
+ assert_equals(moduleImportsDesc.enumerable, false);
assert_equals(moduleImportsDesc.configurable, true);
}, "'WebAssembly.Module.imports' data property");
@@ -265,7 +265,7 @@
const moduleExportsDesc = Object.getOwnPropertyDescriptor(Module, 'exports');
assert_equals(typeof moduleExportsDesc.value, "function");
assert_equals(moduleExportsDesc.writable, true);
- assert_equals(moduleExportsDesc.enumerable, true);
+ assert_equals(moduleExportsDesc.enumerable, false);
assert_equals(moduleExportsDesc.configurable, true);
}, "'WebAssembly.Module.exports' data property");
@@ -296,7 +296,7 @@
const customSectionsDesc = Object.getOwnPropertyDescriptor(Module, 'customSections');
assert_equals(typeof customSectionsDesc.value, "function");
assert_equals(customSectionsDesc.writable, true);
- assert_equals(customSectionsDesc.enumerable, true);
+ assert_equals(customSectionsDesc.enumerable, false);
assert_equals(customSectionsDesc.configurable, true);
}, "'WebAssembly.Module.customSections' data property");
@@ -307,7 +307,7 @@
assertThrows(() => moduleCustomSections(), TypeError);
assertThrows(() => moduleCustomSections(undefined), TypeError);
assertThrows(() => moduleCustomSections({}), TypeError);
- var arr = moduleCustomSections(emptyModule, undefined);
+ var arr = moduleCustomSections(emptyModule);
assert_equals(arr instanceof Array, true);
assert_equals(arr.length, 0);
}, "'WebAssembly.Module.customSections' method");
@@ -367,7 +367,7 @@
const exportsDesc = Object.getOwnPropertyDescriptor(instanceProto, 'exports');
assert_equals(typeof exportsDesc.get, "function");
assert_equals(exportsDesc.set, undefined);
- assert_equals(exportsDesc.enumerable, true);
+ assert_equals(exportsDesc.enumerable, false);
assert_equals(exportsDesc.configurable, true);
const exportsGetter = exportsDesc.get;
assertThrows(() => exportsGetter.call(), TypeError);
@@ -415,11 +415,11 @@
assertThrows(() => Memory(), TypeError);
assertThrows(() => new Memory(1), TypeError);
assertThrows(() => new Memory({initial:{valueOf() { throw new Error("here")}}}), Error);
- assertThrows(() => new Memory({initial:-1}), TypeError);
- assertThrows(() => new Memory({initial:Math.pow(2,32)}), TypeError);
+ assertThrows(() => new Memory({initial:-1}), RangeError);
+ assertThrows(() => new Memory({initial:Math.pow(2,32)}), RangeError);
assertThrows(() => new Memory({initial:1, maximum: Math.pow(2,32)/Math.pow(2,14) }), RangeError);
assertThrows(() => new Memory({initial:2, maximum:1 }), RangeError);
- assertThrows(() => new Memory({maximum: -1 }), TypeError);
+ assertThrows(() => new Memory({maximum: -1 }), RangeError);
assert_equals(new Memory({initial:1}) instanceof Memory, true);
assert_equals(new Memory({initial:1.5}).buffer.byteLength, WasmPage);
}, "'WebAssembly.Memory' constructor function");
@@ -451,7 +451,7 @@
const bufferDesc = Object.getOwnPropertyDescriptor(memoryProto, 'buffer');
assert_equals(typeof bufferDesc.get, "function");
assert_equals(bufferDesc.set, undefined);
- assert_equals(bufferDesc.enumerable, true);
+ assert_equals(bufferDesc.enumerable, false);
assert_equals(bufferDesc.configurable, true);
}, "'WebAssembly.Memory.prototype.buffer' accessor property");
@@ -467,7 +467,7 @@
test(() => {
const memGrowDesc = Object.getOwnPropertyDescriptor(memoryProto, 'grow');
assert_equals(typeof memGrowDesc.value, "function");
- assert_equals(memGrowDesc.enumerable, true);
+ assert_equals(memGrowDesc.enumerable, false);
assert_equals(memGrowDesc.configurable, true);
}, "'WebAssembly.Memory.prototype.grow' data property");
@@ -477,8 +477,8 @@
assert_equals(memGrow.length, 1);
assertThrows(() => memGrow.call(), TypeError);
assertThrows(() => memGrow.call({}), TypeError);
- assertThrows(() => memGrow.call(mem1, -1), TypeError);
- assertThrows(() => memGrow.call(mem1, Math.pow(2,32)), TypeError);
+ assertThrows(() => memGrow.call(mem1, -1), RangeError);
+ assertThrows(() => memGrow.call(mem1, Math.pow(2,32)), RangeError);
var mem = new Memory({initial:1, maximum:2});
var buf = mem.buffer;
assert_equals(buf.byteLength, WasmPage);
@@ -516,10 +516,10 @@
assertThrows(() => new Table({initial:1, element:"any"}), TypeError);
assertThrows(() => new Table({initial:1, element:{valueOf() { return "funcref" }}}), TypeError);
assertThrows(() => new Table({initial:{valueOf() { throw new Error("here")}}, element:"funcref"}), Error);
- assertThrows(() => new Table({initial:-1, element:"funcref"}), TypeError);
- assertThrows(() => new Table({initial:Math.pow(2,32), element:"funcref"}), TypeError);
+ assertThrows(() => new Table({initial:-1, element:"funcref"}), RangeError);
+ assertThrows(() => new Table({initial:Math.pow(2,32), element:"funcref"}), RangeError);
assertThrows(() => new Table({initial:2, maximum:1, element:"funcref"}), RangeError);
- assertThrows(() => new Table({initial:2, maximum:Math.pow(2,32), element:"funcref"}), TypeError);
+ assertThrows(() => new Table({initial:2, maximum:Math.pow(2,32), element:"funcref"}), RangeError);
assert_equals(new Table({initial:1, element:"funcref"}) instanceof Table, true);
assert_equals(new Table({initial:1.5, element:"funcref"}) instanceof Table, true);
assert_equals(new Table({initial:1, maximum:1.5, element:"funcref"}) instanceof Table, true);
@@ -553,7 +553,7 @@
const lengthDesc = Object.getOwnPropertyDescriptor(tableProto, 'length');
assert_equals(typeof lengthDesc.get, "function");
assert_equals(lengthDesc.set, undefined);
- assert_equals(lengthDesc.enumerable, true);
+ assert_equals(lengthDesc.enumerable, false);
assert_equals(lengthDesc.configurable, true);
}, "'WebAssembly.Table.prototype.length' accessor data property");
@@ -570,7 +570,7 @@
test(() => {
const getDesc = Object.getOwnPropertyDescriptor(tableProto, 'get');
assert_equals(typeof getDesc.value, "function");
- assert_equals(getDesc.enumerable, true);
+ assert_equals(getDesc.enumerable, false);
assert_equals(getDesc.configurable, true);
}, "'WebAssembly.Table.prototype.get' data property");
@@ -585,15 +585,15 @@
assert_equals(get.call(tbl1, 1.5), null);
assertThrows(() => get.call(tbl1, 2), RangeError);
assertThrows(() => get.call(tbl1, 2.5), RangeError);
- assertThrows(() => get.call(tbl1, -1), TypeError);
- assertThrows(() => get.call(tbl1, Math.pow(2,33)), TypeError);
+ assertThrows(() => get.call(tbl1, -1), RangeError);
+ assertThrows(() => get.call(tbl1, Math.pow(2,33)), RangeError);
assertThrows(() => get.call(tbl1, {valueOf() { throw new Error("hi") }}), Error);
}, "'WebAssembly.Table.prototype.get' method");
test(() => {
const setDesc = Object.getOwnPropertyDescriptor(tableProto, 'set');
assert_equals(typeof setDesc.value, "function");
- assert_equals(setDesc.enumerable, true);
+ assert_equals(setDesc.enumerable, false);
assert_equals(setDesc.configurable, true);
}, "'WebAssembly.Table.prototype.set' data property");
@@ -605,8 +605,8 @@
assertThrows(() => set.call({}), TypeError);
assertThrows(() => set.call(tbl1, 0), TypeError);
assertThrows(() => set.call(tbl1, 2, null), RangeError);
- assertThrows(() => set.call(tbl1, -1, null), TypeError);
- assertThrows(() => set.call(tbl1, Math.pow(2,33), null), TypeError);
+ assertThrows(() => set.call(tbl1, -1, null), RangeError);
+ assertThrows(() => set.call(tbl1, Math.pow(2,33), null), RangeError);
assertThrows(() => set.call(tbl1, 0, undefined), TypeError);
assertThrows(() => set.call(tbl1, 0, {}), TypeError);
assertThrows(() => set.call(tbl1, 0, function() {}), TypeError);
@@ -619,7 +619,7 @@
test(() => {
const tblGrowDesc = Object.getOwnPropertyDescriptor(tableProto, 'grow');
assert_equals(typeof tblGrowDesc.value, "function");
- assert_equals(tblGrowDesc.enumerable, true);
+ assert_equals(tblGrowDesc.enumerable, false);
assert_equals(tblGrowDesc.configurable, true);
}, "'WebAssembly.Table.prototype.grow' data property");
@@ -629,8 +629,8 @@
assert_equals(tblGrow.length, 1);
assertThrows(() => tblGrow.call(), TypeError);
assertThrows(() => tblGrow.call({}), TypeError);
- assertThrows(() => tblGrow.call(tbl1, -1), TypeError);
- assertThrows(() => tblGrow.call(tbl1, Math.pow(2,32)), TypeError);
+ assertThrows(() => tblGrow.call(tbl1, -1), RangeError);
+ assertThrows(() => tblGrow.call(tbl1, Math.pow(2,32)), RangeError);
var tbl = new Table({element:"funcref", initial:1, maximum:2});
assert_equals(tbl.length, 1);
assert_equals(tbl.grow(0), 1);
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index ad265ff..f359d31 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,16 @@
+2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
+
+ Unreviewed, rolling out r247440.
+
+ Broke builds
+
+ Reverted changeset:
+
+ "[JSC] Improve wasm wpt test results by fixing miscellaneous
+ issues"
+ https://bugs.webkit.org/show_bug.cgi?id=199783
+ https://trac.webkit.org/changeset/247440
+
2019-07-15 Daniel Bates <dabates@apple.com>
Typing into a cell in a Google Sheet lags behind by one character
diff --git a/LayoutTests/imported/w3c/ChangeLog b/LayoutTests/imported/w3c/ChangeLog
index c761911..d997e94 100644
--- a/LayoutTests/imported/w3c/ChangeLog
+++ b/LayoutTests/imported/w3c/ChangeLog
@@ -1,3 +1,16 @@
+2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
+
+ Unreviewed, rolling out r247440.
+
+ Broke builds
+
+ Reverted changeset:
+
+ "[JSC] Improve wasm wpt test results by fixing miscellaneous
+ issues"
+ https://bugs.webkit.org/show_bug.cgi?id=199783
+ https://trac.webkit.org/changeset/247440
+
2019-07-15 Rob Buis <rbuis@igalia.com>
MathML WPT test for RadicalDegreeBottomRaisePercent fails
diff --git a/LayoutTests/imported/w3c/resources/import-expectations.json b/LayoutTests/imported/w3c/resources/import-expectations.json
index c426228..7957f50 100644
--- a/LayoutTests/imported/w3c/resources/import-expectations.json
+++ b/LayoutTests/imported/w3c/resources/import-expectations.json
@@ -343,7 +343,6 @@
"web-platform-tests/visual-viewport": "import",
"web-platform-tests/wai-aria": "skip",
"web-platform-tests/wasm": "skip",
- "web-platform-tests/wasm/jsapi": "import",
"web-platform-tests/web-animations": "skip",
"web-platform-tests/web-nfc": "skip",
"web-platform-tests/webaudio": "import",
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/assertions.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/assertions.js
deleted file mode 100644
index 151a406..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/assertions.js
+++ /dev/null
@@ -1,17 +0,0 @@
-function assert_function_name(fn, name, description) {
- const propdesc = Object.getOwnPropertyDescriptor(fn, "name");
- assert_equals(typeof propdesc, "object", `${description} should have name property`);
- assert_false(propdesc.writable, "writable", `${description} name should not be writable`);
- assert_false(propdesc.enumerable, "enumerable", `${description} name should not be enumerable`);
- assert_true(propdesc.configurable, "configurable", `${description} name should be configurable`);
- assert_equals(propdesc.value, name, `${description} name should be ${name}`);
-}
-
-function assert_function_length(fn, length, description) {
- const propdesc = Object.getOwnPropertyDescriptor(fn, "length");
- assert_equals(typeof propdesc, "object", `${description} should have length property`);
- assert_false(propdesc.writable, "writable", `${description} length should not be writable`);
- assert_false(propdesc.enumerable, "enumerable", `${description} length should not be enumerable`);
- assert_true(propdesc.configurable, "configurable", `${description} length should be configurable`);
- assert_equals(propdesc.value, length, `${description} length should be ${length}`);
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/bad-imports.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/bad-imports.js
deleted file mode 100644
index f076baa..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/bad-imports.js
+++ /dev/null
@@ -1,140 +0,0 @@
-function test_bad_imports(t) {
- for (const value of [null, true, "", Symbol(), 1, 0.1, NaN]) {
- t(`Non-object imports argument: ${format_value(value)}`,
- new TypeError(),
- builder => {},
- value);
- }
-
- for (const value of [undefined, null, true, "", Symbol(), 1, 0.1, NaN]) {
- const imports = {
- "module": value,
- };
- t(`Non-object module: ${format_value(value)}`,
- new TypeError(),
- builder => {
- builder.addImport("module", "fn", kSig_v_v);
- },
- value);
- }
-
- t(`Missing imports argument`,
- new TypeError(),
- builder => {
- builder.addImport("module", "fn", kSig_v_v);
- });
-
- for (const [value, name] of [[undefined, "undefined"], [{}, "empty object"], [{ "module\0": null }, "wrong property"]]) {
- t(`Imports argument with missing property: ${name}`,
- new TypeError(),
- builder => {
- builder.addImport("module", "fn", kSig_v_v);
- },
- value);
- }
-
- t(`Importing an i64 global`,
- new WebAssembly.LinkError(),
- builder => {
- builder.addImportedGlobal("module", "global", kWasmI64);
- },
- {
- "module": {
- "global": 0,
- },
- });
-
- for (const value of [undefined, null, true, "", Symbol(), 1, 0.1, NaN, {}]) {
- t(`Importing a function with an incorrectly-typed value: ${format_value(value)}`,
- new WebAssembly.LinkError(),
- builder => {
- builder.addImport("module", "fn", kSig_v_v);
- },
- {
- "module": {
- "fn": value,
- },
- });
- }
-
- const nonGlobals = [
- [undefined],
- [null],
- [true],
- [""],
- [Symbol()],
- [{}, "plain object"],
- [WebAssembly.Global, "WebAssembly.Global"],
- [WebAssembly.Global.prototype, "WebAssembly.Global.prototype"],
- [Object.create(WebAssembly.Global.prototype), "Object.create(WebAssembly.Global.prototype)"],
- ];
-
- for (const [value, name = format_value(value)] of nonGlobals) {
- t(`Importing a global with an incorrectly-typed value: ${name}`,
- new WebAssembly.LinkError(),
- builder => {
- builder.addImportedGlobal("module", "global", kWasmI32);
- },
- {
- "module": {
- "global": value,
- },
- });
- }
-
- const nonMemories = [
- [undefined],
- [null],
- [true],
- [""],
- [Symbol()],
- [1],
- [0.1],
- [NaN],
- [{}, "plain object"],
- [WebAssembly.Memory, "WebAssembly.Memory"],
- [WebAssembly.Memory.prototype, "WebAssembly.Memory.prototype"],
- [Object.create(WebAssembly.Memory.prototype), "Object.create(WebAssembly.Memory.prototype)"],
- ];
-
- for (const [value, name = format_value(value)] of nonMemories) {
- t(`Importing memory with an incorrectly-typed value: ${name}`,
- new WebAssembly.LinkError(),
- builder => {
- builder.addImportedMemory("module", "memory", 0, 128);
- },
- {
- "module": {
- "memory": value,
- },
- });
- }
-
- const nonTables = [
- [undefined],
- [null],
- [true],
- [""],
- [Symbol()],
- [1],
- [0.1],
- [NaN],
- [{}, "plain object"],
- [WebAssembly.Table, "WebAssembly.Table"],
- [WebAssembly.Table.prototype, "WebAssembly.Table.prototype"],
- [Object.create(WebAssembly.Table.prototype), "Object.create(WebAssembly.Table.prototype)"],
- ];
-
- for (const [value, name = format_value(value)] of nonTables) {
- t(`Importing table with an incorrectly-typed value: ${name}`,
- new WebAssembly.LinkError(),
- builder => {
- builder.addImportedTable("module", "table", 0, 128);
- },
- {
- "module": {
- "table": value,
- },
- });
- }
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt
deleted file mode 100644
index 5d37480..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any-expected.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-CONSOLE MESSAGE: line 68: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-PASS WebAssembly.instantiate(module): Non-object imports argument: null
-PASS WebAssembly.instantiate(module): Non-object imports argument: true
-PASS WebAssembly.instantiate(module): Non-object imports argument: ""
-PASS WebAssembly.instantiate(module): Non-object imports argument: symbol "Symbol()"
-PASS WebAssembly.instantiate(module): Non-object imports argument: 1
-PASS WebAssembly.instantiate(module): Non-object imports argument: 0.1
-PASS WebAssembly.instantiate(module): Non-object imports argument: NaN
-PASS WebAssembly.instantiate(module): Non-object module: undefined
-PASS WebAssembly.instantiate(module): Non-object module: null
-PASS WebAssembly.instantiate(module): Non-object module: true
-PASS WebAssembly.instantiate(module): Non-object module: ""
-PASS WebAssembly.instantiate(module): Non-object module: symbol "Symbol()"
-PASS WebAssembly.instantiate(module): Non-object module: 1
-PASS WebAssembly.instantiate(module): Non-object module: 0.1
-PASS WebAssembly.instantiate(module): Non-object module: NaN
-PASS WebAssembly.instantiate(module): Missing imports argument
-PASS WebAssembly.instantiate(module): Imports argument with missing property: undefined
-PASS WebAssembly.instantiate(module): Imports argument with missing property: empty object
-PASS WebAssembly.instantiate(module): Imports argument with missing property: wrong property
-PASS WebAssembly.instantiate(module): Importing an i64 global
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: undefined
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: null
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: true
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: ""
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: symbol "Symbol()"
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 1
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 0.1
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: NaN
-PASS WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.js
deleted file mode 100644
index 8670029..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.js
+++ /dev/null
@@ -1,23 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-// META: script=/wasm/jsapi/bad-imports.js
-
-test_bad_imports((name, error, build, ...arguments) => {
- promise_test(t => {
- const builder = new WasmModuleBuilder();
- build(builder);
- const buffer = builder.toBuffer();
- const module = new WebAssembly.Module(buffer);
- return promise_rejects(t, error, WebAssembly.instantiate(module, ...arguments));
- }, `WebAssembly.instantiate(module): ${name}`);
-});
-
-test_bad_imports((name, error, build, ...arguments) => {
- promise_test(t => {
- const builder = new WasmModuleBuilder();
- build(builder);
- const buffer = builder.toBuffer();
- return promise_rejects(t, error, WebAssembly.instantiate(buffer, ...arguments));
- }, `WebAssembly.instantiate(buffer): ${name}`);
-});
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt
deleted file mode 100644
index 5ee9e4d..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker-expected.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-
-Harness Error (FAIL), message = Error in remote http://localhost:8800/wasm/jsapi/bad-imports.js: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-PASS WebAssembly.instantiate(module): Non-object imports argument: null
-PASS WebAssembly.instantiate(module): Non-object imports argument: true
-PASS WebAssembly.instantiate(module): Non-object imports argument: ""
-PASS WebAssembly.instantiate(module): Non-object imports argument: symbol "Symbol()"
-PASS WebAssembly.instantiate(module): Non-object imports argument: 1
-PASS WebAssembly.instantiate(module): Non-object imports argument: 0.1
-PASS WebAssembly.instantiate(module): Non-object imports argument: NaN
-PASS WebAssembly.instantiate(module): Non-object module: undefined
-PASS WebAssembly.instantiate(module): Non-object module: null
-PASS WebAssembly.instantiate(module): Non-object module: true
-PASS WebAssembly.instantiate(module): Non-object module: ""
-PASS WebAssembly.instantiate(module): Non-object module: symbol "Symbol()"
-PASS WebAssembly.instantiate(module): Non-object module: 1
-PASS WebAssembly.instantiate(module): Non-object module: 0.1
-PASS WebAssembly.instantiate(module): Non-object module: NaN
-PASS WebAssembly.instantiate(module): Missing imports argument
-PASS WebAssembly.instantiate(module): Imports argument with missing property: undefined
-TIMEOUT WebAssembly.instantiate(module): Imports argument with missing property: empty object Test timed out
-NOTRUN WebAssembly.instantiate(module): Imports argument with missing property: wrong property
-NOTRUN WebAssembly.instantiate(module): Importing an i64 global
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: undefined
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: null
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: true
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: ""
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: symbol "Symbol()"
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 1
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: 0.1
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: NaN
-NOTRUN WebAssembly.instantiate(module): Importing a function with an incorrectly-typed value: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/w3c-import.log
deleted file mode 100644
index 7197fd2..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/w3c-import.log
+++ /dev/null
@@ -1,17 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/constructor/instantiate-bad-imports.any.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt
deleted file mode 100644
index ae4d28b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any-expected.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-
-FAIL name undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(fn, "name")')
-FAIL length undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(fn, "length")')
-PASS No arguments
-PASS Calling
-FAIL Order of evaluation undefined is not a constructor (evaluating 'new WebAssembly.Global')
-PASS Invalid descriptor argument
-PASS Invalid type argument
-FAIL i64 with default undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Default value for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Explicit value undefined for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value null for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value true for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value false for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value 2 for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value "3" for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with toString for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with valueOf for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Default value for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Explicit value undefined for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value null for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value true for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value false for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value 2 for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value "3" for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with toString for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with valueOf for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Default value for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Explicit value undefined for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value null for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value true for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value false for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value 2 for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value "3" for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with toString for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with valueOf for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.js
deleted file mode 100644
index 7a45cc4..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.js
+++ /dev/null
@@ -1,121 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/assertions.js
-
-function assert_Global(actual, expected) {
- assert_equals(Object.getPrototypeOf(actual), WebAssembly.Global.prototype,
- "prototype");
- assert_true(Object.isExtensible(actual), "extensible");
-
- assert_equals(actual.value, expected, "value");
- assert_equals(actual.valueOf(), expected, "valueOf");
-}
-
-test(() => {
- assert_function_name(WebAssembly.Global, "Global", "WebAssembly.Global");
-}, "name");
-
-test(() => {
- assert_function_length(WebAssembly.Global, 1, "WebAssembly.Global");
-}, "length");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Global());
-}, "No arguments");
-
-test(() => {
- const argument = { "value": "i32" };
- assert_throws(new TypeError(), () => WebAssembly.Global(argument));
-}, "Calling");
-
-test(() => {
- const order = [];
-
- new WebAssembly.Global({
- get value() {
- order.push("descriptor value");
- return {
- toString() {
- order.push("descriptor value toString");
- return "f64";
- },
- };
- },
-
- get mutable() {
- order.push("descriptor mutable");
- return false;
- },
- }, {
- valueOf() {
- order.push("value valueOf()");
- }
- });
-
- assert_array_equals(order, [
- "descriptor mutable",
- "descriptor value",
- "descriptor value toString",
- "value valueOf()",
- ]);
-}, "Order of evaluation");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- false,
- true,
- "",
- "test",
- Symbol(),
- 1,
- NaN,
- {},
- ];
- for (const invalidArgument of invalidArguments) {
- assert_throws(new TypeError(),
- () => new WebAssembly.Global(invalidArgument),
- `new Global(${format_value(invalidArgument)})`);
- }
-}, "Invalid descriptor argument");
-
-test(() => {
- const invalidTypes = ["i16", "i128", "f16", "f128", "u32", "u64", "i32\0"];
- for (const value of invalidTypes) {
- const argument = { value };
- assert_throws(new TypeError(), () => new WebAssembly.Global(argument));
- }
-}, "Invalid type argument");
-
-test(() => {
- const argument = { "value": "i64" };
- const global = new WebAssembly.Global(argument);
- assert_throws(new TypeError(), () => global.value);
- assert_throws(new TypeError(), () => global.valueOf());
-}, "i64 with default");
-
-for (const type of ["i32", "f32", "f64"]) {
- test(() => {
- const argument = { "value": type };
- const global = new WebAssembly.Global(argument);
- assert_Global(global, 0);
- }, `Default value for type ${type}`);
-
- const valueArguments = [
- [undefined, 0],
- [null, 0],
- [true, 1],
- [false, 0],
- [2, 2],
- ["3", 3],
- [{ toString() { return "5" } }, 5, "object with toString"],
- [{ valueOf() { return "8" } }, 8, "object with valueOf"],
- ];
- for (const [value, expected, name = format_value(value)] of valueArguments) {
- test(() => {
- const argument = { "value": type };
- const global = new WebAssembly.Global(argument, value);
- assert_Global(global, expected);
- }, `Explicit value ${name} for type ${type}`);
- }
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt
deleted file mode 100644
index ae4d28b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker-expected.txt
+++ /dev/null
@@ -1,37 +0,0 @@
-
-FAIL name undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(fn, "name")')
-FAIL length undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(fn, "length")')
-PASS No arguments
-PASS Calling
-FAIL Order of evaluation undefined is not a constructor (evaluating 'new WebAssembly.Global')
-PASS Invalid descriptor argument
-PASS Invalid type argument
-FAIL i64 with default undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Default value for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Explicit value undefined for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value null for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value true for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value false for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value 2 for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value "3" for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with toString for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with valueOf for type i32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Default value for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Explicit value undefined for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value null for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value true for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value false for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value 2 for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value "3" for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with toString for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with valueOf for type f32 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Default value for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Explicit value undefined for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value null for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value true for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value false for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value 2 for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value "3" for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with toString for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-FAIL Explicit value object with valueOf for type f64 undefined is not a constructor (evaluating 'new WebAssembly.Global(argument, value)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any-expected.txt
deleted file mode 100644
index 0e91a9b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-FAIL Object.prototype.toString on an Global undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.js
deleted file mode 100644
index ca02557..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const argument = { "value": "i32" };
- const global = new WebAssembly.Global(argument);
- assert_class_string(global, "WebAssembly.Global");
-}, "Object.prototype.toString on an Global");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt
deleted file mode 100644
index 0e91a9b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-FAIL Object.prototype.toString on an Global undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt
deleted file mode 100644
index c6d3c41..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-
-FAIL Branding undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-FAIL Immutable i32 (missing) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (undefined) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (null) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (false) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (empty string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (zero) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (true) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (one) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (true on prototype) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (missing) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (undefined) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (null) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (false) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (empty string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (zero) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (true) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (one) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (true on prototype) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (missing) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (undefined) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (null) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (false) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (empty string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (zero) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (true) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (one) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (true on prototype) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL i64 with default undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Calling setter without argument undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.js
deleted file mode 100644
index b4e6770f..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.js
+++ /dev/null
@@ -1,94 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Global,
- WebAssembly.Global.prototype,
- ];
-
- const desc = Object.getOwnPropertyDescriptor(WebAssembly.Global.prototype, "value");
- assert_equals(typeof desc, "object");
-
- const getter = desc.get;
- assert_equals(typeof getter, "function");
-
- const setter = desc.set;
- assert_equals(typeof setter, "function");
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => getter.call(thisValue), `getter with this=${format_value(thisValue)}`);
- assert_throws(new TypeError(), () => setter.call(thisValue, 1), `setter with this=${format_value(thisValue)}`);
- }
-}, "Branding");
-
-for (const type of ["i32", "f32", "f64"]) {
- const immutableOptions = [
- [{}, "missing"],
- [{ "mutable": undefined }, "undefined"],
- [{ "mutable": null }, "null"],
- [{ "mutable": false }, "false"],
- [{ "mutable": "" }, "empty string"],
- [{ "mutable": 0 }, "zero"],
- ];
- for (const [opts, name] of immutableOptions) {
- test(() => {
- opts.value = type;
- const global = new WebAssembly.Global(opts);
- assert_equals(global.value, 0, "initial value");
- assert_equals(global.valueOf(), 0, "initial valueOf");
-
- assert_throws(new TypeError(), () => global.value = 1);
-
- assert_equals(global.value, 0, "post-set value");
- assert_equals(global.valueOf(), 0, "post-set valueOf");
- }, `Immutable ${type} (${name})`);
- }
-
- const mutableOptions = [
- [{ "mutable": true }, "true"],
- [{ "mutable": 1 }, "one"],
- [{ "mutable": "x" }, "string"],
- [Object.create({ "mutable": true }), "true on prototype"],
- ];
- for (const [opts, name] of mutableOptions) {
- test(() => {
- opts.value = type;
- const global = new WebAssembly.Global(opts);
- assert_equals(global.value, 0, "initial value");
- assert_equals(global.valueOf(), 0, "initial valueOf");
-
- global.value = 1;
-
- assert_equals(global.value, 1, "post-set value");
- assert_equals(global.valueOf(), 1, "post-set valueOf");
- }, `Mutable ${type} (${name})`);
- }
-}
-
-test(() => {
- const argument = { "value": "i64", "mutable": true };
- const global = new WebAssembly.Global(argument);
- assert_throws(new TypeError(), () => global.value);
- assert_throws(new TypeError(), () => global.value = 0);
- assert_throws(new TypeError(), () => global.valueOf());
-}, "i64 with default");
-
-
-test(() => {
- const argument = { "value": "i32", "mutable": true };
- const global = new WebAssembly.Global(argument);
- const desc = Object.getOwnPropertyDescriptor(WebAssembly.Global.prototype, "value");
- assert_equals(typeof desc, "object");
-
- const setter = desc.set;
- assert_equals(typeof setter, "function");
-
- assert_throws(new TypeError(), () => setter.call(global));
-}, "Calling setter without argument");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt
deleted file mode 100644
index c6d3c41..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-
-FAIL Branding undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-FAIL Immutable i32 (missing) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (undefined) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (null) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (false) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (empty string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable i32 (zero) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (true) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (one) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable i32 (true on prototype) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (missing) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (undefined) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (null) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (false) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (empty string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f32 (zero) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (true) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (one) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f32 (true on prototype) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (missing) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (undefined) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (null) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (false) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (empty string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Immutable f64 (zero) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (true) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (one) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (string) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL Mutable f64 (true on prototype) undefined is not a constructor (evaluating 'new WebAssembly.Global(opts)')
-FAIL i64 with default undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-FAIL Calling setter without argument undefined is not a constructor (evaluating 'new WebAssembly.Global(argument)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt
deleted file mode 100644
index 27d5640..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-FAIL Branding undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.js
deleted file mode 100644
index 176c5a7..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.js
+++ /dev/null
@@ -1,22 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const argument = { "value": "i32" };
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Global,
- WebAssembly.Global.prototype,
- ];
-
- const fn = WebAssembly.Global.prototype.valueOf;
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => fn.call(thisValue), `this=${format_value(thisValue)}`);
- }
-}, "Branding");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt
deleted file mode 100644
index 27d5640..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-FAIL Branding undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/w3c-import.log
deleted file mode 100644
index ab1f3ef..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/w3c-import.log
+++ /dev/null
@@ -1,20 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/constructor.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/toString.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/value-set.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/global/valueOf.any.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt
deleted file mode 100644
index a01fb3d..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any-expected.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-CONSOLE MESSAGE: line 68: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-PASS new WebAssembly.Instance(module): Non-object imports argument: null
-PASS new WebAssembly.Instance(module): Non-object imports argument: true
-PASS new WebAssembly.Instance(module): Non-object imports argument: ""
-PASS new WebAssembly.Instance(module): Non-object imports argument: symbol "Symbol()"
-PASS new WebAssembly.Instance(module): Non-object imports argument: 1
-PASS new WebAssembly.Instance(module): Non-object imports argument: 0.1
-PASS new WebAssembly.Instance(module): Non-object imports argument: NaN
-PASS new WebAssembly.Instance(module): Non-object module: undefined
-PASS new WebAssembly.Instance(module): Non-object module: null
-PASS new WebAssembly.Instance(module): Non-object module: true
-PASS new WebAssembly.Instance(module): Non-object module: ""
-PASS new WebAssembly.Instance(module): Non-object module: symbol "Symbol()"
-PASS new WebAssembly.Instance(module): Non-object module: 1
-PASS new WebAssembly.Instance(module): Non-object module: 0.1
-PASS new WebAssembly.Instance(module): Non-object module: NaN
-PASS new WebAssembly.Instance(module): Missing imports argument
-PASS new WebAssembly.Instance(module): Imports argument with missing property: undefined
-PASS new WebAssembly.Instance(module): Imports argument with missing property: empty object
-PASS new WebAssembly.Instance(module): Imports argument with missing property: wrong property
-PASS new WebAssembly.Instance(module): Importing an i64 global
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: undefined
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: null
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: true
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: ""
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: symbol "Symbol()"
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: 1
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: 0.1
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: NaN
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.js
deleted file mode 100644
index 24c51c1..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.js
+++ /dev/null
@@ -1,14 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-// META: script=/wasm/jsapi/bad-imports.js
-
-test_bad_imports((name, error, build, ...arguments) => {
- test(() => {
- const builder = new WasmModuleBuilder();
- build(builder);
- const buffer = builder.toBuffer();
- const module = new WebAssembly.Module(buffer);
- assert_throws(error, () => new WebAssembly.Instance(module, ...arguments));
- }, `new WebAssembly.Instance(module): ${name}`);
-});
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt
deleted file mode 100644
index a09da4e..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker-expected.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-CONSOLE MESSAGE: line 1774: TypeError: null is not an object (evaluating 'this.message_target.removeEventListener')
-CONSOLE MESSAGE: line 68: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-PASS new WebAssembly.Instance(module): Non-object imports argument: null
-PASS new WebAssembly.Instance(module): Non-object imports argument: true
-PASS new WebAssembly.Instance(module): Non-object imports argument: ""
-PASS new WebAssembly.Instance(module): Non-object imports argument: symbol "Symbol()"
-PASS new WebAssembly.Instance(module): Non-object imports argument: 1
-PASS new WebAssembly.Instance(module): Non-object imports argument: 0.1
-PASS new WebAssembly.Instance(module): Non-object imports argument: NaN
-PASS new WebAssembly.Instance(module): Non-object module: undefined
-PASS new WebAssembly.Instance(module): Non-object module: null
-PASS new WebAssembly.Instance(module): Non-object module: true
-PASS new WebAssembly.Instance(module): Non-object module: ""
-PASS new WebAssembly.Instance(module): Non-object module: symbol "Symbol()"
-PASS new WebAssembly.Instance(module): Non-object module: 1
-PASS new WebAssembly.Instance(module): Non-object module: 0.1
-PASS new WebAssembly.Instance(module): Non-object module: NaN
-PASS new WebAssembly.Instance(module): Missing imports argument
-PASS new WebAssembly.Instance(module): Imports argument with missing property: undefined
-PASS new WebAssembly.Instance(module): Imports argument with missing property: empty object
-PASS new WebAssembly.Instance(module): Imports argument with missing property: wrong property
-PASS new WebAssembly.Instance(module): Importing an i64 global
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: undefined
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: null
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: true
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: ""
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: symbol "Symbol()"
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: 1
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: 0.1
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: NaN
-PASS new WebAssembly.Instance(module): Importing a function with an incorrectly-typed value: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt
deleted file mode 100644
index bb97fc8..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Non-Module arguments
-PASS Non-object imports
-PASS Calling
-PASS Empty module
-PASS getter order for imports object
-PASS imports
-FAIL exports WebAssembly.Module doesn't parse at byte 87: 3th Export isn't immutable, named 'global' (evaluating 'new WebAssembly.Module(buffer)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.js
deleted file mode 100644
index 61a8f53..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.js
+++ /dev/null
@@ -1,227 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-// META: script=/wasm/jsapi/assertions.js
-
-function assert_exported_function(fn, { name, length }, description) {
- assert_equals(Object.getPrototypeOf(fn), Function.prototype,
- `${description}: prototype`);
-
- assert_function_name(fn, name, description);
- assert_function_length(fn, length, description);
-}
-
-function assert_Instance(instance, expected_exports) {
- assert_equals(Object.getPrototypeOf(instance), WebAssembly.Instance.prototype,
- "prototype");
- assert_true(Object.isExtensible(instance), "extensible");
-
- assert_equals(instance.exports, instance.exports, "exports should be idempotent");
- const exports = instance.exports;
-
- assert_equals(Object.getPrototypeOf(exports), null, "exports prototype");
- assert_false(Object.isExtensible(exports), "extensible exports");
- for (const [key, expected] of Object.entries(expected_exports)) {
- const property = Object.getOwnPropertyDescriptor(exports, key);
- assert_equals(typeof property, "object", `${key} should be present`);
- assert_false(property.writable, `${key}: writable`);
- assert_true(property.enumerable, `${key}: enumerable`);
- assert_false(property.configurable, `${key}: configurable`);
- const actual = property.value;
- assert_true(Object.isExtensible(actual), `${key}: extensible`);
-
- switch (expected.kind) {
- case "function":
- assert_exported_function(actual, expected, `value of ${key}`);
- break;
- case "global":
- assert_equals(Object.getPrototypeOf(actual), WebAssembly.Global.prototype,
- `value of ${key}: prototype`);
- assert_equals(actual.value, expected.value, `value of ${key}: value`);
- assert_equals(actual.valueOf(), expected.value, `value of ${key}: valueOf()`);
- break;
- case "memory":
- assert_equals(Object.getPrototypeOf(actual), WebAssembly.Memory.prototype,
- `value of ${key}: prototype`);
- assert_equals(Object.getPrototypeOf(actual.buffer), ArrayBuffer.prototype,
- `value of ${key}: prototype of buffer`);
- assert_equals(actual.buffer.byteLength, 0x10000 * expected.size, `value of ${key}: size of buffer`);
- const array = new Uint8Array(actual.buffer);
- assert_equals(array[0], 0, `value of ${key}: first element of buffer`);
- assert_equals(array[array.byteLength - 1], 0, `value of ${key}: last element of buffer`);
- break;
- case "table":
- assert_equals(Object.getPrototypeOf(actual), WebAssembly.Table.prototype,
- `value of ${key}: prototype`);
- assert_equals(actual.length, expected.length, `value of ${key}: length of table`);
- break;
- }
- }
-}
-
-let emptyModuleBinary;
-setup(() => {
- emptyModuleBinary = new WasmModuleBuilder().toBuffer();
-});
-
-test(() => {
- assert_function_name(WebAssembly.Instance, "Instance", "WebAssembly.Instance");
-}, "name");
-
-test(() => {
- assert_function_length(WebAssembly.Instance, 1, "WebAssembly.Instance");
-}, "length");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Instance());
-}, "No arguments");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => new WebAssembly.Instance(argument),
- `new Instance(${format_value(argument)})`);
- }
-}, "Non-Module arguments");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const invalidArguments = [
- null,
- true,
- "",
- Symbol(),
- 1,
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => new WebAssembly.Instance(module, argument),
- `new Instance(module, ${format_value(argument)})`);
- }
-}, "Non-object imports");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_throws(new TypeError(), () => WebAssembly.Instance(module));
-}, "Calling");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const arguments = [
- [],
- [undefined],
- [{}],
- ];
- for (const value of arguments) {
- const instance = new WebAssembly.Instance(module, ...arguments);
- assert_Instance(instance, {});
- }
-}, "Empty module");
-
-test(() => {
- const builder = new WasmModuleBuilder();
- builder.addImportedGlobal("module", "global1", kWasmI32);
- builder.addImportedGlobal("module", "global2", kWasmI32);
- const buffer = builder.toBuffer();
- const module = new WebAssembly.Module(buffer);
- const order = [];
- const imports = {
- get module() {
- order.push("module getter");
- return {
- get global1() {
- order.push("global1 getter");
- return 0;
- },
- get global2() {
- order.push("global2 getter");
- return 0;
- },
- }
- },
- };
- new WebAssembly.Instance(module, imports);
- const expected = [
- "module getter",
- "global1 getter",
- "module getter",
- "global2 getter",
- ];
- assert_array_equals(order, expected);
-}, "getter order for imports object");
-
-test(() => {
- const builder = new WasmModuleBuilder();
-
- builder.addImport("module", "fn", kSig_v_v);
- builder.addImportedGlobal("module", "global", kWasmI32);
- builder.addImportedMemory("module", "memory", 0, 128);
- builder.addImportedTable("module", "table", 0, 128);
-
- const buffer = builder.toBuffer();
- const module = new WebAssembly.Module(buffer);
- const instance = new WebAssembly.Instance(module, {
- "module": {
- "fn": function() {},
- "global": 0,
- "memory": new WebAssembly.Memory({ "initial": 64, maximum: 128 }),
- "table": new WebAssembly.Table({ "element": "anyfunc", "initial": 64, maximum: 128 }),
- },
- get "module2"() {
- assert_unreached("Should not get modules that are not imported");
- },
- });
- assert_Instance(instance, {});
-}, "imports");
-
-test(() => {
- const builder = new WasmModuleBuilder();
-
- builder
- .addFunction("fn", kSig_v_d)
- .addBody([
- kExprEnd
- ])
- .exportFunc();
- builder
- .addFunction("fn2", kSig_v_v)
- .addBody([
- kExprEnd
- ])
- .exportFunc();
-
- builder.setFunctionTableLength(1);
- builder.addExportOfKind("table", kExternalTable, 0);
-
- builder.addGlobal(kWasmI32, true)
- .exportAs("global")
- .init = 7;
- builder.addGlobal(kWasmF64, true)
- .exportAs("global2")
- .init = 1.2;
-
- builder.addMemory(4, 8, true);
-
- const buffer = builder.toBuffer()
- const module = new WebAssembly.Module(buffer);
-
- const instance = new WebAssembly.Instance(module, {});
- const expected = {
- "fn": { "kind": "function", "name": "0", "length": 1 },
- "fn2": { "kind": "function", "name": "1", "length": 0 },
- "table": { "kind": "table", "length": 1 },
- "global": { "kind": "global", "value": 7 },
- "global2": { "kind": "global", "value": 1.2 },
- "memory": { "kind": "memory", "size": 4 },
- };
- assert_Instance(instance, expected);
-}, "exports");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt
deleted file mode 100644
index bb97fc8..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker-expected.txt
+++ /dev/null
@@ -1,12 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Non-Module arguments
-PASS Non-object imports
-PASS Calling
-PASS Empty module
-PASS getter order for imports object
-PASS imports
-FAIL exports WebAssembly.Module doesn't parse at byte 87: 3th Export isn't immutable, named 'global' (evaluating 'new WebAssembly.Module(buffer)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any-expected.txt
deleted file mode 100644
index 670f281..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-PASS Branding
-PASS Setting (sloppy mode)
-PASS Setting (strict mode)
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.js
deleted file mode 100644
index 3142391..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-
-let emptyModuleBinary;
-setup(() => {
- emptyModuleBinary = new WasmModuleBuilder().toBuffer();
-});
-
-test(() => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Instance,
- WebAssembly.Instance.prototype,
- ];
-
- const desc = Object.getOwnPropertyDescriptor(WebAssembly.Instance.prototype, "exports");
- assert_equals(typeof desc, "object");
-
- const getter = desc.get;
- assert_equals(typeof getter, "function");
-
- assert_equals(typeof desc.set, "undefined");
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => getter.call(thisValue), `this=${format_value(thisValue)}`);
- }
-}, "Branding");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const instance = new WebAssembly.Instance(module);
- const exports = instance.exports;
- instance.exports = {};
- assert_equals(instance.exports, exports, "Should not change the exports");
-}, "Setting (sloppy mode)");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const instance = new WebAssembly.Instance(module);
- const exports = instance.exports;
- assert_throws(new TypeError(), () => {
- "use strict";
- instance.exports = {};
- });
- assert_equals(instance.exports, exports, "Should not change the exports");
-}, "Setting (strict mode)");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker-expected.txt
deleted file mode 100644
index 670f281..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-PASS Branding
-PASS Setting (sloppy mode)
-PASS Setting (strict mode)
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt
deleted file mode 100644
index 73038a9..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Instance
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.js
deleted file mode 100644
index 08dcb14..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.js
+++ /dev/null
@@ -1,10 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-
-test(() => {
- const emptyModuleBinary = new WasmModuleBuilder().toBuffer();
- const module = new WebAssembly.Module(emptyModuleBinary);
- const instance = new WebAssembly.Instance(module);
- assert_class_string(instance, "WebAssembly.Instance");
-}, "Object.prototype.toString on an Instance");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt
deleted file mode 100644
index 73038a9..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Instance
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/w3c-import.log
deleted file mode 100644
index e689698..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/w3c-import.log
+++ /dev/null
@@ -1,20 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor-bad-imports.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/constructor.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/exports.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/instance/toString.any.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any-expected.txt
deleted file mode 100644
index a2a92dd..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any-expected.txt
+++ /dev/null
@@ -1,85 +0,0 @@
-CONSOLE MESSAGE: line 154: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-PASS WebAssembly: property descriptor
-PASS WebAssembly: calling
-PASS WebAssembly: constructing
-PASS WebAssembly.Module: property descriptor
-PASS WebAssembly.Module: prototype
-PASS WebAssembly.Module: prototype.constructor
-PASS WebAssembly.Instance: property descriptor
-PASS WebAssembly.Instance: prototype
-PASS WebAssembly.Instance: prototype.constructor
-PASS WebAssembly.Memory: property descriptor
-PASS WebAssembly.Memory: prototype
-PASS WebAssembly.Memory: prototype.constructor
-PASS WebAssembly.Table: property descriptor
-PASS WebAssembly.Table: prototype
-PASS WebAssembly.Table: prototype.constructor
-FAIL WebAssembly.Global: property descriptor assert_equals: expected "object" but got "undefined"
-FAIL WebAssembly.Global: prototype undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(interface_object, "prototype")')
-FAIL WebAssembly.Global: prototype.constructor undefined is not an object (evaluating 'interface_object.prototype')
-PASS WebAssembly.CompileError: property descriptor
-PASS WebAssembly.CompileError: prototype
-PASS WebAssembly.CompileError: prototype.constructor
-PASS WebAssembly.LinkError: property descriptor
-PASS WebAssembly.LinkError: prototype
-PASS WebAssembly.LinkError: prototype.constructor
-PASS WebAssembly.RuntimeError: property descriptor
-PASS WebAssembly.RuntimeError: prototype
-PASS WebAssembly.RuntimeError: prototype.constructor
-PASS WebAssembly.validate
-PASS WebAssembly.validate: name
-PASS WebAssembly.validate: length
-PASS WebAssembly.compile
-PASS WebAssembly.compile: name
-PASS WebAssembly.compile: length
-PASS WebAssembly.instantiate
-PASS WebAssembly.instantiate: name
-PASS WebAssembly.instantiate: length
-FAIL WebAssembly.Module.exports assert_equals: expected (undefined) undefined but got (function) function "function exports() {
- [native code]
-}"
-PASS WebAssembly.Module.exports: name
-PASS WebAssembly.Module.exports: length
-FAIL WebAssembly.Module.imports assert_equals: expected (undefined) undefined but got (function) function "function imports() {
- [native code]
-}"
-PASS WebAssembly.Module.imports: name
-PASS WebAssembly.Module.imports: length
-FAIL WebAssembly.Module.customSections assert_equals: expected (undefined) undefined but got (function) function "function customSections() {
- [native code]
-}"
-PASS WebAssembly.Module.customSections: name
-PASS WebAssembly.Module.customSections: length
-PASS WebAssembly.Instance.exports
-PASS WebAssembly.Instance.exports: getter
-PASS WebAssembly.Instance.exports: setter
-FAIL WebAssembly.Memory.grow assert_equals: expected (undefined) undefined but got (function) function "function grow() {
- [native code]
-}"
-PASS WebAssembly.Memory.grow: name
-PASS WebAssembly.Memory.grow: length
-PASS WebAssembly.Memory.buffer
-PASS WebAssembly.Memory.buffer: getter
-PASS WebAssembly.Memory.buffer: setter
-FAIL WebAssembly.Table.grow assert_equals: expected (undefined) undefined but got (function) function "function grow() {
- [native code]
-}"
-PASS WebAssembly.Table.grow: name
-PASS WebAssembly.Table.grow: length
-FAIL WebAssembly.Table.get assert_equals: expected (undefined) undefined but got (function) function "function get() {
- [native code]
-}"
-PASS WebAssembly.Table.get: name
-PASS WebAssembly.Table.get: length
-FAIL WebAssembly.Table.set assert_equals: expected (undefined) undefined but got (function) function "function set() {
- [native code]
-}"
-PASS WebAssembly.Table.set: name
-PASS WebAssembly.Table.set: length
-PASS WebAssembly.Table.length
-PASS WebAssembly.Table.length: getter
-PASS WebAssembly.Table.length: setter
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js
deleted file mode 100644
index 5d76ac5..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js
+++ /dev/null
@@ -1,160 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/assertions.js
-
-function test_operations(object, object_name, operations) {
- for (const [name, length] of operations) {
- test(() => {
- const propdesc = Object.getOwnPropertyDescriptor(object, name);
- assert_equals(typeof propdesc, "object");
- assert_true(propdesc.writable, "writable");
- assert_true(propdesc.enumerable, "enumerable");
- assert_true(propdesc.configurable, "configurable");
- assert_equals(propdesc.value, WebAssembly[name]);
- }, `${object_name}.${name}`);
-
- test(() => {
- assert_function_name(object[name], name, `${object_name}.${name}`);
- }, `${object_name}.${name}: name`);
-
- test(() => {
- assert_function_length(object[name], length, `${object_name}.${name}`);
- }, `${object_name}.${name}: length`);
- }
-}
-
-function test_attributes(object, object_name, attributes) {
- for (const [name, mutable] of attributes) {
- test(() => {
- const propdesc = Object.getOwnPropertyDescriptor(object, name);
- assert_equals(typeof propdesc, "object");
- assert_true(propdesc.enumerable, "enumerable");
- assert_true(propdesc.configurable, "configurable");
- }, `${object_name}.${name}`);
-
- test(() => {
- const propdesc = Object.getOwnPropertyDescriptor(object, name);
- assert_equals(typeof propdesc, "object");
- assert_equals(typeof propdesc.get, "function");
- assert_function_name(propdesc.get, "get " + name, `getter for "${name}"`);
- assert_function_length(propdesc.get, 0, `getter for "${name}"`);
- }, `${object_name}.${name}: getter`);
-
- test(() => {
- const propdesc = Object.getOwnPropertyDescriptor(object, name);
- assert_equals(typeof propdesc, "object");
- if (mutable) {
- assert_equals(typeof propdesc.set, "function");
- assert_function_name(propdesc.set, "set " + name, `setter for "${name}"`);
- assert_function_length(propdesc.set, 1, `setter for "${name}"`);
- } else {
- assert_equals(typeof propdesc.set, "undefined");
- }
- }, `${object_name}.${name}: setter`);
- }
-}
-
-test(() => {
- const propdesc = Object.getOwnPropertyDescriptor(this, "WebAssembly");
- assert_equals(typeof propdesc, "object");
- assert_true(propdesc.writable, "writable");
- assert_false(propdesc.enumerable, "enumerable");
- assert_true(propdesc.configurable, "configurable");
- assert_equals(propdesc.value, this.WebAssembly);
-}, "WebAssembly: property descriptor");
-
-test(() => {
- assert_throws(new TypeError(), () => WebAssembly());
-}, "WebAssembly: calling");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly());
-}, "WebAssembly: constructing");
-
-const interfaces = [
- "Module",
- "Instance",
- "Memory",
- "Table",
- "Global",
- "CompileError",
- "LinkError",
- "RuntimeError",
-];
-
-for (const name of interfaces) {
- test(() => {
- const propdesc = Object.getOwnPropertyDescriptor(WebAssembly, name);
- assert_equals(typeof propdesc, "object");
- assert_true(propdesc.writable, "writable");
- assert_false(propdesc.enumerable, "enumerable");
- assert_true(propdesc.configurable, "configurable");
- assert_equals(propdesc.value, WebAssembly[name]);
- }, `WebAssembly.${name}: property descriptor`);
-
- test(() => {
- const interface_object = WebAssembly[name];
- const propdesc = Object.getOwnPropertyDescriptor(interface_object, "prototype");
- assert_equals(typeof propdesc, "object");
- assert_false(propdesc.writable, "writable");
- assert_false(propdesc.enumerable, "enumerable");
- assert_false(propdesc.configurable, "configurable");
- }, `WebAssembly.${name}: prototype`);
-
- test(() => {
- const interface_object = WebAssembly[name];
- const interface_prototype_object = interface_object.prototype;
- const propdesc = Object.getOwnPropertyDescriptor(interface_prototype_object, "constructor");
- assert_equals(typeof propdesc, "object");
- assert_true(propdesc.writable, "writable");
- assert_false(propdesc.enumerable, "enumerable");
- assert_true(propdesc.configurable, "configurable");
- assert_equals(propdesc.value, interface_object);
- }, `WebAssembly.${name}: prototype.constructor`);
-}
-
-test_operations(WebAssembly, "WebAssembly", [
- ["validate", 1],
- ["compile", 1],
- ["instantiate", 1],
-]);
-
-
-test_operations(WebAssembly.Module, "WebAssembly.Module", [
- ["exports", 1],
- ["imports", 1],
- ["customSections", 2],
-]);
-
-
-test_attributes(WebAssembly.Instance.prototype, "WebAssembly.Instance", [
- ["exports", false],
-]);
-
-
-test_operations(WebAssembly.Memory.prototype, "WebAssembly.Memory", [
- ["grow", 1],
-]);
-
-test_attributes(WebAssembly.Memory.prototype, "WebAssembly.Memory", [
- ["buffer", false],
-]);
-
-
-test_operations(WebAssembly.Table.prototype, "WebAssembly.Table", [
- ["grow", 1],
- ["get", 1],
- ["set", 2],
-]);
-
-test_attributes(WebAssembly.Table.prototype, "WebAssembly.Table", [
- ["length", false],
-]);
-
-
-test_operations(WebAssembly.Global.prototype, "WebAssembly.Global", [
- ["valueOf", 0],
-]);
-
-test_attributes(WebAssembly.Global.prototype, "WebAssembly.Global", [
- ["value", true],
-]);
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt
deleted file mode 100644
index 9be5ab6..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-CONSOLE MESSAGE: line 1774: TypeError: null is not an object (evaluating 'this.message_target.removeEventListener')
-CONSOLE MESSAGE: line 154: TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-Harness Error (FAIL), message = TypeError: undefined is not an object (evaluating 'WebAssembly.Global.prototype')
-
-PASS WebAssembly: property descriptor
-PASS WebAssembly: calling
-PASS WebAssembly: constructing
-PASS WebAssembly.Module: property descriptor
-PASS WebAssembly.Module: prototype
-PASS WebAssembly.Module: prototype.constructor
-PASS WebAssembly.Instance: property descriptor
-PASS WebAssembly.Instance: prototype
-PASS WebAssembly.Instance: prototype.constructor
-PASS WebAssembly.Memory: property descriptor
-PASS WebAssembly.Memory: prototype
-PASS WebAssembly.Memory: prototype.constructor
-PASS WebAssembly.Table: property descriptor
-PASS WebAssembly.Table: prototype
-PASS WebAssembly.Table: prototype.constructor
-FAIL WebAssembly.Global: property descriptor assert_equals: expected "object" but got "undefined"
-FAIL WebAssembly.Global: prototype undefined is not an object (evaluating 'Object.getOwnPropertyDescriptor(interface_object, "prototype")')
-FAIL WebAssembly.Global: prototype.constructor undefined is not an object (evaluating 'interface_object.prototype')
-PASS WebAssembly.CompileError: property descriptor
-PASS WebAssembly.CompileError: prototype
-PASS WebAssembly.CompileError: prototype.constructor
-PASS WebAssembly.LinkError: property descriptor
-PASS WebAssembly.LinkError: prototype
-PASS WebAssembly.LinkError: prototype.constructor
-PASS WebAssembly.RuntimeError: property descriptor
-PASS WebAssembly.RuntimeError: prototype
-PASS WebAssembly.RuntimeError: prototype.constructor
-PASS WebAssembly.validate
-PASS WebAssembly.validate: name
-PASS WebAssembly.validate: length
-PASS WebAssembly.compile
-PASS WebAssembly.compile: name
-PASS WebAssembly.compile: length
-PASS WebAssembly.instantiate
-PASS WebAssembly.instantiate: name
-PASS WebAssembly.instantiate: length
-FAIL WebAssembly.Module.exports assert_equals: expected (undefined) undefined but got (function) function "function exports() {
- [native code]
-}"
-PASS WebAssembly.Module.exports: name
-PASS WebAssembly.Module.exports: length
-FAIL WebAssembly.Module.imports assert_equals: expected (undefined) undefined but got (function) function "function imports() {
- [native code]
-}"
-PASS WebAssembly.Module.imports: name
-PASS WebAssembly.Module.imports: length
-FAIL WebAssembly.Module.customSections assert_equals: expected (undefined) undefined but got (function) function "function customSections() {
- [native code]
-}"
-PASS WebAssembly.Module.customSections: name
-PASS WebAssembly.Module.customSections: length
-PASS WebAssembly.Instance.exports
-PASS WebAssembly.Instance.exports: getter
-PASS WebAssembly.Instance.exports: setter
-FAIL WebAssembly.Memory.grow assert_equals: expected (undefined) undefined but got (function) function "function grow() {
- [native code]
-}"
-PASS WebAssembly.Memory.grow: name
-PASS WebAssembly.Memory.grow: length
-PASS WebAssembly.Memory.buffer
-PASS WebAssembly.Memory.buffer: getter
-PASS WebAssembly.Memory.buffer: setter
-FAIL WebAssembly.Table.grow assert_equals: expected (undefined) undefined but got (function) function "function grow() {
- [native code]
-}"
-PASS WebAssembly.Table.grow: name
-PASS WebAssembly.Table.grow: length
-FAIL WebAssembly.Table.get assert_equals: expected (undefined) undefined but got (function) function "function get() {
- [native code]
-}"
-PASS WebAssembly.Table.get: name
-PASS WebAssembly.Table.get: length
-FAIL WebAssembly.Table.set assert_equals: expected (undefined) undefined but got (function) function "function set() {
- [native code]
-}"
-PASS WebAssembly.Table.set: name
-PASS WebAssembly.Table.set: length
-PASS WebAssembly.Table.length
-PASS WebAssembly.Table.length: getter
-PASS WebAssembly.Table.length: setter
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any-expected.txt
deleted file mode 100644
index 670f281..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-PASS Branding
-PASS Setting (sloppy mode)
-PASS Setting (strict mode)
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.js
deleted file mode 100644
index b04460b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Memory,
- WebAssembly.Memory.prototype,
- ];
-
- const desc = Object.getOwnPropertyDescriptor(WebAssembly.Memory.prototype, "buffer");
- assert_equals(typeof desc, "object");
-
- const getter = desc.get;
- assert_equals(typeof getter, "function");
-
- assert_equals(typeof desc.set, "undefined");
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => getter.call(thisValue), `this=${format_value(thisValue)}`);
- }
-}, "Branding");
-
-test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- const memory2 = new WebAssembly.Memory(argument);
- const buffer = memory.buffer;
- assert_not_equals(buffer, memory2.buffer, "Need two distinct buffers");
- memory.buffer = memory2.buffer;
- assert_equals(memory.buffer, buffer, "Should not change the buffer");
-}, "Setting (sloppy mode)");
-
-test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- const memory2 = new WebAssembly.Memory(argument);
- const buffer = memory.buffer;
- assert_not_equals(buffer, memory2.buffer, "Need two distinct buffers");
- assert_throws(new TypeError(), () => {
- "use strict";
- memory.buffer = memory2.buffer;
- });
- assert_equals(memory.buffer, buffer, "Should not change the buffer");
-}, "Setting (strict mode)");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker-expected.txt
deleted file mode 100644
index 670f281..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-PASS Branding
-PASS Setting (sloppy mode)
-PASS Setting (strict mode)
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any-expected.txt
deleted file mode 100644
index 074a2e6..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Calling
-PASS Invalid descriptor argument
-PASS Undefined initial value in descriptor
-PASS Out-of-range initial value in descriptor: NaN
-PASS Out-of-range maximum value in descriptor: NaN
-PASS Out-of-range initial value in descriptor: Infinity
-PASS Out-of-range maximum value in descriptor: Infinity
-PASS Out-of-range initial value in descriptor: -Infinity
-PASS Out-of-range maximum value in descriptor: -Infinity
-PASS Out-of-range initial value in descriptor: -1
-PASS Out-of-range maximum value in descriptor: -1
-PASS Out-of-range initial value in descriptor: 4294967296
-PASS Out-of-range maximum value in descriptor: 4294967296
-PASS Out-of-range initial value in descriptor: 68719476736
-PASS Out-of-range maximum value in descriptor: 68719476736
-PASS Proxy descriptor
-PASS Order of evaluation for descriptor
-PASS Zero initial
-PASS Non-zero initial
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.js
deleted file mode 100644
index f9907ca..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.js
+++ /dev/null
@@ -1,137 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/assertions.js
-
-function assert_Memory(memory, expected) {
- assert_equals(Object.getPrototypeOf(memory), WebAssembly.Memory.prototype,
- "prototype");
- assert_true(Object.isExtensible(memory), "extensible");
-
- // https://github.com/WebAssembly/spec/issues/840
- assert_equals(memory.buffer, memory.buffer, "buffer should be idempotent");
- assert_equals(Object.getPrototypeOf(memory.buffer), ArrayBuffer.prototype,
- "prototype of buffer");
- assert_true(Object.isExtensible(memory.buffer), "buffer extensibility");
- assert_equals(memory.buffer.byteLength, 0x10000 * expected.size, "size of buffer");
- if (expected.size > 0) {
- const array = new Uint8Array(memory.buffer);
- assert_equals(array[0], 0, "first element of buffer");
- assert_equals(array[array.byteLength - 1], 0, "last element of buffer");
- }
-}
-
-test(() => {
- assert_function_name(WebAssembly.Memory, "Memory", "WebAssembly.Memory");
-}, "name");
-
-test(() => {
- assert_function_length(WebAssembly.Memory, 1, "WebAssembly.Memory");
-}, "length");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Memory());
-}, "No arguments");
-
-test(() => {
- const argument = { "initial": 0 };
- assert_throws(new TypeError(), () => WebAssembly.Memory(argument));
-}, "Calling");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- false,
- true,
- "",
- "test",
- Symbol(),
- 1,
- NaN,
- {},
- ];
- for (const invalidArgument of invalidArguments) {
- assert_throws(new TypeError(),
- () => new WebAssembly.Memory(invalidArgument),
- `new Memory(${format_value(invalidArgument)})`);
- }
-}, "Invalid descriptor argument");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Memory({ "initial": undefined }));
-}, "Undefined initial value in descriptor");
-
-const outOfRangeValues = [
- NaN,
- Infinity,
- -Infinity,
- -1,
- 0x100000000,
- 0x1000000000,
-];
-
-for (const value of outOfRangeValues) {
- test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Memory({ "initial": value }));
- }, `Out-of-range initial value in descriptor: ${format_value(value)}`);
-
- test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Memory({ "initial": 0, "maximum": value }));
- }, `Out-of-range maximum value in descriptor: ${format_value(value)}`);
-}
-
-test(() => {
- const proxy = new Proxy({}, {
- has(o, x) {
- assert_unreached(`Should not call [[HasProperty]] with ${x}`);
- },
- get(o, x) {
- return 0;
- },
- });
- new WebAssembly.Memory(proxy);
-}, "Proxy descriptor");
-
-test(() => {
- const order = [];
-
- new WebAssembly.Memory({
- get maximum() {
- order.push("maximum");
- return {
- valueOf() {
- order.push("maximum valueOf");
- return 1;
- },
- };
- },
-
- get initial() {
- order.push("initial");
- return {
- valueOf() {
- order.push("initial valueOf");
- return 1;
- },
- };
- },
- });
-
- assert_array_equals(order, [
- "initial",
- "initial valueOf",
- "maximum",
- "maximum valueOf",
- ]);
-}, "Order of evaluation for descriptor");
-
-test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- assert_Memory(memory, { "size": 0 });
-}, "Zero initial");
-
-test(() => {
- const argument = { "initial": 4 };
- const memory = new WebAssembly.Memory(argument);
- assert_Memory(memory, { "size": 4 });
-}, "Non-zero initial");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker-expected.txt
deleted file mode 100644
index 074a2e6..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker-expected.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Calling
-PASS Invalid descriptor argument
-PASS Undefined initial value in descriptor
-PASS Out-of-range initial value in descriptor: NaN
-PASS Out-of-range maximum value in descriptor: NaN
-PASS Out-of-range initial value in descriptor: Infinity
-PASS Out-of-range maximum value in descriptor: Infinity
-PASS Out-of-range initial value in descriptor: -Infinity
-PASS Out-of-range maximum value in descriptor: -Infinity
-PASS Out-of-range initial value in descriptor: -1
-PASS Out-of-range maximum value in descriptor: -1
-PASS Out-of-range initial value in descriptor: 4294967296
-PASS Out-of-range maximum value in descriptor: 4294967296
-PASS Out-of-range initial value in descriptor: 68719476736
-PASS Out-of-range maximum value in descriptor: 68719476736
-PASS Proxy descriptor
-PASS Order of evaluation for descriptor
-PASS Zero initial
-PASS Non-zero initial
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any-expected.txt
deleted file mode 100644
index 33489b6..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-PASS Missing arguments
-PASS Branding
-PASS Zero initial
-PASS Zero initial with valueOf
-PASS Non-zero initial
-PASS Zero initial with respected maximum
-PASS Zero initial with respected maximum grown twice
-PASS Zero initial growing too much
-PASS Out-of-range argument: undefined
-PASS Out-of-range argument: NaN
-PASS Out-of-range argument: Infinity
-PASS Out-of-range argument: -Infinity
-PASS Out-of-range argument: -1
-PASS Out-of-range argument: 4294967296
-PASS Out-of-range argument: 68719476736
-PASS Out-of-range argument: "0x100000000"
-PASS Out-of-range argument: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.js
deleted file mode 100644
index 9530039..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.js
+++ /dev/null
@@ -1,170 +0,0 @@
-// META: global=jsshell
-
-function assert_ArrayBuffer(actual, expected, message) {
- // https://github.com/WebAssembly/spec/issues/840
- assert_equals(Object.getPrototypeOf(actual), ArrayBuffer.prototype,
- `${message}: prototype`);
- if (expected.detached) {
- // https://github.com/tc39/ecma262/issues/678
- let byteLength;
- try {
- byteLength = actual.byteLength;
- } catch (e) {
- byteLength = 0;
- }
- assert_equals(byteLength, 0, `${message}: detached size`);
- } else {
- assert_equals(actual.byteLength, 0x10000 * expected.size, `${message}: size`);
- if (expected.size > 0) {
- const array = new Uint8Array(actual);
- assert_equals(array[0], 0, `${message}: first element`);
- assert_equals(array[array.byteLength - 1], 0, `${message}: last element`);
- }
- }
-}
-
-test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- assert_throws(new TypeError(), () => memory.grow());
-}, "Missing arguments");
-
-test(t => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Memory,
- WebAssembly.Memory.prototype,
- ];
-
- const argument = {
- valueOf: t.unreached_func("Should not touch the argument (valueOf)"),
- toString: t.unreached_func("Should not touch the argument (toString)"),
- };
-
- const fn = WebAssembly.Memory.prototype.grow;
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => fn.call(thisValue, argument), `this=${format_value(thisValue)}`);
- }
-}, "Branding");
-
-test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- const oldMemory = memory.buffer;
- assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing");
-
- const result = memory.grow(2);
- assert_equals(result, 0);
-
- const newMemory = memory.buffer;
- assert_not_equals(oldMemory, newMemory);
- assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing");
- assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing");
-}, "Zero initial");
-
-test(() => {
- const argument = { "initial": { valueOf() { return 0 } } };
- const memory = new WebAssembly.Memory(argument);
- const oldMemory = memory.buffer;
- assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing");
-
- const result = memory.grow({ valueOf() { return 2 } });
- assert_equals(result, 0);
-
- const newMemory = memory.buffer;
- assert_not_equals(oldMemory, newMemory);
- assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing");
- assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing");
-}, "Zero initial with valueOf");
-
-test(() => {
- const argument = { "initial": 3 };
- const memory = new WebAssembly.Memory(argument);
- const oldMemory = memory.buffer;
- assert_ArrayBuffer(oldMemory, { "size": 3 }, "Buffer before growing");
-
- const result = memory.grow(2);
- assert_equals(result, 3);
-
- const newMemory = memory.buffer;
- assert_not_equals(oldMemory, newMemory);
- assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing");
- assert_ArrayBuffer(newMemory, { "size": 5 }, "New buffer after growing");
-}, "Non-zero initial");
-
-test(() => {
- const argument = { "initial": 0, "maximum": 2 };
- const memory = new WebAssembly.Memory(argument);
- const oldMemory = memory.buffer;
- assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing");
-
- const result = memory.grow(2);
- assert_equals(result, 0);
-
- const newMemory = memory.buffer;
- assert_not_equals(oldMemory, newMemory);
- assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing");
- assert_ArrayBuffer(newMemory, { "size": 2 }, "New buffer after growing");
-}, "Zero initial with respected maximum");
-
-test(() => {
- const argument = { "initial": 0, "maximum": 2 };
- const memory = new WebAssembly.Memory(argument);
- const oldMemory = memory.buffer;
- assert_ArrayBuffer(oldMemory, { "size": 0 }, "Buffer before growing");
-
- const result = memory.grow(1);
- assert_equals(result, 0);
-
- const newMemory = memory.buffer;
- assert_not_equals(oldMemory, newMemory);
- assert_ArrayBuffer(oldMemory, { "detached": true }, "Old buffer after growing once");
- assert_ArrayBuffer(newMemory, { "size": 1 }, "New buffer after growing once");
-
- const result2 = memory.grow(1);
- assert_equals(result2, 1);
-
- const newestMemory = memory.buffer;
- assert_not_equals(newMemory, newestMemory);
- assert_ArrayBuffer(oldMemory, { "detached": true }, "New buffer after growing twice");
- assert_ArrayBuffer(newMemory, { "detached": true }, "New buffer after growing twice");
- assert_ArrayBuffer(newestMemory, { "size": 2 }, "Newest buffer after growing twice");
-}, "Zero initial with respected maximum grown twice");
-
-test(() => {
- const argument = { "initial": 1, "maximum": 2 };
- const memory = new WebAssembly.Memory(argument);
- const oldMemory = memory.buffer;
- assert_ArrayBuffer(oldMemory, { "size": 1 }, "Buffer before growing");
-
- assert_throws(new RangeError(), () => memory.grow(2));
- assert_equals(memory.buffer, oldMemory);
- assert_ArrayBuffer(memory.buffer, { "size": 1 }, "Buffer before trying to grow");
-}, "Zero initial growing too much");
-
-const outOfRangeValues = [
- undefined,
- NaN,
- Infinity,
- -Infinity,
- -1,
- 0x100000000,
- 0x1000000000,
- "0x100000000",
- { valueOf() { return 0x100000000; } },
-];
-
-for (const value of outOfRangeValues) {
- test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- assert_throws(new TypeError(), () => memory.grow(value));
- }, `Out-of-range argument: ${format_value(value)}`);
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker-expected.txt
deleted file mode 100644
index 33489b6..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker-expected.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-
-PASS Missing arguments
-PASS Branding
-PASS Zero initial
-PASS Zero initial with valueOf
-PASS Non-zero initial
-PASS Zero initial with respected maximum
-PASS Zero initial with respected maximum grown twice
-PASS Zero initial growing too much
-PASS Out-of-range argument: undefined
-PASS Out-of-range argument: NaN
-PASS Out-of-range argument: Infinity
-PASS Out-of-range argument: -Infinity
-PASS Out-of-range argument: -1
-PASS Out-of-range argument: 4294967296
-PASS Out-of-range argument: 68719476736
-PASS Out-of-range argument: "0x100000000"
-PASS Out-of-range argument: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt
deleted file mode 100644
index 65e4440..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Memory
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
deleted file mode 100644
index 4e15d75..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const argument = { "initial": 0 };
- const memory = new WebAssembly.Memory(argument);
- assert_class_string(memory, "WebAssembly.Memory");
-}, "Object.prototype.toString on an Memory");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt
deleted file mode 100644
index 65e4440..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Memory
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/w3c-import.log
deleted file mode 100644
index 006643b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/w3c-import.log
+++ /dev/null
@@ -1,20 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/buffer.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/constructor.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/grow.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/memory/toString.any.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any-expected.txt
deleted file mode 100644
index 6d12237..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Calling
-PASS Invalid arguments
-PASS Empty buffer
-PASS Prototype
-PASS Extensibility
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.js
deleted file mode 100644
index 32f183f..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.js
+++ /dev/null
@@ -1,60 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-// META: script=/wasm/jsapi/assertions.js
-
-let emptyModuleBinary;
-setup(() => {
- emptyModuleBinary = new WasmModuleBuilder().toBuffer();
-});
-
-test(() => {
- assert_function_name(WebAssembly.Module, "Module", "WebAssembly.Module");
-}, "name");
-
-test(() => {
- assert_function_length(WebAssembly.Module, 1, "WebAssembly.Module");
-}, "length");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Module());
-}, "No arguments");
-
-test(() => {
- assert_throws(new TypeError(), () => WebAssembly.Module(emptyModuleBinary));
-}, "Calling");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- true,
- "test",
- Symbol(),
- 7,
- NaN,
- {},
- ArrayBuffer,
- ArrayBuffer.prototype,
- Array.from(emptyModuleBinary),
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => new WebAssembly.Module(argument),
- `new Module(${format_value(argument)})`);
- }
-}, "Invalid arguments");
-
-test(() => {
- const buffer = new Uint8Array();
- assert_throws(new WebAssembly.CompileError(), () => new WebAssembly.Module(buffer));
-}, "Empty buffer");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_equals(Object.getPrototypeOf(module), WebAssembly.Module.prototype);
-}, "Prototype");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_true(Object.isExtensible(module));
-}, "Extensibility");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker-expected.txt
deleted file mode 100644
index 6d12237..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Calling
-PASS Invalid arguments
-PASS Empty buffer
-PASS Prototype
-PASS Extensibility
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any-expected.txt
deleted file mode 100644
index 4c8d91e..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-PASS Missing arguments
-PASS Non-Module arguments
-PASS Branding
-PASS Empty module
-PASS Empty module: array caching
-PASS Custom sections
-PASS Custom sections with surrogate pairs
-FAIL Custom sections with U+FFFD assert_equals: expected 1 but got 0
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.js
deleted file mode 100644
index 58ac63b..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.js
+++ /dev/null
@@ -1,162 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-
-function assert_ArrayBuffer(buffer, expected) {
- assert_equals(Object.getPrototypeOf(buffer), ArrayBuffer.prototype, "Prototype");
- assert_true(Object.isExtensible(buffer), "isExtensible");
- assert_array_equals(new Uint8Array(buffer), expected);
-}
-
-function assert_sections(sections, expected) {
- assert_true(Array.isArray(sections), "Should be array");
- assert_equals(Object.getPrototypeOf(sections), Array.prototype, "Prototype");
- assert_true(Object.isExtensible(sections), "isExtensible");
-
- assert_equals(sections.length, expected.length);
- for (let i = 0; i < expected.length; ++i) {
- assert_ArrayBuffer(sections[i], expected[i]);
- }
-}
-
-let emptyModuleBinary;
-setup(() => {
- emptyModuleBinary = new WasmModuleBuilder().toBuffer();
-});
-
-test(() => {
- assert_throws(new TypeError(), () => WebAssembly.Module.customSections());
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_throws(new TypeError(), () => WebAssembly.Module.customSections(module));
-}, "Missing arguments");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => WebAssembly.Module.customSections(argument, ""),
- `customSections(${format_value(argument)})`);
- }
-}, "Non-Module arguments");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const fn = WebAssembly.Module.customSections;
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const thisValue of thisValues) {
- assert_sections(fn.call(thisValue, module, ""), []);
- }
-}, "Branding");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_sections(WebAssembly.Module.customSections(module, ""), []);
-}, "Empty module");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_not_equals(WebAssembly.Module.customSections(module, ""),
- WebAssembly.Module.customSections(module, ""));
-}, "Empty module: array caching");
-
-test(() => {
- const bytes1 = [87, 101, 98, 65, 115, 115, 101, 109, 98, 108, 121];
- const bytes2 = [74, 83, 65, 80, 73];
-
- const binary = new Binary;
- binary.emit_section(kUnknownSectionCode, section => {
- section.emit_string("name");
- section.emit_bytes(bytes1);
- });
- binary.emit_section(kUnknownSectionCode, section => {
- section.emit_string("name");
- section.emit_bytes(bytes2);
- });
- binary.emit_section(kUnknownSectionCode, section => {
- section.emit_string("foo");
- section.emit_bytes(bytes1);
- });
-
- const builder = new WasmModuleBuilder();
- builder.addExplicitSection(binary);
- const buffer = builder.toBuffer()
- const module = new WebAssembly.Module(buffer);
-
- assert_sections(WebAssembly.Module.customSections(module, "name"), [
- bytes1,
- bytes2,
- ])
-
- assert_sections(WebAssembly.Module.customSections(module, "foo"), [
- bytes1,
- ])
-
- assert_sections(WebAssembly.Module.customSections(module, ""), [])
- assert_sections(WebAssembly.Module.customSections(module, "\0"), [])
- assert_sections(WebAssembly.Module.customSections(module, "name\0"), [])
- assert_sections(WebAssembly.Module.customSections(module, "foo\0"), [])
-}, "Custom sections");
-
-test(() => {
- const bytes = [87, 101, 98, 65, 115, 115, 101, 109, 98, 108, 121];
- const name = "yee\uD801\uDC37eey"
-
- const binary = new Binary;
- binary.emit_section(kUnknownSectionCode, section => {
- section.emit_string(name);
- section.emit_bytes(bytes);
- });
-
- const builder = new WasmModuleBuilder();
- builder.addExplicitSection(binary);
- const buffer = builder.toBuffer();
- const module = new WebAssembly.Module(buffer);
-
- assert_sections(WebAssembly.Module.customSections(module, name), [
- bytes,
- ]);
- assert_sections(WebAssembly.Module.customSections(module, "yee\uFFFDeey"), []);
- assert_sections(WebAssembly.Module.customSections(module, "yee\uFFFD\uFFFDeey"), []);
-}, "Custom sections with surrogate pairs");
-
-test(() => {
- const bytes = [87, 101, 98, 65, 115, 115, 101, 109, 98, 108, 121];
-
- const binary = new Binary;
- binary.emit_section(kUnknownSectionCode, section => {
- section.emit_string("na\uFFFDme");
- section.emit_bytes(bytes);
- });
-
- const builder = new WasmModuleBuilder();
- builder.addExplicitSection(binary);
- const buffer = builder.toBuffer();
- const module = new WebAssembly.Module(buffer);
-
- assert_sections(WebAssembly.Module.customSections(module, "name"), []);
- assert_sections(WebAssembly.Module.customSections(module, "na\uFFFDme"), [
- bytes,
- ]);
- assert_sections(WebAssembly.Module.customSections(module, "na\uDC01me"), [
- bytes,
- ]);
-}, "Custom sections with U+FFFD");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker-expected.txt
deleted file mode 100644
index 4c8d91e..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker-expected.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-PASS Missing arguments
-PASS Non-Module arguments
-PASS Branding
-PASS Empty module
-PASS Empty module: array caching
-PASS Custom sections
-PASS Custom sections with surrogate pairs
-FAIL Custom sections with U+FFFD assert_equals: expected 1 but got 0
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any-expected.txt
deleted file mode 100644
index da4156c..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-
-PASS Missing arguments
-PASS Non-Module arguments
-PASS Branding
-PASS Empty module
-PASS Empty module: array caching
-FAIL exports WebAssembly.Module doesn't parse at byte 87: 3th Export isn't immutable, named 'global' (evaluating 'new WebAssembly.Module(buffer)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js
deleted file mode 100644
index e63a885..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js
+++ /dev/null
@@ -1,130 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-
-let emptyModuleBinary;
-setup(() => {
- emptyModuleBinary = new WasmModuleBuilder().toBuffer();
-});
-
-function assert_ModuleExportDescriptor(export_, expected) {
- assert_equals(Object.getPrototypeOf(export_), Object.prototype, "Prototype");
- assert_true(Object.isExtensible(export_), "isExtensible");
-
- const name = Object.getOwnPropertyDescriptor(export_, "name");
- assert_true(name.writable, "name: writable");
- assert_true(name.enumerable, "name: enumerable");
- assert_true(name.configurable, "name: configurable");
- assert_equals(name.value, expected.name);
-
- const kind = Object.getOwnPropertyDescriptor(export_, "kind");
- assert_true(kind.writable, "kind: writable");
- assert_true(kind.enumerable, "kind: enumerable");
- assert_true(kind.configurable, "kind: configurable");
- assert_equals(kind.value, expected.kind);
-}
-
-function assert_exports(exports, expected) {
- assert_true(Array.isArray(exports), "Should be array");
- assert_equals(Object.getPrototypeOf(exports), Array.prototype, "Prototype");
- assert_true(Object.isExtensible(exports), "isExtensible");
-
- assert_equals(exports.length, expected.length);
- for (let i = 0; i < expected.length; ++i) {
- assert_ModuleExportDescriptor(exports[i], expected[i]);
- }
-}
-
-test(() => {
- assert_throws(new TypeError(), () => WebAssembly.Module.exports());
-}, "Missing arguments");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => WebAssembly.Module.exports(argument),
- `exports(${format_value(argument)})`);
- }
-}, "Non-Module arguments");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const fn = WebAssembly.Module.exports;
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const thisValue of thisValues) {
- assert_array_equals(fn.call(thisValue, module), []);
- }
-}, "Branding");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const exports = WebAssembly.Module.exports(module);
- assert_exports(exports, []);
-}, "Empty module");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_not_equals(WebAssembly.Module.exports(module), WebAssembly.Module.exports(module));
-}, "Empty module: array caching");
-
-test(() => {
- const builder = new WasmModuleBuilder();
-
- builder
- .addFunction("fn", kSig_v_v)
- .addBody([
- kExprEnd
- ])
- .exportFunc();
- builder
- .addFunction("fn2", kSig_v_v)
- .addBody([
- kExprEnd
- ])
- .exportFunc();
-
- builder.setFunctionTableLength(1);
- builder.addExportOfKind("table", kExternalTable, 0);
-
- builder.addGlobal(kWasmI32, true)
- .exportAs("global")
- .init = 7;
- builder.addGlobal(kWasmF64, true)
- .exportAs("global2")
- .init = 1.2;
-
- builder.addMemory(0, 256, true);
-
- const buffer = builder.toBuffer()
- const module = new WebAssembly.Module(buffer);
- const exports = WebAssembly.Module.exports(module);
- const expected = [
- { "kind": "function", "name": "fn" },
- { "kind": "function", "name": "fn2" },
- { "kind": "table", "name": "table" },
- { "kind": "global", "name": "global" },
- { "kind": "global", "name": "global2" },
- { "kind": "memory", "name": "memory" },
- ];
- assert_exports(exports, expected);
-}, "exports");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt
deleted file mode 100644
index da4156c..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker-expected.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-
-PASS Missing arguments
-PASS Non-Module arguments
-PASS Branding
-PASS Empty module
-PASS Empty module: array caching
-FAIL exports WebAssembly.Module doesn't parse at byte 87: 3th Export isn't immutable, named 'global' (evaluating 'new WebAssembly.Module(buffer)')
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any-expected.txt
deleted file mode 100644
index 4723e63..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-PASS Missing arguments
-PASS Non-Module arguments
-PASS Branding
-PASS Return type
-PASS Empty module
-PASS Empty module: array caching
-PASS imports
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.js
deleted file mode 100644
index 640da59..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.js
+++ /dev/null
@@ -1,120 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-
-function assert_ModuleImportDescriptor(import_, expected) {
- assert_equals(Object.getPrototypeOf(import_), Object.prototype, "Prototype");
- assert_true(Object.isExtensible(import_), "isExtensible");
-
- const module = Object.getOwnPropertyDescriptor(import_, "module");
- assert_true(module.writable, "module: writable");
- assert_true(module.enumerable, "module: enumerable");
- assert_true(module.configurable, "module: configurable");
- assert_equals(module.value, expected.module);
-
- const name = Object.getOwnPropertyDescriptor(import_, "name");
- assert_true(name.writable, "name: writable");
- assert_true(name.enumerable, "name: enumerable");
- assert_true(name.configurable, "name: configurable");
- assert_equals(name.value, expected.name);
-
- const kind = Object.getOwnPropertyDescriptor(import_, "kind");
- assert_true(kind.writable, "kind: writable");
- assert_true(kind.enumerable, "kind: enumerable");
- assert_true(kind.configurable, "kind: configurable");
- assert_equals(kind.value, expected.kind);
-}
-
-function assert_imports(imports, expected) {
- assert_true(Array.isArray(imports), "Should be array");
- assert_equals(Object.getPrototypeOf(imports), Array.prototype, "Prototype");
- assert_true(Object.isExtensible(imports), "isExtensible");
-
- assert_equals(imports.length, expected.length);
- for (let i = 0; i < expected.length; ++i) {
- assert_ModuleImportDescriptor(imports[i], expected[i]);
- }
-}
-
-let emptyModuleBinary;
-setup(() => {
- emptyModuleBinary = new WasmModuleBuilder().toBuffer();
-});
-
-test(() => {
- assert_throws(new TypeError(), () => WebAssembly.Module.imports());
-}, "Missing arguments");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => WebAssembly.Module.imports(argument),
- `imports(${format_value(argument)})`);
- }
-}, "Non-Module arguments");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const fn = WebAssembly.Module.imports;
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Module,
- WebAssembly.Module.prototype,
- ];
- for (const thisValue of thisValues) {
- assert_array_equals(fn.call(thisValue, module), []);
- }
-}, "Branding");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const imports = WebAssembly.Module.imports(module);
- assert_true(Array.isArray(imports));
-}, "Return type");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- const imports = WebAssembly.Module.imports(module);
- assert_imports(imports, []);
-}, "Empty module");
-
-test(() => {
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_not_equals(WebAssembly.Module.imports(module), WebAssembly.Module.imports(module));
-}, "Empty module: array caching");
-
-test(() => {
- const builder = new WasmModuleBuilder();
-
- builder.addImport("module", "fn", kSig_v_v);
- builder.addImportedGlobal("module", "global", kWasmI32);
- builder.addImportedMemory("module", "memory", 0, 128);
- builder.addImportedTable("module", "table", 0, 128);
-
- const buffer = builder.toBuffer()
- const module = new WebAssembly.Module(buffer);
- const imports = WebAssembly.Module.imports(module);
- const expected = [
- { "module": "module", "kind": "function", "name": "fn" },
- { "module": "module", "kind": "global", "name": "global" },
- { "module": "module", "kind": "memory", "name": "memory" },
- { "module": "module", "kind": "table", "name": "table" },
- ];
- assert_imports(imports, expected);
-}, "imports");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt
deleted file mode 100644
index 4723e63..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker-expected.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-
-PASS Missing arguments
-PASS Non-Module arguments
-PASS Branding
-PASS Return type
-PASS Empty module
-PASS Empty module: array caching
-PASS imports
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any-expected.txt
deleted file mode 100644
index b13e61e..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Module
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.js
deleted file mode 100644
index d9231a1..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.js
+++ /dev/null
@@ -1,9 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-
-test(() => {
- const emptyModuleBinary = new WasmModuleBuilder().toBuffer();
- const module = new WebAssembly.Module(emptyModuleBinary);
- assert_class_string(module, "WebAssembly.Module");
-}, "Object.prototype.toString on an Module");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt
deleted file mode 100644
index b13e61e..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Module
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/w3c-import.log
deleted file mode 100644
index e66a985..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/w3c-import.log
+++ /dev/null
@@ -1,21 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/constructor.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/customSections.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/exports.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/imports.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/module/toString.any.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/assertions.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/assertions.js
deleted file mode 100644
index dde2fd7..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/assertions.js
+++ /dev/null
@@ -1,11 +0,0 @@
-function assert_equal_to_array(table, expected, message) {
- assert_equals(table.length, expected.length, `${message}: length`);
- assert_throws(new RangeError(), () => table.get(-1), `${message}: table.get(-1)`);
- for (let i = 0; i < expected.length; ++i) {
- assert_equals(table.get(i), expected[i], `${message}: table.get(${i} of ${expected.length})`);
- }
- assert_throws(new RangeError(), () => table.get(expected.length),
- `${message}: table.get(${expected.length} of ${expected.length})`);
- assert_throws(new RangeError(), () => table.get(expected.length + 1),
- `${message}: table.get(${expected.length + 1} of ${expected.length})`);
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt
deleted file mode 100644
index a312505..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Calling
-PASS Empty descriptor
-PASS Invalid descriptor argument
-PASS Undefined initial value in descriptor
-PASS Undefined element value in descriptor
-PASS Out-of-range initial value in descriptor: NaN
-PASS Out-of-range maximum value in descriptor: NaN
-PASS Out-of-range initial value in descriptor: Infinity
-PASS Out-of-range maximum value in descriptor: Infinity
-PASS Out-of-range initial value in descriptor: -Infinity
-PASS Out-of-range maximum value in descriptor: -Infinity
-PASS Out-of-range initial value in descriptor: -1
-PASS Out-of-range maximum value in descriptor: -1
-PASS Out-of-range initial value in descriptor: 4294967296
-PASS Out-of-range maximum value in descriptor: 4294967296
-PASS Out-of-range initial value in descriptor: 68719476736
-PASS Out-of-range maximum value in descriptor: 68719476736
-PASS Initial value exceeds maximum
-PASS Basic (zero)
-PASS Basic (non-zero)
-PASS Proxy descriptor
-PASS Type conversion for descriptor.element
-PASS Order of evaluation for descriptor
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js
deleted file mode 100644
index e924bdb..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js
+++ /dev/null
@@ -1,173 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/assertions.js
-
-function assert_Table(actual, expected) {
- assert_equals(Object.getPrototypeOf(actual), WebAssembly.Table.prototype,
- "prototype");
- assert_true(Object.isExtensible(actual), "extensible");
-
- assert_equals(actual.length, expected.length, "length");
- for (let i = 0; i < expected.length; ++i) {
- assert_equals(actual.get(i), null, `actual.get(${i})`);
- }
-}
-
-test(() => {
- assert_function_name(WebAssembly.Table, "Table", "WebAssembly.Table");
-}, "name");
-
-test(() => {
- assert_function_length(WebAssembly.Table, 1, "WebAssembly.Table");
-}, "length");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Table());
-}, "No arguments");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 0 };
- assert_throws(new TypeError(), () => WebAssembly.Table(argument));
-}, "Calling");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Table({}));
-}, "Empty descriptor");
-
-test(() => {
- const invalidArguments = [
- undefined,
- null,
- false,
- true,
- "",
- "test",
- Symbol(),
- 1,
- NaN,
- {},
- ];
- for (const invalidArgument of invalidArguments) {
- assert_throws(new TypeError(),
- () => new WebAssembly.Table(invalidArgument),
- `new Table(${format_value(invalidArgument)})`);
- }
-}, "Invalid descriptor argument");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Table({ "element": "anyfunc", "initial": undefined }));
-}, "Undefined initial value in descriptor");
-
-test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Table({ "element": undefined, "initial": 0 }));
-}, "Undefined element value in descriptor");
-
-const outOfRangeValues = [
- NaN,
- Infinity,
- -Infinity,
- -1,
- 0x100000000,
- 0x1000000000,
-];
-
-for (const value of outOfRangeValues) {
- test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Table({ "element": "anyfunc", "initial": value }));
- }, `Out-of-range initial value in descriptor: ${format_value(value)}`);
-
- test(() => {
- assert_throws(new TypeError(), () => new WebAssembly.Table({ "element": "anyfunc", "initial": 0, "maximum": value }));
- }, `Out-of-range maximum value in descriptor: ${format_value(value)}`);
-}
-
-test(() => {
- assert_throws(new RangeError(), () => new WebAssembly.Table({ "element": "anyfunc", "initial": 10, "maximum": 9 }));
-}, "Initial value exceeds maximum");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 0 };
- const table = new WebAssembly.Table(argument);
- assert_Table(table, { "length": 0 });
-}, "Basic (zero)");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_Table(table, { "length": 5 });
-}, "Basic (non-zero)");
-
-test(() => {
- const proxy = new Proxy({}, {
- has(o, x) {
- assert_unreached(`Should not call [[HasProperty]] with ${x}`);
- },
- get(o, x) {
- switch (x) {
- case "element":
- return "anyfunc";
- case "initial":
- case "maximum":
- return 0;
- default:
- return undefined;
- }
- },
- });
- const table = new WebAssembly.Table(proxy);
- assert_Table(table, { "length": 0 });
-}, "Proxy descriptor");
-
-test(() => {
- const table = new WebAssembly.Table({
- "element": {
- toString() { return "anyfunc"; },
- },
- "initial": 1,
- });
- assert_Table(table, { "length": 1 });
-}, "Type conversion for descriptor.element");
-
-test(() => {
- const order = [];
-
- new WebAssembly.Table({
- get maximum() {
- order.push("maximum");
- return {
- valueOf() {
- order.push("maximum valueOf");
- return 1;
- },
- };
- },
-
- get initial() {
- order.push("initial");
- return {
- valueOf() {
- order.push("initial valueOf");
- return 1;
- },
- };
- },
-
- get element() {
- order.push("element");
- return {
- toString() {
- order.push("element toString");
- return "anyfunc";
- },
- };
- },
- });
-
- assert_array_equals(order, [
- "element",
- "element toString",
- "initial",
- "initial valueOf",
- "maximum",
- "maximum valueOf",
- ]);
-}, "Order of evaluation for descriptor");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt
deleted file mode 100644
index a312505..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker-expected.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-
-PASS name
-PASS length
-PASS No arguments
-PASS Calling
-PASS Empty descriptor
-PASS Invalid descriptor argument
-PASS Undefined initial value in descriptor
-PASS Undefined element value in descriptor
-PASS Out-of-range initial value in descriptor: NaN
-PASS Out-of-range maximum value in descriptor: NaN
-PASS Out-of-range initial value in descriptor: Infinity
-PASS Out-of-range maximum value in descriptor: Infinity
-PASS Out-of-range initial value in descriptor: -Infinity
-PASS Out-of-range maximum value in descriptor: -Infinity
-PASS Out-of-range initial value in descriptor: -1
-PASS Out-of-range maximum value in descriptor: -1
-PASS Out-of-range initial value in descriptor: 4294967296
-PASS Out-of-range maximum value in descriptor: 4294967296
-PASS Out-of-range initial value in descriptor: 68719476736
-PASS Out-of-range maximum value in descriptor: 68719476736
-PASS Initial value exceeds maximum
-PASS Basic (zero)
-PASS Basic (non-zero)
-PASS Proxy descriptor
-PASS Type conversion for descriptor.element
-PASS Order of evaluation for descriptor
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any-expected.txt
deleted file mode 100644
index dac3284..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any-expected.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-
-PASS Missing arguments: get
-PASS Branding: get
-PASS Missing arguments: set
-PASS Branding: set
-FAIL Basic assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Growing assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting out-of-bounds assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting non-function assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting non-wasm function assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting non-wasm arrow function assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-PASS Getting out-of-range argument: undefined
-PASS Setting out-of-range argument: undefined
-PASS Getting out-of-range argument: NaN
-PASS Setting out-of-range argument: NaN
-PASS Getting out-of-range argument: Infinity
-PASS Setting out-of-range argument: Infinity
-PASS Getting out-of-range argument: -Infinity
-PASS Setting out-of-range argument: -Infinity
-PASS Getting out-of-range argument: -1
-PASS Setting out-of-range argument: -1
-PASS Getting out-of-range argument: 4294967296
-PASS Setting out-of-range argument: 4294967296
-PASS Getting out-of-range argument: 68719476736
-PASS Setting out-of-range argument: 68719476736
-PASS Getting out-of-range argument: "0x100000000"
-PASS Setting out-of-range argument: "0x100000000"
-PASS Getting out-of-range argument: object "[object Object]"
-PASS Setting out-of-range argument: object "[object Object]"
-PASS Order of argument conversion
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.js
deleted file mode 100644
index 2bb43a9..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.js
+++ /dev/null
@@ -1,220 +0,0 @@
-// META: global=jsshell
-// META: script=/wasm/jsapi/wasm-constants.js
-// META: script=/wasm/jsapi/wasm-module-builder.js
-// META: script=assertions.js
-
-let functions;
-setup(() => {
- const builder = new WasmModuleBuilder();
-
- builder
- .addFunction("fn", kSig_v_d)
- .addBody([
- kExprEnd
- ])
- .exportFunc();
- builder
- .addFunction("fn2", kSig_v_v)
- .addBody([
- kExprEnd
- ])
- .exportFunc();
-
- const buffer = builder.toBuffer()
- const module = new WebAssembly.Module(buffer);
- const instance = new WebAssembly.Instance(module, {});
- functions = instance.exports;
-});
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_throws(new TypeError(), () => table.get());
-}, "Missing arguments: get");
-
-test(t => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Table,
- WebAssembly.Table.prototype,
- ];
-
- const argument = {
- valueOf: t.unreached_func("Should not touch the argument (valueOf)"),
- toString: t.unreached_func("Should not touch the argument (toString)"),
- };
-
- const fn = WebAssembly.Table.prototype.get;
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => fn.call(thisValue, argument), `this=${format_value(thisValue)}`);
- }
-}, "Branding: get");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_throws(new TypeError(), () => table.set());
- assert_throws(new TypeError(), () => table.set(0));
-}, "Missing arguments: set");
-
-test(t => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Table,
- WebAssembly.Table.prototype,
- ];
-
- const argument = {
- valueOf: t.unreached_func("Should not touch the argument (valueOf)"),
- toString: t.unreached_func("Should not touch the argument (toString)"),
- };
-
- const fn = WebAssembly.Table.prototype.set;
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => fn.call(thisValue, argument, null), `this=${format_value(thisValue)}`);
- }
-}, "Branding: set");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, [null, null, null, null, null]);
-
- const {fn, fn2} = functions;
-
- assert_equals(table.set(0, fn), undefined, "set() returns undefined.");
- table.set(2, fn2);
- table.set(4, fn);
-
- assert_equal_to_array(table, [fn, null, fn2, null, fn]);
-
- table.set(0, null);
- assert_equal_to_array(table, [null, null, fn2, null, fn]);
-}, "Basic");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, [null, null, null, null, null]);
-
- const {fn, fn2} = functions;
-
- table.set(0, fn);
- table.set(2, fn2);
- table.set(4, fn);
-
- assert_equal_to_array(table, [fn, null, fn2, null, fn]);
-
- table.grow(4);
-
- assert_equal_to_array(table, [fn, null, fn2, null, fn, null, null, null, null]);
-}, "Growing");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, [null, null, null, null, null]);
-
- const {fn} = functions;
-
- assert_throws(new RangeError(), () => table.set(-1, fn));
- assert_throws(new RangeError(), () => table.set(5, fn));
- assert_equal_to_array(table, [null, null, null, null, null]);
-}, "Setting out-of-bounds");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, [null]);
-
- const invalidArguments = [
- undefined,
- true,
- false,
- "test",
- Symbol(),
- 7,
- NaN,
- {},
- ];
- for (const argument of invalidArguments) {
- assert_throws(new TypeError(), () => table.set(0, argument),
- `set(${format_value(argument)})`);
- }
- assert_equal_to_array(table, [null]);
-}, "Setting non-function");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, [null]);
-
- const fn = function() {};
- assert_throws(new TypeError(), () => table.set(0, fn));
- assert_equal_to_array(table, [null]);
-}, "Setting non-wasm function");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, [null]);
-
- const fn = () => {};
- assert_throws(new TypeError(), () => table.set(0, fn));
- assert_equal_to_array(table, [null]);
-}, "Setting non-wasm arrow function");
-
-const outOfRangeValues = [
- undefined,
- NaN,
- Infinity,
- -Infinity,
- -1,
- 0x100000000,
- 0x1000000000,
- "0x100000000",
- { valueOf() { return 0x100000000; } },
-];
-
-for (const value of outOfRangeValues) {
- test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- assert_throws(new TypeError(), () => table.get(value));
- }, `Getting out-of-range argument: ${format_value(value)}`);
-
- test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- assert_throws(new TypeError(), () => table.set(value, null));
- }, `Setting out-of-range argument: ${format_value(value)}`);
-}
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- let called = 0;
- const value = {
- valueOf() {
- called++;
- return 0;
- },
- };
- assert_throws(new TypeError(), () => table.set(value, {}));
- assert_equals(called, 1);
-}, "Order of argument conversion");
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker-expected.txt
deleted file mode 100644
index dac3284..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker-expected.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-
-PASS Missing arguments: get
-PASS Branding: get
-PASS Missing arguments: set
-PASS Branding: set
-FAIL Basic assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Growing assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting out-of-bounds assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting non-function assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting non-wasm function assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Setting non-wasm arrow function assert_throws: undefined: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-PASS Getting out-of-range argument: undefined
-PASS Setting out-of-range argument: undefined
-PASS Getting out-of-range argument: NaN
-PASS Setting out-of-range argument: NaN
-PASS Getting out-of-range argument: Infinity
-PASS Setting out-of-range argument: Infinity
-PASS Getting out-of-range argument: -Infinity
-PASS Setting out-of-range argument: -Infinity
-PASS Getting out-of-range argument: -1
-PASS Setting out-of-range argument: -1
-PASS Getting out-of-range argument: 4294967296
-PASS Setting out-of-range argument: 4294967296
-PASS Getting out-of-range argument: 68719476736
-PASS Setting out-of-range argument: 68719476736
-PASS Getting out-of-range argument: "0x100000000"
-PASS Setting out-of-range argument: "0x100000000"
-PASS Getting out-of-range argument: object "[object Object]"
-PASS Setting out-of-range argument: object "[object Object]"
-PASS Order of argument conversion
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any-expected.txt
deleted file mode 100644
index 60d21e0..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-
-PASS Missing arguments
-PASS Branding
-FAIL Basic assert_throws: before: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Reached maximum assert_throws: before: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Exceeded maximum assert_throws: before: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-PASS Out-of-range argument: undefined
-PASS Out-of-range argument: NaN
-PASS Out-of-range argument: Infinity
-PASS Out-of-range argument: -Infinity
-PASS Out-of-range argument: -1
-PASS Out-of-range argument: 4294967296
-PASS Out-of-range argument: 68719476736
-PASS Out-of-range argument: "0x100000000"
-PASS Out-of-range argument: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.js
deleted file mode 100644
index d3efb51..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.js
+++ /dev/null
@@ -1,86 +0,0 @@
-// META: global=jsshell
-// META: script=assertions.js
-
-function nulls(n) {
- return Array(n).fill(null);
-}
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_throws(new TypeError(), () => table.grow());
-}, "Missing arguments");
-
-test(t => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Table,
- WebAssembly.Table.prototype,
- ];
-
- const argument = {
- valueOf: t.unreached_func("Should not touch the argument (valueOf)"),
- toString: t.unreached_func("Should not touch the argument (toString)"),
- };
-
- const fn = WebAssembly.Table.prototype.grow;
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => fn.call(thisValue, argument), `this=${format_value(thisValue)}`);
- }
-}, "Branding");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 5 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, nulls(5), "before");
-
- const result = table.grow(3);
- assert_equals(result, 5);
- assert_equal_to_array(table, nulls(8), "after");
-}, "Basic");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 3, "maximum": 5 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, nulls(3), "before");
-
- const result = table.grow(2);
- assert_equals(result, 3);
- assert_equal_to_array(table, nulls(5), "after");
-}, "Reached maximum");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 2, "maximum": 5 };
- const table = new WebAssembly.Table(argument);
- assert_equal_to_array(table, nulls(2), "before");
-
- assert_throws(new RangeError(), () => table.grow(4));
- assert_equal_to_array(table, nulls(2), "after");
-}, "Exceeded maximum");
-
-const outOfRangeValues = [
- undefined,
- NaN,
- Infinity,
- -Infinity,
- -1,
- 0x100000000,
- 0x1000000000,
- "0x100000000",
- { valueOf() { return 0x100000000; } },
-];
-
-for (const value of outOfRangeValues) {
- test(() => {
- const argument = { "element": "anyfunc", "initial": 1 };
- const table = new WebAssembly.Table(argument);
- assert_throws(new TypeError(), () => table.grow(value));
- }, `Out-of-range argument: ${format_value(value)}`);
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker-expected.txt
deleted file mode 100644
index 60d21e0..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker-expected.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-
-PASS Missing arguments
-PASS Branding
-FAIL Basic assert_throws: before: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Reached maximum assert_throws: before: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-FAIL Exceeded maximum assert_throws: before: table.get(-1) function "() => table.get(-1)" threw object "TypeError: Expect an integer argument in the range: [0, 2^32 - 1]" ("TypeError") expected object "RangeError" ("RangeError")
-PASS Out-of-range argument: undefined
-PASS Out-of-range argument: NaN
-PASS Out-of-range argument: Infinity
-PASS Out-of-range argument: -Infinity
-PASS Out-of-range argument: -1
-PASS Out-of-range argument: 4294967296
-PASS Out-of-range argument: 68719476736
-PASS Out-of-range argument: "0x100000000"
-PASS Out-of-range argument: object "[object Object]"
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any-expected.txt
deleted file mode 100644
index 670f281..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-PASS Branding
-PASS Setting (sloppy mode)
-PASS Setting (strict mode)
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.js
deleted file mode 100644
index a6a9661..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.js
+++ /dev/null
@@ -1,46 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const thisValues = [
- undefined,
- null,
- true,
- "",
- Symbol(),
- 1,
- {},
- WebAssembly.Table,
- WebAssembly.Table.prototype,
- ];
-
- const desc = Object.getOwnPropertyDescriptor(WebAssembly.Table.prototype, "length");
- assert_equals(typeof desc, "object");
-
- const getter = desc.get;
- assert_equals(typeof getter, "function");
-
- assert_equals(typeof desc.set, "undefined");
-
- for (const thisValue of thisValues) {
- assert_throws(new TypeError(), () => getter.call(thisValue), `this=${format_value(thisValue)}`);
- }
-}, "Branding");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 2 };
- const table = new WebAssembly.Table(argument);
- assert_equals(table.length, 2, "Initial length");
- table.length = 4;
- assert_equals(table.length, 2, "Should not change the length");
-}, "Setting (sloppy mode)");
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 2 };
- const table = new WebAssembly.Table(argument);
- assert_equals(table.length, 2, "Initial length");
- assert_throws(new TypeError(), () => {
- "use strict";
- table.length = 4;
- });
- assert_equals(table.length, 2, "Should not change the length");
-}, "Setting (strict mode)");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker-expected.txt
deleted file mode 100644
index 670f281..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker-expected.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-
-PASS Branding
-PASS Setting (sloppy mode)
-PASS Setting (strict mode)
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any-expected.txt
deleted file mode 100644
index 923d633..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Table
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js
deleted file mode 100644
index e576477..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js
+++ /dev/null
@@ -1,7 +0,0 @@
-// META: global=jsshell
-
-test(() => {
- const argument = { "element": "anyfunc", "initial": 0 };
- const table = new WebAssembly.Table(argument);
- assert_class_string(table, "WebAssembly.Table");
-}, "Object.prototype.toString on an Table");
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt
deleted file mode 100644
index 923d633..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker-expected.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-
-PASS Object.prototype.toString on an Table
-
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html
deleted file mode 100644
index 2382913..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.worker.html
+++ /dev/null
@@ -1 +0,0 @@
-<!-- This file is required for WebKit test infrastructure to run the templated test -->
\ No newline at end of file
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/w3c-import.log
deleted file mode 100644
index 6a9ecce..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/w3c-import.log
+++ /dev/null
@@ -1,22 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/assertions.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/constructor.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/get-set.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/grow.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/length.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/table/toString.any.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/w3c-import.log b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/w3c-import.log
deleted file mode 100644
index c4c117f..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/w3c-import.log
+++ /dev/null
@@ -1,21 +0,0 @@
-The tests in this directory were imported from the W3C repository.
-Do NOT modify these tests directly in WebKit.
-Instead, create a pull request on the WPT github:
- https://github.com/web-platform-tests/wpt
-
-Then run the Tools/Scripts/import-w3c-tests in WebKit to reimport
-
-Do NOT modify or remove this file.
-
-------------------------------------------------------------------------
-Properties requiring vendor prefixes:
-None
-Property values requiring vendor prefixes:
-None
-------------------------------------------------------------------------
-List of files:
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/assertions.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/bad-imports.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/interface.any.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-constants.js
-/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-module-builder.js
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-constants.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-constants.js
deleted file mode 100644
index f056f9c..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-constants.js
+++ /dev/null
@@ -1,374 +0,0 @@
-// Copyright 2015 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Flags: --expose-wasm
-
-function bytes() {
- var buffer = new ArrayBuffer(arguments.length);
- var view = new Uint8Array(buffer);
- for (var i = 0; i < arguments.length; i++) {
- var val = arguments[i];
- if ((typeof val) == "string") val = val.charCodeAt(0);
- view[i] = val | 0;
- }
- return buffer;
-}
-
-// Header declaration constants
-var kWasmH0 = 0;
-var kWasmH1 = 0x61;
-var kWasmH2 = 0x73;
-var kWasmH3 = 0x6d;
-
-var kWasmV0 = 1;
-var kWasmV1 = 0;
-var kWasmV2 = 0;
-var kWasmV3 = 0;
-
-var kHeaderSize = 8;
-var kPageSize = 65536;
-
-function bytesWithHeader() {
- var buffer = new ArrayBuffer(kHeaderSize + arguments.length);
- var view = new Uint8Array(buffer);
- view[0] = kWasmH0;
- view[1] = kWasmH1;
- view[2] = kWasmH2;
- view[3] = kWasmH3;
- view[4] = kWasmV0;
- view[5] = kWasmV1;
- view[6] = kWasmV2;
- view[7] = kWasmV3;
- for (var i = 0; i < arguments.length; i++) {
- var val = arguments[i];
- if ((typeof val) == "string") val = val.charCodeAt(0);
- view[kHeaderSize + i] = val | 0;
- }
- return buffer;
-}
-
-let kDeclNoLocals = 0;
-
-// Section declaration constants
-let kUnknownSectionCode = 0;
-let kTypeSectionCode = 1; // Function signature declarations
-let kImportSectionCode = 2; // Import declarations
-let kFunctionSectionCode = 3; // Function declarations
-let kTableSectionCode = 4; // Indirect function table and other tables
-let kMemorySectionCode = 5; // Memory attributes
-let kGlobalSectionCode = 6; // Global declarations
-let kExportSectionCode = 7; // Exports
-let kStartSectionCode = 8; // Start function declaration
-let kElementSectionCode = 9; // Elements section
-let kCodeSectionCode = 10; // Function code
-let kDataSectionCode = 11; // Data segments
-let kNameSectionCode = 12; // Name section (encoded as string)
-
-let kWasmFunctionTypeForm = 0x60;
-let kWasmAnyFunctionTypeForm = 0x70;
-
-let kResizableMaximumFlag = 1;
-
-// Function declaration flags
-let kDeclFunctionName = 0x01;
-let kDeclFunctionImport = 0x02;
-let kDeclFunctionLocals = 0x04;
-let kDeclFunctionExport = 0x08;
-
-// Local types
-let kWasmStmt = 0x40;
-let kWasmI32 = 0x7f;
-let kWasmI64 = 0x7e;
-let kWasmF32 = 0x7d;
-let kWasmF64 = 0x7c;
-let kWasmS128 = 0x7b;
-
-let kExternalFunction = 0;
-let kExternalTable = 1;
-let kExternalMemory = 2;
-let kExternalGlobal = 3;
-
-let kTableZero = 0;
-let kMemoryZero = 0;
-
-// Useful signatures
-let kSig_i_i = makeSig([kWasmI32], [kWasmI32]);
-let kSig_l_l = makeSig([kWasmI64], [kWasmI64]);
-let kSig_i_l = makeSig([kWasmI64], [kWasmI32]);
-let kSig_i_ii = makeSig([kWasmI32, kWasmI32], [kWasmI32]);
-let kSig_i_iii = makeSig([kWasmI32, kWasmI32, kWasmI32], [kWasmI32]);
-let kSig_d_dd = makeSig([kWasmF64, kWasmF64], [kWasmF64]);
-let kSig_l_ll = makeSig([kWasmI64, kWasmI64], [kWasmI64]);
-let kSig_i_dd = makeSig([kWasmF64, kWasmF64], [kWasmI32]);
-let kSig_v_v = makeSig([], []);
-let kSig_i_v = makeSig([], [kWasmI32]);
-let kSig_l_v = makeSig([], [kWasmI64]);
-let kSig_f_v = makeSig([], [kWasmF64]);
-let kSig_d_v = makeSig([], [kWasmF64]);
-let kSig_v_i = makeSig([kWasmI32], []);
-let kSig_v_ii = makeSig([kWasmI32, kWasmI32], []);
-let kSig_v_iii = makeSig([kWasmI32, kWasmI32, kWasmI32], []);
-let kSig_v_l = makeSig([kWasmI64], []);
-let kSig_v_d = makeSig([kWasmF64], []);
-let kSig_v_dd = makeSig([kWasmF64, kWasmF64], []);
-let kSig_v_ddi = makeSig([kWasmF64, kWasmF64, kWasmI32], []);
-let kSig_s_v = makeSig([], [kWasmS128]);
-
-function makeSig(params, results) {
- return {params: params, results: results};
-}
-
-function makeSig_v_x(x) {
- return makeSig([x], []);
-}
-
-function makeSig_v_xx(x) {
- return makeSig([x, x], []);
-}
-
-function makeSig_r_v(r) {
- return makeSig([], [r]);
-}
-
-function makeSig_r_x(r, x) {
- return makeSig([x], [r]);
-}
-
-function makeSig_r_xx(r, x) {
- return makeSig([x, x], [r]);
-}
-
-// Opcodes
-let kExprUnreachable = 0x00;
-let kExprNop = 0x01;
-let kExprBlock = 0x02;
-let kExprLoop = 0x03;
-let kExprIf = 0x04;
-let kExprElse = 0x05;
-let kExprTry = 0x06;
-let kExprCatch = 0x07;
-let kExprThrow = 0x08;
-let kExprEnd = 0x0b;
-let kExprBr = 0x0c;
-let kExprBrIf = 0x0d;
-let kExprBrTable = 0x0e;
-let kExprReturn = 0x0f;
-let kExprCallFunction = 0x10;
-let kExprCallIndirect = 0x11;
-let kExprDrop = 0x1a;
-let kExprSelect = 0x1b;
-let kExprGetLocal = 0x20;
-let kExprSetLocal = 0x21;
-let kExprTeeLocal = 0x22;
-let kExprGetGlobal = 0x23;
-let kExprSetGlobal = 0x24;
-let kExprI32Const = 0x41;
-let kExprI64Const = 0x42;
-let kExprF32Const = 0x43;
-let kExprF64Const = 0x44;
-let kExprI32LoadMem = 0x28;
-let kExprI64LoadMem = 0x29;
-let kExprF32LoadMem = 0x2a;
-let kExprF64LoadMem = 0x2b;
-let kExprI32LoadMem8S = 0x2c;
-let kExprI32LoadMem8U = 0x2d;
-let kExprI32LoadMem16S = 0x2e;
-let kExprI32LoadMem16U = 0x2f;
-let kExprI64LoadMem8S = 0x30;
-let kExprI64LoadMem8U = 0x31;
-let kExprI64LoadMem16S = 0x32;
-let kExprI64LoadMem16U = 0x33;
-let kExprI64LoadMem32S = 0x34;
-let kExprI64LoadMem32U = 0x35;
-let kExprI32StoreMem = 0x36;
-let kExprI64StoreMem = 0x37;
-let kExprF32StoreMem = 0x38;
-let kExprF64StoreMem = 0x39;
-let kExprI32StoreMem8 = 0x3a;
-let kExprI32StoreMem16 = 0x3b;
-let kExprI64StoreMem8 = 0x3c;
-let kExprI64StoreMem16 = 0x3d;
-let kExprI64StoreMem32 = 0x3e;
-let kExprMemorySize = 0x3f;
-let kExprGrowMemory = 0x40;
-let kExprI32Eqz = 0x45;
-let kExprI32Eq = 0x46;
-let kExprI32Ne = 0x47;
-let kExprI32LtS = 0x48;
-let kExprI32LtU = 0x49;
-let kExprI32GtS = 0x4a;
-let kExprI32GtU = 0x4b;
-let kExprI32LeS = 0x4c;
-let kExprI32LeU = 0x4d;
-let kExprI32GeS = 0x4e;
-let kExprI32GeU = 0x4f;
-let kExprI64Eqz = 0x50;
-let kExprI64Eq = 0x51;
-let kExprI64Ne = 0x52;
-let kExprI64LtS = 0x53;
-let kExprI64LtU = 0x54;
-let kExprI64GtS = 0x55;
-let kExprI64GtU = 0x56;
-let kExprI64LeS = 0x57;
-let kExprI64LeU = 0x58;
-let kExprI64GeS = 0x59;
-let kExprI64GeU = 0x5a;
-let kExprF32Eq = 0x5b;
-let kExprF32Ne = 0x5c;
-let kExprF32Lt = 0x5d;
-let kExprF32Gt = 0x5e;
-let kExprF32Le = 0x5f;
-let kExprF32Ge = 0x60;
-let kExprF64Eq = 0x61;
-let kExprF64Ne = 0x62;
-let kExprF64Lt = 0x63;
-let kExprF64Gt = 0x64;
-let kExprF64Le = 0x65;
-let kExprF64Ge = 0x66;
-let kExprI32Clz = 0x67;
-let kExprI32Ctz = 0x68;
-let kExprI32Popcnt = 0x69;
-let kExprI32Add = 0x6a;
-let kExprI32Sub = 0x6b;
-let kExprI32Mul = 0x6c;
-let kExprI32DivS = 0x6d;
-let kExprI32DivU = 0x6e;
-let kExprI32RemS = 0x6f;
-let kExprI32RemU = 0x70;
-let kExprI32And = 0x71;
-let kExprI32Ior = 0x72;
-let kExprI32Xor = 0x73;
-let kExprI32Shl = 0x74;
-let kExprI32ShrS = 0x75;
-let kExprI32ShrU = 0x76;
-let kExprI32Rol = 0x77;
-let kExprI32Ror = 0x78;
-let kExprI64Clz = 0x79;
-let kExprI64Ctz = 0x7a;
-let kExprI64Popcnt = 0x7b;
-let kExprI64Add = 0x7c;
-let kExprI64Sub = 0x7d;
-let kExprI64Mul = 0x7e;
-let kExprI64DivS = 0x7f;
-let kExprI64DivU = 0x80;
-let kExprI64RemS = 0x81;
-let kExprI64RemU = 0x82;
-let kExprI64And = 0x83;
-let kExprI64Ior = 0x84;
-let kExprI64Xor = 0x85;
-let kExprI64Shl = 0x86;
-let kExprI64ShrS = 0x87;
-let kExprI64ShrU = 0x88;
-let kExprI64Rol = 0x89;
-let kExprI64Ror = 0x8a;
-let kExprF32Abs = 0x8b;
-let kExprF32Neg = 0x8c;
-let kExprF32Ceil = 0x8d;
-let kExprF32Floor = 0x8e;
-let kExprF32Trunc = 0x8f;
-let kExprF32NearestInt = 0x90;
-let kExprF32Sqrt = 0x91;
-let kExprF32Add = 0x92;
-let kExprF32Sub = 0x93;
-let kExprF32Mul = 0x94;
-let kExprF32Div = 0x95;
-let kExprF32Min = 0x96;
-let kExprF32Max = 0x97;
-let kExprF32CopySign = 0x98;
-let kExprF64Abs = 0x99;
-let kExprF64Neg = 0x9a;
-let kExprF64Ceil = 0x9b;
-let kExprF64Floor = 0x9c;
-let kExprF64Trunc = 0x9d;
-let kExprF64NearestInt = 0x9e;
-let kExprF64Sqrt = 0x9f;
-let kExprF64Add = 0xa0;
-let kExprF64Sub = 0xa1;
-let kExprF64Mul = 0xa2;
-let kExprF64Div = 0xa3;
-let kExprF64Min = 0xa4;
-let kExprF64Max = 0xa5;
-let kExprF64CopySign = 0xa6;
-let kExprI32ConvertI64 = 0xa7;
-let kExprI32SConvertF32 = 0xa8;
-let kExprI32UConvertF32 = 0xa9;
-let kExprI32SConvertF64 = 0xaa;
-let kExprI32UConvertF64 = 0xab;
-let kExprI64SConvertI32 = 0xac;
-let kExprI64UConvertI32 = 0xad;
-let kExprI64SConvertF32 = 0xae;
-let kExprI64UConvertF32 = 0xaf;
-let kExprI64SConvertF64 = 0xb0;
-let kExprI64UConvertF64 = 0xb1;
-let kExprF32SConvertI32 = 0xb2;
-let kExprF32UConvertI32 = 0xb3;
-let kExprF32SConvertI64 = 0xb4;
-let kExprF32UConvertI64 = 0xb5;
-let kExprF32ConvertF64 = 0xb6;
-let kExprF64SConvertI32 = 0xb7;
-let kExprF64UConvertI32 = 0xb8;
-let kExprF64SConvertI64 = 0xb9;
-let kExprF64UConvertI64 = 0xba;
-let kExprF64ConvertF32 = 0xbb;
-let kExprI32ReinterpretF32 = 0xbc;
-let kExprI64ReinterpretF64 = 0xbd;
-let kExprF32ReinterpretI32 = 0xbe;
-let kExprF64ReinterpretI64 = 0xbf;
-
-let kTrapUnreachable = 0;
-let kTrapMemOutOfBounds = 1;
-let kTrapDivByZero = 2;
-let kTrapDivUnrepresentable = 3;
-let kTrapRemByZero = 4;
-let kTrapFloatUnrepresentable = 5;
-let kTrapFuncInvalid = 6;
-let kTrapFuncSigMismatch = 7;
-let kTrapInvalidIndex = 8;
-
-let kTrapMsgs = [
- "unreachable",
- "memory access out of bounds",
- "divide by zero",
- "divide result unrepresentable",
- "remainder by zero",
- "integer result unrepresentable",
- "invalid function",
- "function signature mismatch",
- "invalid index into function table"
-];
-
-function assertTraps(trap, code) {
- var threwException = true;
- try {
- if (typeof code === 'function') {
- code();
- } else {
- eval(code);
- }
- threwException = false;
- } catch (e) {
- assertEquals("object", typeof e);
- assertEquals(kTrapMsgs[trap], e.message);
- // Success.
- return;
- }
- throw new MjsUnitAssertionError("Did not trap, expected: " + kTrapMsgs[trap]);
-}
-
-function assertWasmThrows(value, code) {
- assertEquals("number", typeof(value));
- try {
- if (typeof code === 'function') {
- code();
- } else {
- eval(code);
- }
- } catch (e) {
- assertEquals("number", typeof e);
- assertEquals(value, e);
- // Success.
- return;
- }
- throw new MjsUnitAssertionError("Did not throw at all, expected: " + value);
-}
diff --git a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-module-builder.js b/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-module-builder.js
deleted file mode 100644
index 6e9284e..0000000
--- a/LayoutTests/imported/w3c/web-platform-tests/wasm/jsapi/wasm-module-builder.js
+++ /dev/null
@@ -1,555 +0,0 @@
-// Copyright 2016 the V8 project authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Used for encoding f32 and double constants to bits.
-let __buffer = new ArrayBuffer(8);
-let byte_view = new Int8Array(__buffer);
-let f32_view = new Float32Array(__buffer);
-let f64_view = new Float64Array(__buffer);
-
-class Binary extends Array {
- emit_u8(val) {
- this.push(val);
- }
-
- emit_u16(val) {
- this.push(val & 0xff);
- this.push((val >> 8) & 0xff);
- }
-
- emit_u32(val) {
- this.push(val & 0xff);
- this.push((val >> 8) & 0xff);
- this.push((val >> 16) & 0xff);
- this.push((val >> 24) & 0xff);
- }
-
- emit_u32v(val) {
- while (true) {
- let v = val & 0xff;
- val = val >>> 7;
- if (val == 0) {
- this.push(v);
- break;
- }
- this.push(v | 0x80);
- }
- }
-
- emit_bytes(data) {
- for (let i = 0; i < data.length; i++) {
- this.push(data[i] & 0xff);
- }
- }
-
- emit_string(string) {
- // When testing illegal names, we pass a byte array directly.
- if (string instanceof Array) {
- this.emit_u32v(string.length);
- this.emit_bytes(string);
- return;
- }
-
- // This is the hacky way to convert a JavaScript string to a UTF8 encoded
- // string only containing single-byte characters.
- let string_utf8 = unescape(encodeURIComponent(string));
- this.emit_u32v(string_utf8.length);
- for (let i = 0; i < string_utf8.length; i++) {
- this.emit_u8(string_utf8.charCodeAt(i));
- }
- }
-
- emit_header() {
- this.push(kWasmH0, kWasmH1, kWasmH2, kWasmH3,
- kWasmV0, kWasmV1, kWasmV2, kWasmV3);
- }
-
- emit_section(section_code, content_generator) {
- // Emit section name.
- this.emit_u8(section_code);
- // Emit the section to a temporary buffer: its full length isn't know yet.
- let section = new Binary;
- content_generator(section);
- // Emit section length.
- this.emit_u32v(section.length);
- // Copy the temporary buffer.
- this.push(...section);
- }
-}
-
-class WasmFunctionBuilder {
- constructor(module, name, type_index) {
- this.module = module;
- this.name = name;
- this.type_index = type_index;
- this.body = [];
- }
-
- exportAs(name) {
- this.module.addExport(name, this.index);
- return this;
- }
-
- exportFunc() {
- this.exportAs(this.name);
- return this;
- }
-
- addBody(body) {
- this.body = body;
- return this;
- }
-
- addLocals(locals) {
- this.locals = locals;
- return this;
- }
-
- end() {
- return this.module;
- }
-}
-
-class WasmGlobalBuilder {
- constructor(module, type, mutable) {
- this.module = module;
- this.type = type;
- this.mutable = mutable;
- this.init = 0;
- }
-
- exportAs(name) {
- this.module.exports.push({name: name, kind: kExternalGlobal,
- index: this.index});
- return this;
- }
-}
-
-class WasmModuleBuilder {
- constructor() {
- this.types = [];
- this.imports = [];
- this.exports = [];
- this.globals = [];
- this.functions = [];
- this.function_table = [];
- this.function_table_length = 0;
- this.function_table_inits = [];
- this.segments = [];
- this.explicit = [];
- this.num_imported_funcs = 0;
- this.num_imported_globals = 0;
- return this;
- }
-
- addStart(start_index) {
- this.start_index = start_index;
- return this;
- }
-
- addMemory(min, max, exp) {
- this.memory = {min: min, max: max, exp: exp};
- return this;
- }
-
- addExplicitSection(bytes) {
- this.explicit.push(bytes);
- return this;
- }
-
- addType(type) {
- // TODO: canonicalize types?
- this.types.push(type);
- return this.types.length - 1;
- }
-
- addGlobal(local_type, mutable) {
- let glob = new WasmGlobalBuilder(this, local_type, mutable);
- glob.index = this.globals.length + this.num_imported_globals;
- this.globals.push(glob);
- return glob;
- }
-
- addFunction(name, type) {
- let type_index = (typeof type) == "number" ? type : this.addType(type);
- let func = new WasmFunctionBuilder(this, name, type_index);
- func.index = this.functions.length + this.num_imported_funcs;
- this.functions.push(func);
- return func;
- }
-
- addImport(module = "", name, type) {
- let type_index = (typeof type) == "number" ? type : this.addType(type);
- this.imports.push({module: module, name: name, kind: kExternalFunction,
- type: type_index});
- return this.num_imported_funcs++;
- }
-
- addImportedGlobal(module = "", name, type) {
- let o = {module: module, name: name, kind: kExternalGlobal, type: type,
- mutable: false}
- this.imports.push(o);
- return this.num_imported_globals++;
- }
-
- addImportedMemory(module = "", name, initial = 0, maximum) {
- let o = {module: module, name: name, kind: kExternalMemory,
- initial: initial, maximum: maximum};
- this.imports.push(o);
- return this;
- }
-
- addImportedTable(module = "", name, initial, maximum) {
- let o = {module: module, name: name, kind: kExternalTable, initial: initial,
- maximum: maximum};
- this.imports.push(o);
- }
-
- addExport(name, index) {
- this.exports.push({name: name, kind: kExternalFunction, index: index});
- return this;
- }
-
- addExportOfKind(name, kind, index) {
- this.exports.push({name: name, kind: kind, index: index});
- return this;
- }
-
- addDataSegment(addr, data, is_global = false) {
- this.segments.push({addr: addr, data: data, is_global: is_global});
- return this.segments.length - 1;
- }
-
- exportMemoryAs(name) {
- this.exports.push({name: name, kind: kExternalMemory, index: 0});
- }
-
- addFunctionTableInit(base, is_global, array) {
- this.function_table_inits.push({base: base, is_global: is_global,
- array: array});
- if (!is_global) {
- var length = base + array.length;
- if (length > this.function_table_length) {
- this.function_table_length = length;
- }
- }
- return this;
- }
-
- appendToTable(array) {
- return this.addFunctionTableInit(this.function_table.length, false, array);
- }
-
- setFunctionTableLength(length) {
- this.function_table_length = length;
- return this;
- }
-
- toArray(debug = false) {
- let binary = new Binary;
- let wasm = this;
-
- // Add header
- binary.emit_header();
-
- // Add type section
- if (wasm.types.length > 0) {
- if (debug) print("emitting types @ " + binary.length);
- binary.emit_section(kTypeSectionCode, section => {
- section.emit_u32v(wasm.types.length);
- for (let type of wasm.types) {
- section.emit_u8(kWasmFunctionTypeForm);
- section.emit_u32v(type.params.length);
- for (let param of type.params) {
- section.emit_u8(param);
- }
- section.emit_u32v(type.results.length);
- for (let result of type.results) {
- section.emit_u8(result);
- }
- }
- });
- }
-
- // Add imports section
- if (wasm.imports.length > 0) {
- if (debug) print("emitting imports @ " + binary.length);
- binary.emit_section(kImportSectionCode, section => {
- section.emit_u32v(wasm.imports.length);
- for (let imp of wasm.imports) {
- section.emit_string(imp.module);
- section.emit_string(imp.name || '');
- section.emit_u8(imp.kind);
- if (imp.kind == kExternalFunction) {
- section.emit_u32v(imp.type);
- } else if (imp.kind == kExternalGlobal) {
- section.emit_u32v(imp.type);
- section.emit_u8(imp.mutable);
- } else if (imp.kind == kExternalMemory) {
- var has_max = (typeof imp.maximum) != "undefined";
- section.emit_u8(has_max ? 1 : 0); // flags
- section.emit_u32v(imp.initial); // initial
- if (has_max) section.emit_u32v(imp.maximum); // maximum
- } else if (imp.kind == kExternalTable) {
- section.emit_u8(kWasmAnyFunctionTypeForm);
- var has_max = (typeof imp.maximum) != "undefined";
- section.emit_u8(has_max ? 1 : 0); // flags
- section.emit_u32v(imp.initial); // initial
- if (has_max) section.emit_u32v(imp.maximum); // maximum
- } else {
- throw new Error("unknown/unsupported import kind " + imp.kind);
- }
- }
- });
- }
-
- // Add functions declarations
- let has_names = false;
- let names = false;
- if (wasm.functions.length > 0) {
- if (debug) print("emitting function decls @ " + binary.length);
- binary.emit_section(kFunctionSectionCode, section => {
- section.emit_u32v(wasm.functions.length);
- for (let func of wasm.functions) {
- has_names = has_names || (func.name != undefined &&
- func.name.length > 0);
- section.emit_u32v(func.type_index);
- }
- });
- }
-
- // Add function_table.
- if (wasm.function_table_length > 0) {
- if (debug) print("emitting table @ " + binary.length);
- binary.emit_section(kTableSectionCode, section => {
- section.emit_u8(1); // one table entry
- section.emit_u8(kWasmAnyFunctionTypeForm);
- section.emit_u8(1);
- section.emit_u32v(wasm.function_table_length);
- section.emit_u32v(wasm.function_table_length);
- });
- }
-
- // Add memory section
- if (wasm.memory != undefined) {
- if (debug) print("emitting memory @ " + binary.length);
- binary.emit_section(kMemorySectionCode, section => {
- section.emit_u8(1); // one memory entry
- section.emit_u32v(kResizableMaximumFlag);
- section.emit_u32v(wasm.memory.min);
- section.emit_u32v(wasm.memory.max);
- });
- }
-
- // Add global section.
- if (wasm.globals.length > 0) {
- if (debug) print ("emitting globals @ " + binary.length);
- binary.emit_section(kGlobalSectionCode, section => {
- section.emit_u32v(wasm.globals.length);
- for (let global of wasm.globals) {
- section.emit_u8(global.type);
- section.emit_u8(global.mutable);
- if ((typeof global.init_index) == "undefined") {
- // Emit a constant initializer.
- switch (global.type) {
- case kWasmI32:
- section.emit_u8(kExprI32Const);
- section.emit_u32v(global.init);
- break;
- case kWasmI64:
- section.emit_u8(kExprI64Const);
- section.emit_u8(global.init);
- break;
- case kWasmF32:
- section.emit_u8(kExprF32Const);
- f32_view[0] = global.init;
- section.emit_u8(byte_view[0]);
- section.emit_u8(byte_view[1]);
- section.emit_u8(byte_view[2]);
- section.emit_u8(byte_view[3]);
- break;
- case kWasmF64:
- section.emit_u8(kExprF64Const);
- f64_view[0] = global.init;
- section.emit_u8(byte_view[0]);
- section.emit_u8(byte_view[1]);
- section.emit_u8(byte_view[2]);
- section.emit_u8(byte_view[3]);
- section.emit_u8(byte_view[4]);
- section.emit_u8(byte_view[5]);
- section.emit_u8(byte_view[6]);
- section.emit_u8(byte_view[7]);
- break;
- }
- } else {
- // Emit a global-index initializer.
- section.emit_u8(kExprGetGlobal);
- section.emit_u32v(global.init_index);
- }
- section.emit_u8(kExprEnd); // end of init expression
- }
- });
- }
-
- // Add export table.
- var mem_export = (wasm.memory != undefined && wasm.memory.exp);
- var exports_count = wasm.exports.length + (mem_export ? 1 : 0);
- if (exports_count > 0) {
- if (debug) print("emitting exports @ " + binary.length);
- binary.emit_section(kExportSectionCode, section => {
- section.emit_u32v(exports_count);
- for (let exp of wasm.exports) {
- section.emit_string(exp.name);
- section.emit_u8(exp.kind);
- section.emit_u32v(exp.index);
- }
- if (mem_export) {
- section.emit_string("memory");
- section.emit_u8(kExternalMemory);
- section.emit_u8(0);
- }
- });
- }
-
- // Add start function section.
- if (wasm.start_index != undefined) {
- if (debug) print("emitting start function @ " + binary.length);
- binary.emit_section(kStartSectionCode, section => {
- section.emit_u32v(wasm.start_index);
- });
- }
-
- // Add table elements.
- if (wasm.function_table_inits.length > 0) {
- if (debug) print("emitting table @ " + binary.length);
- binary.emit_section(kElementSectionCode, section => {
- var inits = wasm.function_table_inits;
- section.emit_u32v(inits.length);
- section.emit_u8(0); // table index
-
- for (let init of inits) {
- if (init.is_global) {
- section.emit_u8(kExprGetGlobal);
- } else {
- section.emit_u8(kExprI32Const);
- }
- section.emit_u32v(init.base);
- section.emit_u8(kExprEnd);
- section.emit_u32v(init.array.length);
- for (let index of init.array) {
- section.emit_u32v(index);
- }
- }
- });
- }
-
- // Add function bodies.
- if (wasm.functions.length > 0) {
- // emit function bodies
- if (debug) print("emitting code @ " + binary.length);
- binary.emit_section(kCodeSectionCode, section => {
- section.emit_u32v(wasm.functions.length);
- for (let func of wasm.functions) {
- // Function body length will be patched later.
- let local_decls = [];
- let l = func.locals;
- if (l != undefined) {
- let local_decls_count = 0;
- if (l.i32_count > 0) {
- local_decls.push({count: l.i32_count, type: kWasmI32});
- }
- if (l.i64_count > 0) {
- local_decls.push({count: l.i64_count, type: kWasmI64});
- }
- if (l.f32_count > 0) {
- local_decls.push({count: l.f32_count, type: kWasmF32});
- }
- if (l.f64_count > 0) {
- local_decls.push({count: l.f64_count, type: kWasmF64});
- }
- }
-
- let header = new Binary;
- header.emit_u32v(local_decls.length);
- for (let decl of local_decls) {
- header.emit_u32v(decl.count);
- header.emit_u8(decl.type);
- }
-
- section.emit_u32v(header.length + func.body.length);
- section.emit_bytes(header);
- section.emit_bytes(func.body);
- }
- });
- }
-
- // Add data segments.
- if (wasm.segments.length > 0) {
- if (debug) print("emitting data segments @ " + binary.length);
- binary.emit_section(kDataSectionCode, section => {
- section.emit_u32v(wasm.segments.length);
- for (let seg of wasm.segments) {
- section.emit_u8(0); // linear memory index 0
- if (seg.is_global) {
- // initializer is a global variable
- section.emit_u8(kExprGetGlobal);
- section.emit_u32v(seg.addr);
- } else {
- // initializer is a constant
- section.emit_u8(kExprI32Const);
- section.emit_u32v(seg.addr);
- }
- section.emit_u8(kExprEnd);
- section.emit_u32v(seg.data.length);
- section.emit_bytes(seg.data);
- }
- });
- }
-
- // Add any explicitly added sections
- for (let exp of wasm.explicit) {
- if (debug) print("emitting explicit @ " + binary.length);
- binary.emit_bytes(exp);
- }
-
- // Add function names.
- if (has_names) {
- if (debug) print("emitting names @ " + binary.length);
- binary.emit_section(kUnknownSectionCode, section => {
- section.emit_string("name");
- var count = wasm.functions.length + wasm.num_imported_funcs;
- section.emit_u32v(count);
- for (var i = 0; i < wasm.num_imported_funcs; i++) {
- section.emit_u8(0); // empty string
- section.emit_u8(0); // local names count == 0
- }
- for (let func of wasm.functions) {
- var name = func.name == undefined ? "" : func.name;
- section.emit_string(name);
- section.emit_u8(0); // local names count == 0
- }
- });
- }
-
- return binary;
- }
-
- toBuffer(debug = false) {
- let bytes = this.toArray(debug);
- let buffer = new ArrayBuffer(bytes.length);
- let view = new Uint8Array(buffer);
- for (let i = 0; i < bytes.length; i++) {
- let val = bytes[i];
- if ((typeof val) == "string") val = val.charCodeAt(0);
- view[i] = val | 0;
- }
- return new Uint8Array(buffer);
- }
-
- instantiate(...args) {
- let module = new WebAssembly.Module(this.toBuffer());
- let instance = new WebAssembly.Instance(module, ...args);
- return instance;
- }
-}
diff --git a/LayoutTests/platform/ios-simulator/TestExpectations b/LayoutTests/platform/ios-simulator/TestExpectations
index 0408652..76c5689 100644
--- a/LayoutTests/platform/ios-simulator/TestExpectations
+++ b/LayoutTests/platform/ios-simulator/TestExpectations
@@ -122,6 +122,4 @@
webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/the-img-element/sizes/parse-a-sizes-attribute-width-1000px.html [ Pass Failure ]
webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/ready-states/autoplay.html [ Pass Failure ]
-webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/error-codes/error.html [ Pass Failure ]
-
-imported/w3c/web-platform-tests/wasm [ Skip ]
+webkit.org/b/195466 imported/w3c/web-platform-tests/html/semantics/embedded-content/media-elements/error-codes/error.html [ Pass Failure ]
\ No newline at end of file
diff --git a/LayoutTests/platform/win/TestExpectations b/LayoutTests/platform/win/TestExpectations
index 0eed029..f32b4a8 100644
--- a/LayoutTests/platform/win/TestExpectations
+++ b/LayoutTests/platform/win/TestExpectations
@@ -4423,5 +4423,3 @@
webkit.org/b/198112 http/tests/security/showModalDialog-sync-cross-origin-page-load2.html [ Skip ]
webkit.org/b/198679 fast/events/fire-mousedown-while-pressing-mouse-button.html [ Failure ]
-
-imported/w3c/web-platform-tests/wasm [ Skip ]
diff --git a/Source/JavaScriptCore/CMakeLists.txt b/Source/JavaScriptCore/CMakeLists.txt
index 3fe5174..e43bb6b 100644
--- a/Source/JavaScriptCore/CMakeLists.txt
+++ b/Source/JavaScriptCore/CMakeLists.txt
@@ -108,6 +108,7 @@
wasm/js/WebAssemblyMemoryPrototype.cpp
wasm/js/WebAssemblyModuleConstructor.cpp
wasm/js/WebAssemblyModulePrototype.cpp
+ wasm/js/WebAssemblyPrototype.cpp
wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
wasm/js/WebAssemblyRuntimeErrorPrototype.cpp
wasm/js/WebAssemblyTableConstructor.cpp
@@ -1010,8 +1011,8 @@
wasm/WasmPageCount.h
wasm/WasmTierUpCount.h
- wasm/js/JSWebAssembly.h
wasm/js/JSWebAssemblyModule.h
+ wasm/js/WebAssemblyPrototype.h
yarr/RegularExpression.h
@@ -1219,6 +1220,7 @@
${JAVASCRIPTCORE_DIR}/builtins/StringPrototype.js
${JAVASCRIPTCORE_DIR}/builtins/TypedArrayConstructor.js
${JAVASCRIPTCORE_DIR}/builtins/TypedArrayPrototype.js
+ ${JAVASCRIPTCORE_DIR}/builtins/WebAssemblyPrototype.js
)
add_custom_command(
diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog
index 6a7a715..345c750 100644
--- a/Source/JavaScriptCore/ChangeLog
+++ b/Source/JavaScriptCore/ChangeLog
@@ -1,3 +1,16 @@
+2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
+
+ Unreviewed, rolling out r247440.
+
+ Broke builds
+
+ Reverted changeset:
+
+ "[JSC] Improve wasm wpt test results by fixing miscellaneous
+ issues"
+ https://bugs.webkit.org/show_bug.cgi?id=199783
+ https://trac.webkit.org/changeset/247440
+
2019-07-15 Yusuke Suzuki <ysuzuki@apple.com>
[JSC] Improve wasm wpt test results by fixing miscellaneous issues
diff --git a/Source/JavaScriptCore/DerivedSources-input.xcfilelist b/Source/JavaScriptCore/DerivedSources-input.xcfilelist
index a76a5ed..5fc30d0 100644
--- a/Source/JavaScriptCore/DerivedSources-input.xcfilelist
+++ b/Source/JavaScriptCore/DerivedSources-input.xcfilelist
@@ -57,7 +57,7 @@
$(PROJECT_DIR)/builtins/StringPrototype.js
$(PROJECT_DIR)/builtins/TypedArrayConstructor.js
$(PROJECT_DIR)/builtins/TypedArrayPrototype.js
-$(PROJECT_DIR)/builtins/WebAssembly.js
+$(PROJECT_DIR)/builtins/WebAssemblyPrototype.js
$(PROJECT_DIR)/bytecode/BytecodeList.rb
$(PROJECT_DIR)/create_hash_table
$(PROJECT_DIR)/disassembler/udis86/optable.xml
@@ -183,6 +183,7 @@
$(PROJECT_DIR)/wasm/js/WebAssemblyMemoryPrototype.cpp
$(PROJECT_DIR)/wasm/js/WebAssemblyModuleConstructor.cpp
$(PROJECT_DIR)/wasm/js/WebAssemblyModulePrototype.cpp
+$(PROJECT_DIR)/wasm/js/WebAssemblyPrototype.cpp
$(PROJECT_DIR)/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
$(PROJECT_DIR)/wasm/js/WebAssemblyRuntimeErrorPrototype.cpp
$(PROJECT_DIR)/wasm/js/WebAssemblyTableConstructor.cpp
diff --git a/Source/JavaScriptCore/DerivedSources-output.xcfilelist b/Source/JavaScriptCore/DerivedSources-output.xcfilelist
index 6918b2a..818c74f 100644
--- a/Source/JavaScriptCore/DerivedSources-output.xcfilelist
+++ b/Source/JavaScriptCore/DerivedSources-output.xcfilelist
@@ -69,6 +69,7 @@
$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyMemoryPrototype.lut.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyModuleConstructor.lut.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyModulePrototype.lut.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyPrototype.lut.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyRuntimeErrorConstructor.lut.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyRuntimeErrorPrototype.lut.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/JavaScriptCore/WebAssemblyTableConstructor.lut.h
diff --git a/Source/JavaScriptCore/DerivedSources.make b/Source/JavaScriptCore/DerivedSources.make
index b59fe06..8ed0ac7 100644
--- a/Source/JavaScriptCore/DerivedSources.make
+++ b/Source/JavaScriptCore/DerivedSources.make
@@ -119,7 +119,7 @@
$(JavaScriptCore)/builtins/StringPrototype.js \
$(JavaScriptCore)/builtins/TypedArrayConstructor.js \
$(JavaScriptCore)/builtins/TypedArrayPrototype.js \
- $(JavaScriptCore)/builtins/WebAssembly.js \
+ $(JavaScriptCore)/builtins/WebAssemblyPrototype.js \
#
# The combined output file depends on the contents of builtins and generator scripts, so
@@ -183,6 +183,7 @@
WebAssemblyMemoryPrototype.lut.h \
WebAssemblyModuleConstructor.lut.h \
WebAssemblyModulePrototype.lut.h \
+ WebAssemblyPrototype.lut.h \
WebAssemblyRuntimeErrorConstructor.lut.h \
WebAssemblyRuntimeErrorPrototype.lut.h \
WebAssemblyTableConstructor.lut.h \
diff --git a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
index 73f6ede..dd8fe4a 100644
--- a/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
+++ b/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj
@@ -1573,6 +1573,7 @@
AD2FCC1F1DB59CB200B3E736 /* WebAssemblyRuntimeErrorPrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC131DB59C5900B3E736 /* WebAssemblyRuntimeErrorPrototype.lut.h */; };
AD2FCC201DB59CB200B3E736 /* WebAssemblyTableConstructor.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC141DB59C5900B3E736 /* WebAssemblyTableConstructor.lut.h */; };
AD2FCC211DB59CB200B3E736 /* WebAssemblyTablePrototype.lut.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC151DB59C5900B3E736 /* WebAssemblyTablePrototype.lut.h */; };
+ AD2FCC2D1DB838FD00B3E736 /* WebAssemblyPrototype.h in Headers */ = {isa = PBXBuildFile; fileRef = AD2FCC271DB838C400B3E736 /* WebAssemblyPrototype.h */; settings = {ATTRIBUTES = (Private, ); }; };
AD412B341E7B2E9E008AF157 /* WasmContext.h in Headers */ = {isa = PBXBuildFile; fileRef = AD412B321E7B2E8A008AF157 /* WasmContext.h */; settings = {ATTRIBUTES = (Private, ); }; };
AD4252511E5D0E14009D2A97 /* FullCodeOrigin.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4252501E5D0DEB009D2A97 /* FullCodeOrigin.h */; };
AD4937C41DDBE6140077C807 /* AbstractModuleRecord.h in Headers */ = {isa = PBXBuildFile; fileRef = AD4937C21DDBE60A0077C807 /* AbstractModuleRecord.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -4511,6 +4512,8 @@
AD2FCC131DB59C5900B3E736 /* WebAssemblyRuntimeErrorPrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAssemblyRuntimeErrorPrototype.lut.h; sourceTree = "<group>"; };
AD2FCC141DB59C5900B3E736 /* WebAssemblyTableConstructor.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAssemblyTableConstructor.lut.h; sourceTree = "<group>"; };
AD2FCC151DB59C5900B3E736 /* WebAssemblyTablePrototype.lut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAssemblyTablePrototype.lut.h; sourceTree = "<group>"; };
+ AD2FCC261DB838C400B3E736 /* WebAssemblyPrototype.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebAssemblyPrototype.cpp; path = js/WebAssemblyPrototype.cpp; sourceTree = "<group>"; };
+ AD2FCC271DB838C400B3E736 /* WebAssemblyPrototype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebAssemblyPrototype.h; path = js/WebAssemblyPrototype.h; sourceTree = "<group>"; };
AD2FCC321DC4045300B3E736 /* WasmFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WasmFormat.cpp; sourceTree = "<group>"; };
AD412B321E7B2E8A008AF157 /* WasmContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmContext.h; sourceTree = "<group>"; };
AD412B351E7B57C0008AF157 /* AllowMacroScratchRegisterUsageIf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AllowMacroScratchRegisterUsageIf.h; sourceTree = "<group>"; };
@@ -4813,7 +4816,6 @@
E39D9D841D39000600667282 /* InterpreterInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InterpreterInlines.h; sourceTree = "<group>"; };
E39DA4A41B7E8B7C0084F33A /* JSModuleRecord.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSModuleRecord.cpp; sourceTree = "<group>"; };
E39DA4A51B7E8B7C0084F33A /* JSModuleRecord.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSModuleRecord.h; sourceTree = "<group>"; };
- E39E030D22D9EA3E00408C18 /* WebAssembly.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = WebAssembly.js; sourceTree = "<group>"; };
E39EEAF12281244C008474F4 /* ObjectToStringAdaptiveStructureWatchpoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ObjectToStringAdaptiveStructureWatchpoint.cpp; sourceTree = "<group>"; };
E39EEAF22281244C008474F4 /* ObjectToStringAdaptiveStructureWatchpoint.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ObjectToStringAdaptiveStructureWatchpoint.h; sourceTree = "<group>"; };
E3A0531621342B660022EC14 /* WasmStreamingParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WasmStreamingParser.h; sourceTree = "<group>"; };
@@ -8358,7 +8360,6 @@
A1E0451B1C25B4B100BB663C /* StringPrototype.js */,
534C457A1BC703DC007476A7 /* TypedArrayConstructor.js */,
53917E831B791CB8000EBD33 /* TypedArrayPrototype.js */,
- E39E030D22D9EA3E00408C18 /* WebAssembly.js */,
);
path = builtins;
sourceTree = "<group>";
@@ -8421,6 +8422,8 @@
AD2FCB9B1DB585A600B3E736 /* WebAssemblyModulePrototype.h */,
AD4937C51DDCDCF00077C807 /* WebAssemblyModuleRecord.cpp */,
AD4937C61DDCDCF00077C807 /* WebAssemblyModuleRecord.h */,
+ AD2FCC261DB838C400B3E736 /* WebAssemblyPrototype.cpp */,
+ AD2FCC271DB838C400B3E736 /* WebAssemblyPrototype.h */,
AD2FCBBC1DB58DA400B3E736 /* WebAssemblyRuntimeErrorConstructor.cpp */,
AD2FCBBD1DB58DA400B3E736 /* WebAssemblyRuntimeErrorConstructor.h */,
AD2FCBBE1DB58DA400B3E736 /* WebAssemblyRuntimeErrorPrototype.cpp */,
@@ -10061,6 +10064,7 @@
AD2FCC031DB58DAD00B3E736 /* WebAssemblyModulePrototype.h in Headers */,
AD2FCC1D1DB59CB200B3E736 /* WebAssemblyModulePrototype.lut.h in Headers */,
AD4937C81DDD0AAE0077C807 /* WebAssemblyModuleRecord.h in Headers */,
+ AD2FCC2D1DB838FD00B3E736 /* WebAssemblyPrototype.h in Headers */,
AD2FCBF91DB58DAD00B3E736 /* WebAssemblyRuntimeErrorConstructor.h in Headers */,
AD2FCC1E1DB59CB200B3E736 /* WebAssemblyRuntimeErrorConstructor.lut.h in Headers */,
AD2FCBFB1DB58DAD00B3E736 /* WebAssemblyRuntimeErrorPrototype.h in Headers */,
diff --git a/Source/JavaScriptCore/Sources.txt b/Source/JavaScriptCore/Sources.txt
index ee54ad9..e41b755 100644
--- a/Source/JavaScriptCore/Sources.txt
+++ b/Source/JavaScriptCore/Sources.txt
@@ -1053,6 +1053,7 @@
wasm/js/WebAssemblyModuleConstructor.cpp
wasm/js/WebAssemblyModulePrototype.cpp
wasm/js/WebAssemblyModuleRecord.cpp
+wasm/js/WebAssemblyPrototype.cpp
wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
wasm/js/WebAssemblyRuntimeErrorPrototype.cpp
wasm/js/WebAssemblyTableConstructor.cpp
diff --git a/Source/JavaScriptCore/builtins/WebAssembly.js b/Source/JavaScriptCore/builtins/WebAssemblyPrototype.js
similarity index 100%
rename from Source/JavaScriptCore/builtins/WebAssembly.js
rename to Source/JavaScriptCore/builtins/WebAssemblyPrototype.js
diff --git a/Source/JavaScriptCore/jit/Repatch.cpp b/Source/JavaScriptCore/jit/Repatch.cpp
index e388fb0..19e5c04 100644
--- a/Source/JavaScriptCore/jit/Repatch.cpp
+++ b/Source/JavaScriptCore/jit/Repatch.cpp
@@ -51,7 +51,6 @@
#include "JSCInlines.h"
#include "JSModuleNamespaceObject.h"
#include "JSWebAssembly.h"
-#include "JSWebAssemblyModule.h"
#include "LinkBuffer.h"
#include "ModuleNamespaceAccessCase.h"
#include "PolymorphicAccess.h"
@@ -63,8 +62,6 @@
#include "StructureStubInfo.h"
#include "SuperSampler.h"
#include "ThunkGenerators.h"
-#include "WebAssemblyFunction.h"
-#include "WebAssemblyToJSCallee.h"
#include <wtf/CommaPrinter.h>
#include <wtf/ListDump.h>
#include <wtf/StringPrintStream.h>
diff --git a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
index b7cf0d0..eace92b 100644
--- a/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
+++ b/Source/JavaScriptCore/runtime/JSGlobalObject.cpp
@@ -125,13 +125,6 @@
#include "JSWeakObjectRef.h"
#include "JSWeakSet.h"
#include "JSWebAssembly.h"
-#include "JSWebAssemblyCompileError.h"
-#include "JSWebAssemblyInstance.h"
-#include "JSWebAssemblyLinkError.h"
-#include "JSWebAssemblyMemory.h"
-#include "JSWebAssemblyModule.h"
-#include "JSWebAssemblyRuntimeError.h"
-#include "JSWebAssemblyTable.h"
#include "JSWithScope.h"
#include "LazyClassStructureInlines.h"
#include "LazyPropertyInlines.h"
@@ -185,22 +178,7 @@
#include "WeakObjectRefPrototype.h"
#include "WeakSetConstructor.h"
#include "WeakSetPrototype.h"
-#include "WebAssemblyCompileErrorConstructor.h"
-#include "WebAssemblyCompileErrorPrototype.h"
-#include "WebAssemblyFunction.h"
-#include "WebAssemblyInstanceConstructor.h"
-#include "WebAssemblyInstancePrototype.h"
-#include "WebAssemblyLinkErrorConstructor.h"
-#include "WebAssemblyLinkErrorPrototype.h"
-#include "WebAssemblyMemoryConstructor.h"
-#include "WebAssemblyMemoryPrototype.h"
-#include "WebAssemblyModuleConstructor.h"
-#include "WebAssemblyModulePrototype.h"
-#include "WebAssemblyModuleRecord.h"
-#include "WebAssemblyRuntimeErrorConstructor.h"
-#include "WebAssemblyRuntimeErrorPrototype.h"
-#include "WebAssemblyTableConstructor.h"
-#include "WebAssemblyTablePrototype.h"
+#include "WebAssemblyPrototype.h"
#include "WebAssemblyToJSCallee.h"
#include <wtf/RandomNumber.h>
@@ -1082,6 +1060,7 @@
#if ENABLE(WEBASSEMBLY)
if (Wasm::isSupported()) {
+ auto* webAssemblyPrototype = WebAssemblyPrototype::create(vm, this, WebAssemblyPrototype::createStructure(vm, this, m_objectPrototype.get()));
m_webAssemblyModuleRecordStructure.initLater(
[] (const Initializer<Structure>& init) {
init.set(WebAssemblyModuleRecord::createStructure(init.vm, init.owner, init.owner->m_objectPrototype.get()));
@@ -1102,7 +1081,7 @@
[] (const Initializer<Structure>& init) {
init.set(WebAssemblyToJSCallee::createStructure(init.vm, init.owner, jsNull()));
});
- auto* webAssembly = JSWebAssembly::create(vm, this, JSWebAssembly::createStructure(vm, this, m_objectPrototype.get()));
+ auto* webAssembly = JSWebAssembly::create(vm, this, JSWebAssembly::createStructure(vm, this, webAssemblyPrototype));
putDirectWithoutTransition(vm, Identifier::fromString(exec, "WebAssembly"), webAssembly, static_cast<unsigned>(PropertyAttribute::DontEnum));
#define CREATE_WEBASSEMBLY_PROTOTYPE(capitalName, lowerName, properName, instanceType, jsName, prototypeBase) \
diff --git a/Source/JavaScriptCore/runtime/JSModuleLoader.cpp b/Source/JavaScriptCore/runtime/JSModuleLoader.cpp
index fe5d601..fad7c7a 100644
--- a/Source/JavaScriptCore/runtime/JSModuleLoader.cpp
+++ b/Source/JavaScriptCore/runtime/JSModuleLoader.cpp
@@ -41,12 +41,12 @@
#include "JSModuleNamespaceObject.h"
#include "JSModuleRecord.h"
#include "JSSourceCode.h"
-#include "JSWebAssembly.h"
#include "ModuleAnalyzer.h"
#include "Nodes.h"
#include "ObjectConstructor.h"
#include "Parser.h"
#include "ParserError.h"
+#include "WebAssemblyPrototype.h"
namespace JSC {
@@ -413,7 +413,7 @@
#if ENABLE(WEBASSEMBLY)
if (sourceCode.provider()->sourceType() == SourceProviderSourceType::WebAssembly)
- return JSValue::encode(JSWebAssembly::instantiate(exec, deferred, moduleKey, jsSourceCode));
+ return JSValue::encode(WebAssemblyPrototype::instantiate(exec, deferred, moduleKey, jsSourceCode));
#endif
CodeProfiling profile(sourceCode);
diff --git a/Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp b/Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp
index 9cbb0bb..b9d4f32 100644
--- a/Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp
+++ b/Source/JavaScriptCore/wasm/js/JSWebAssembly.cpp
@@ -28,30 +28,7 @@
#if ENABLE(WEBASSEMBLY)
-#include "CatchScope.h"
-#include "Exception.h"
-#include "FunctionPrototype.h"
-#include "JSCBuiltins.h"
#include "JSCInlines.h"
-#include "JSModuleNamespaceObject.h"
-#include "JSPromiseDeferred.h"
-#include "JSToWasm.h"
-#include "JSWebAssemblyHelpers.h"
-#include "JSWebAssemblyInstance.h"
-#include "JSWebAssemblyModule.h"
-#include "ObjectConstructor.h"
-#include "Options.h"
-#include "PromiseDeferredTimer.h"
-#include "StrongInlines.h"
-#include "ThrowScope.h"
-#include "WasmBBQPlan.h"
-#include "WasmToJS.h"
-#include "WasmWorklist.h"
-#include "WebAssemblyInstanceConstructor.h"
-#include "WebAssemblyModuleConstructor.h"
-
-using JSC::Wasm::Plan;
-using JSC::Wasm::BBQPlan;
namespace JSC {
@@ -69,20 +46,16 @@
#undef DEFINE_CALLBACK_FOR_CONSTRUCTOR
-static EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState*);
-static EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateFunc(ExecState*);
-static EncodedJSValue JSC_HOST_CALL webAssemblyValidateFunc(ExecState*);
-
}
#include "JSWebAssembly.lut.h"
namespace JSC {
-const ClassInfo JSWebAssembly::s_info = { "WebAssembly", &Base::s_info, &webAssemblyTable, nullptr, CREATE_METHOD_TABLE(JSWebAssembly) };
+const ClassInfo JSWebAssembly::s_info = { "WebAssembly", &Base::s_info, &jsWebAssemblyTable, nullptr, CREATE_METHOD_TABLE(JSWebAssembly) };
/* Source for JSWebAssembly.lut.h
-@begin webAssemblyTable
+@begin jsWebAssemblyTable
CompileError createWebAssemblyCompileError DontEnum|PropertyCallback
Instance createWebAssemblyInstance DontEnum|PropertyCallback
LinkError createWebAssemblyLinkError DontEnum|PropertyCallback
@@ -90,16 +63,13 @@
Module createWebAssemblyModule DontEnum|PropertyCallback
RuntimeError createWebAssemblyRuntimeError DontEnum|PropertyCallback
Table createWebAssemblyTable DontEnum|PropertyCallback
- compile webAssemblyCompileFunc Function 1
- instantiate webAssemblyInstantiateFunc Function 1
- validate webAssemblyValidateFunc Function 1
@end
*/
-JSWebAssembly* JSWebAssembly::create(VM& vm, JSGlobalObject* globalObject, Structure* structure)
+JSWebAssembly* JSWebAssembly::create(VM& vm, JSGlobalObject*, Structure* structure)
{
auto* object = new (NotNull, allocateCell<JSWebAssembly>(vm.heap)) JSWebAssembly(vm, structure);
- object->finishCreation(vm, globalObject);
+ object->finishCreation(vm);
return object;
}
@@ -108,14 +78,10 @@
return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
}
-void JSWebAssembly::finishCreation(VM& vm, JSGlobalObject* globalObject)
+void JSWebAssembly::finishCreation(VM& vm)
{
Base::finishCreation(vm);
ASSERT(inherits(vm, info()));
- if (Options::useWebAssemblyStreamingApi()) {
- JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("compileStreaming", webAssemblyCompileStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
- JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("instantiateStreaming", webAssemblyInstantiateStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
- }
}
JSWebAssembly::JSWebAssembly(VM& vm, Structure* structure)
@@ -123,291 +89,6 @@
{
}
-static void reject(ExecState* exec, CatchScope& catchScope, JSPromiseDeferred* promise)
-{
- Exception* exception = catchScope.exception();
- ASSERT(exception);
- catchScope.clearException();
- promise->reject(exec, exception->value());
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
-}
-
-static void webAssemblyModuleValidateAsyncInternal(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source)
-{
- VM& vm = exec->vm();
- auto* globalObject = exec->lexicalGlobalObject();
-
- Vector<Strong<JSCell>> dependencies;
- dependencies.append(Strong<JSCell>(vm, globalObject));
-
- vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
-
- Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
- vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, globalObject, result = WTFMove(result), &vm] () mutable {
- auto scope = DECLARE_CATCH_SCOPE(vm);
- ExecState* exec = globalObject->globalExec();
- JSValue module = JSWebAssemblyModule::createStub(vm, exec, globalObject->webAssemblyModuleStructure(), WTFMove(result));
- if (UNLIKELY(scope.exception())) {
- reject(exec, scope, promise);
- return;
- }
-
- promise->resolve(exec, module);
- CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
- });
- }));
-}
-
-static EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState* exec)
-{
- VM& vm = exec->vm();
- auto throwScope = DECLARE_THROW_SCOPE(vm);
- auto* globalObject = exec->lexicalGlobalObject();
-
- JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
- RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
-
- {
- auto catchScope = DECLARE_CATCH_SCOPE(vm);
- Vector<uint8_t> source = createSourceBufferFromValue(vm, exec, exec->argument(0));
-
- if (UNLIKELY(catchScope.exception()))
- reject(exec, catchScope, promise);
- else
- webAssemblyModuleValidateAsyncInternal(exec, promise, WTFMove(source));
-
- return JSValue::encode(promise->promise());
- }
-}
-
-enum class Resolve { WithInstance, WithModuleRecord, WithModuleAndInstance };
-static void resolve(VM& vm, ExecState* exec, JSPromiseDeferred* promise, JSWebAssemblyInstance* instance, JSWebAssemblyModule* module, JSObject* importObject, Ref<Wasm::CodeBlock>&& codeBlock, Resolve resolveKind, Wasm::CreationMode creationMode)
-{
- auto scope = DECLARE_CATCH_SCOPE(vm);
- instance->finalizeCreation(vm, exec, WTFMove(codeBlock), importObject, creationMode);
- RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
-
- if (resolveKind == Resolve::WithInstance)
- promise->resolve(exec, instance);
- else if (resolveKind == Resolve::WithModuleRecord) {
- auto* moduleRecord = instance->moduleNamespaceObject()->moduleRecord();
- if (Options::dumpModuleRecord())
- moduleRecord->dump();
- promise->resolve(exec, moduleRecord);
- } else {
- JSObject* result = constructEmptyObject(exec);
- result->putDirect(vm, Identifier::fromString(&vm, "module"_s), module);
- result->putDirect(vm, Identifier::fromString(&vm, "instance"_s), instance);
- promise->resolve(exec, result);
- }
- CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
-}
-
-void JSWebAssembly::webAssemblyModuleValidateAsync(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source)
-{
- VM& vm = exec->vm();
- auto catchScope = DECLARE_CATCH_SCOPE(vm);
- webAssemblyModuleValidateAsyncInternal(exec, promise, WTFMove(source));
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
-}
-
-static void instantiate(VM& vm, ExecState* exec, JSPromiseDeferred* promise, JSWebAssemblyModule* module, JSObject* importObject, const Identifier& moduleKey, Resolve resolveKind, Wasm::CreationMode creationMode)
-{
- auto scope = DECLARE_CATCH_SCOPE(vm);
- // In order to avoid potentially recompiling a module. We first gather all the import/memory information prior to compiling code.
- JSWebAssemblyInstance* instance = JSWebAssemblyInstance::create(vm, exec, moduleKey, module, importObject, exec->lexicalGlobalObject()->webAssemblyInstanceStructure(), Ref<Wasm::Module>(module->module()), creationMode);
- RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
-
- Vector<Strong<JSCell>> dependencies;
- // The instance keeps the module alive.
- dependencies.append(Strong<JSCell>(vm, instance));
- dependencies.append(Strong<JSCell>(vm, importObject));
- vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
- // Note: This completion task may or may not get called immediately.
- module->module().compileAsync(&vm.wasmContext, instance->memoryMode(), createSharedTask<Wasm::CodeBlock::CallbackType>([promise, instance, module, importObject, resolveKind, creationMode, &vm] (Ref<Wasm::CodeBlock>&& refCodeBlock) mutable {
- RefPtr<Wasm::CodeBlock> codeBlock = WTFMove(refCodeBlock);
- vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, instance, module, importObject, resolveKind, creationMode, &vm, codeBlock = WTFMove(codeBlock)] () mutable {
- ExecState* exec = instance->globalObject(vm)->globalExec();
- resolve(vm, exec, promise, instance, module, importObject, codeBlock.releaseNonNull(), resolveKind, creationMode);
- });
- }), &Wasm::createJSToWasmWrapper, &Wasm::wasmToJSException);
-}
-
-static void compileAndInstantiate(VM& vm, ExecState* exec, JSPromiseDeferred* promise, const Identifier& moduleKey, JSValue buffer, JSObject* importObject, Resolve resolveKind, Wasm::CreationMode creationMode)
-{
- auto scope = DECLARE_CATCH_SCOPE(vm);
-
- auto* globalObject = exec->lexicalGlobalObject();
-
- JSCell* moduleKeyCell = identifierToJSValue(vm, moduleKey).asCell();
- Vector<Strong<JSCell>> dependencies;
- dependencies.append(Strong<JSCell>(vm, importObject));
- dependencies.append(Strong<JSCell>(vm, moduleKeyCell));
- vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
-
- Vector<uint8_t> source = createSourceBufferFromValue(vm, exec, buffer);
- RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
-
- Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, importObject, moduleKeyCell, globalObject, resolveKind, creationMode, &vm] (Wasm::Module::ValidationResult&& result) mutable {
- vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, moduleKeyCell, globalObject, result = WTFMove(result), resolveKind, creationMode, &vm] () mutable {
- auto scope = DECLARE_CATCH_SCOPE(vm);
- ExecState* exec = globalObject->globalExec();
- JSWebAssemblyModule* module = JSWebAssemblyModule::createStub(vm, exec, globalObject->webAssemblyModuleStructure(), WTFMove(result));
- if (UNLIKELY(scope.exception()))
- return reject(exec, scope, promise);
-
- const Identifier moduleKey = JSValue(moduleKeyCell).toPropertyKey(exec);
- if (UNLIKELY(scope.exception()))
- return reject(exec, scope, promise);
-
- instantiate(vm, exec, promise, module, importObject, moduleKey, resolveKind, creationMode);
- });
- }));
-}
-
-JSValue JSWebAssembly::instantiate(ExecState* exec, JSPromiseDeferred* promise, const Identifier& moduleKey, JSValue argument)
-{
- VM& vm = exec->vm();
- compileAndInstantiate(vm, exec, promise, moduleKey, argument, nullptr, Resolve::WithModuleRecord, Wasm::CreationMode::FromModuleLoader);
- return promise->promise();
-}
-
-static void webAssemblyModuleInstantinateAsyncInternal(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source, JSObject* importObject)
-{
- auto* globalObject = exec->lexicalGlobalObject();
- VM& vm = exec->vm();
-
- Vector<Strong<JSCell>> dependencies;
- dependencies.append(Strong<JSCell>(vm, importObject));
- dependencies.append(Strong<JSCell>(vm, globalObject));
- vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
-
- Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, importObject, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
- vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, globalObject, result = WTFMove(result), &vm] () mutable {
- auto scope = DECLARE_CATCH_SCOPE(vm);
- ExecState* exec = globalObject->globalExec();
- JSWebAssemblyModule* module = JSWebAssemblyModule::createStub(vm, exec, globalObject->webAssemblyModuleStructure(), WTFMove(result));
- if (UNLIKELY(scope.exception()))
- return reject(exec, scope, promise);
-
- instantiate(vm, exec, promise, module, importObject, JSWebAssemblyInstance::createPrivateModuleKey(), Resolve::WithModuleAndInstance, Wasm::CreationMode::FromJS);
- CLEAR_AND_RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
- });
- }));
-}
-
-void JSWebAssembly::webAssemblyModuleInstantinateAsync(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source, JSObject* importedObject)
-{
- VM& vm = exec->vm();
- auto catchScope = DECLARE_CATCH_SCOPE(vm);
- webAssemblyModuleInstantinateAsyncInternal(exec, promise, WTFMove(source), importedObject);
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
-}
-
-static EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateFunc(ExecState* exec)
-{
- VM& vm = exec->vm();
- auto throwScope = DECLARE_THROW_SCOPE(vm);
- auto* globalObject = exec->lexicalGlobalObject();
-
- JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
- RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
-
- {
- auto catchScope = DECLARE_CATCH_SCOPE(vm);
-
- JSValue importArgument = exec->argument(1);
- JSObject* importObject = importArgument.getObject();
- if (UNLIKELY(!importArgument.isUndefined() && !importObject)) {
- promise->reject(exec, createTypeError(exec,
- "second argument to WebAssembly.instantiate must be undefined or an Object"_s, defaultSourceAppender, runtimeTypeForValue(vm, importArgument)));
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
- } else {
- JSValue firstArgument = exec->argument(0);
- if (auto* module = jsDynamicCast<JSWebAssemblyModule*>(vm, firstArgument))
- instantiate(vm, exec, promise, module, importObject, JSWebAssemblyInstance::createPrivateModuleKey(), Resolve::WithInstance, Wasm::CreationMode::FromJS);
- else
- compileAndInstantiate(vm, exec, promise, JSWebAssemblyInstance::createPrivateModuleKey(), firstArgument, importObject, Resolve::WithModuleAndInstance, Wasm::CreationMode::FromJS);
- }
-
- return JSValue::encode(promise->promise());
- }
-}
-
-static EncodedJSValue JSC_HOST_CALL webAssemblyValidateFunc(ExecState* exec)
-{
- VM& vm = exec->vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
-
- auto [base, byteSize] = getWasmBufferFromValue(exec, exec->argument(0));
- RETURN_IF_EXCEPTION(scope, encodedJSValue());
- BBQPlan plan(&vm.wasmContext, BBQPlan::Validation, Plan::dontFinalize());
- // FIXME: We might want to throw an OOM exception here if we detect that something will OOM.
- // https://bugs.webkit.org/show_bug.cgi?id=166015
- return JSValue::encode(jsBoolean(plan.parseAndValidateModule(base, byteSize)));
-}
-
-EncodedJSValue JSC_HOST_CALL webAssemblyCompileStreamingInternal(ExecState* exec)
-{
- VM& vm = exec->vm();
- auto* globalObject = exec->lexicalGlobalObject();
- auto catchScope = DECLARE_CATCH_SCOPE(vm);
-
- JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
-
- Vector<Strong<JSCell>> dependencies;
- dependencies.append(Strong<JSCell>(vm, globalObject));
- vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
-
- if (globalObject->globalObjectMethodTable()->compileStreaming)
- globalObject->globalObjectMethodTable()->compileStreaming(globalObject, exec, promise, exec->argument(0));
- else {
- // CompileStreaming is not supported in jsc, only in browser environment
- ASSERT_NOT_REACHED();
- }
-
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
-
- return JSValue::encode(promise->promise());
-}
-
-EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateStreamingInternal(ExecState* exec)
-{
- VM& vm = exec->vm();
- auto throwScope = DECLARE_THROW_SCOPE(vm);
- auto* globalObject = exec->lexicalGlobalObject();
-
- JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
- RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
- {
- auto catchScope = DECLARE_CATCH_SCOPE(vm);
-
- JSValue importArgument = exec->argument(1);
- JSObject* importObject = importArgument.getObject();
- if (UNLIKELY(!importArgument.isUndefined() && !importObject)) {
- promise->reject(exec, createTypeError(exec,
- "second argument to WebAssembly.instantiateStreaming must be undefined or an Object"_s, defaultSourceAppender, runtimeTypeForValue(vm, importArgument)));
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
- } else {
- if (globalObject->globalObjectMethodTable()->instantiateStreaming) {
- Vector<Strong<JSCell>> dependencies;
- dependencies.append(Strong<JSCell>(vm, globalObject));
- dependencies.append(Strong<JSCell>(vm, importObject));
- vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
-
- // FIXME: <http://webkit.org/b/184888> if there's an importObject and it contains a Memory, then we can compile the module with the right memory type (fast or not) by looking at the memory's type.
- globalObject->globalObjectMethodTable()->instantiateStreaming(globalObject, exec, promise, exec->argument(0), importObject);
- } else {
- // InstantiateStreaming is not supported in jsc, only in browser environment.
- ASSERT_NOT_REACHED();
- }
- }
- CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
-
- return JSValue::encode(promise->promise());
- }
-}
-
} // namespace JSC
#endif // ENABLE(WEBASSEMBLY)
diff --git a/Source/JavaScriptCore/wasm/js/JSWebAssembly.h b/Source/JavaScriptCore/wasm/js/JSWebAssembly.h
index fd409af..fb257e3 100644
--- a/Source/JavaScriptCore/wasm/js/JSWebAssembly.h
+++ b/Source/JavaScriptCore/wasm/js/JSWebAssembly.h
@@ -28,7 +28,31 @@
#if ENABLE(WEBASSEMBLY)
#include "JSObject.h"
-#include "JSPromiseDeferred.h"
+#include "JSWebAssemblyCompileError.h"
+#include "JSWebAssemblyInstance.h"
+#include "JSWebAssemblyLinkError.h"
+#include "JSWebAssemblyMemory.h"
+#include "JSWebAssemblyModule.h"
+#include "JSWebAssemblyRuntimeError.h"
+#include "JSWebAssemblyTable.h"
+#include "WebAssemblyCompileErrorConstructor.h"
+#include "WebAssemblyCompileErrorPrototype.h"
+#include "WebAssemblyFunction.h"
+#include "WebAssemblyInstanceConstructor.h"
+#include "WebAssemblyInstancePrototype.h"
+#include "WebAssemblyLinkErrorConstructor.h"
+#include "WebAssemblyLinkErrorPrototype.h"
+#include "WebAssemblyMemoryConstructor.h"
+#include "WebAssemblyMemoryPrototype.h"
+#include "WebAssemblyModuleConstructor.h"
+#include "WebAssemblyModulePrototype.h"
+#include "WebAssemblyModuleRecord.h"
+#include "WebAssemblyPrototype.h"
+#include "WebAssemblyRuntimeErrorConstructor.h"
+#include "WebAssemblyRuntimeErrorPrototype.h"
+#include "WebAssemblyTableConstructor.h"
+#include "WebAssemblyTablePrototype.h"
+#include "WebAssemblyToJSCallee.h"
namespace JSC {
@@ -42,20 +66,13 @@
DECLARE_INFO;
- JS_EXPORT_PRIVATE static void webAssemblyModuleValidateAsync(ExecState*, JSPromiseDeferred*, Vector<uint8_t>&&);
- JS_EXPORT_PRIVATE static void webAssemblyModuleInstantinateAsync(ExecState*, JSPromiseDeferred*, Vector<uint8_t>&&, JSObject*);
- static JSValue instantiate(ExecState*, JSPromiseDeferred*, const Identifier&, JSValue);
-
protected:
- void finishCreation(VM&, JSGlobalObject*);
+ void finishCreation(VM&);
private:
JSWebAssembly(VM&, Structure*);
};
-EncodedJSValue JSC_HOST_CALL webAssemblyCompileStreamingInternal(ExecState*);
-EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateStreamingInternal(ExecState*);
-
} // namespace JSC
#endif // ENABLE(WEBASSEMBLY)
diff --git a/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h b/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h
index 4311680..95ffa17 100644
--- a/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h
+++ b/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h
@@ -39,21 +39,15 @@
{
VM& vm = exec->vm();
auto throwScope = DECLARE_THROW_SCOPE(vm);
-
- if (value.isUInt32())
- return value.asUInt32();
-
- double doubleValue = value.toNumber(exec);
+ double doubleValue = value.toInteger(exec);
RETURN_IF_EXCEPTION(throwScope, { });
-
- if (!std::isnan(doubleValue) && !std::isinf(doubleValue)) {
- double truncedValue = trunc(doubleValue);
- if (truncedValue >= 0 && truncedValue <= UINT_MAX)
- return static_cast<uint32_t>(truncedValue);
+ if (doubleValue < 0 || doubleValue > UINT_MAX) {
+ throwException(exec, throwScope,
+ createRangeError(exec, "Expect an integer argument in the range: [0, 2^32 - 1]"_s));
+ return { };
}
- throwException(exec, throwScope, createTypeError(exec, "Expect an integer argument in the range: [0, 2^32 - 1]"_s));
- return { };
+ return static_cast<uint32_t>(doubleValue);
}
ALWAYS_INLINE std::pair<const uint8_t*, size_t> getWasmBufferFromValue(ExecState* exec, JSValue value)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorConstructor.cpp
index 7f2d17d..7d70795 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyCompileErrorConstructor.cpp
@@ -77,7 +77,7 @@
{
Base::finishCreation(vm, "CompileError"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyCompileErrorConstructor::WebAssemblyCompileErrorConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp
index 6842f95..548a3f9 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp
@@ -108,7 +108,7 @@
{
Base::finishCreation(vm, "Instance"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyInstanceConstructor::WebAssemblyInstanceConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp
index f81b2a1..10c2fec 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyInstancePrototype.cpp
@@ -45,7 +45,7 @@
/* Source for WebAssemblyInstancePrototype.lut.h
@begin prototypeTableWebAssemblyInstance
- exports webAssemblyInstanceProtoFuncExports Accessor 0
+ exports webAssemblyInstanceProtoFuncExports DontEnum|Accessor 0
@end
*/
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorConstructor.cpp
index 473c263..26202b8 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyLinkErrorConstructor.cpp
@@ -77,7 +77,7 @@
{
Base::finishCreation(vm, "LinkError"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyLinkErrorConstructor::WebAssemblyLinkErrorConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp
index 2405989..86f9d8b 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryConstructor.cpp
@@ -79,12 +79,12 @@
Wasm::PageCount maximumPageCount;
{
- // In WebIDL, "present" means that [[Get]] result is undefined, not [[HasProperty]] result.
- // https://heycam.github.io/webidl/#idl-dictionaries
Identifier maximum = Identifier::fromString(&vm, "maximum");
- JSValue maxSizeValue = memoryDescriptor->get(exec, maximum);
+ bool hasProperty = memoryDescriptor->hasProperty(exec, maximum);
RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
- if (!maxSizeValue.isUndefined()) {
+ if (hasProperty) {
+ JSValue maxSizeValue = memoryDescriptor->get(exec, maximum);
+ RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
uint32_t size = toNonWrappingUint32(exec, maxSizeValue);
RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
if (!Wasm::PageCount::isValid(size))
@@ -136,7 +136,7 @@
{
Base::finishCreation(vm, "Memory"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyMemoryConstructor::WebAssemblyMemoryConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp
index 1441a9b..082b08d7 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp
@@ -48,8 +48,8 @@
/* Source for WebAssemblyMemoryPrototype.lut.h
@begin prototypeTableWebAssemblyMemory
- grow webAssemblyMemoryProtoFuncGrow Function 1
- buffer webAssemblyMemoryProtoFuncBuffer Accessor 0
+ grow webAssemblyMemoryProtoFuncGrow DontEnum|Function 1
+ buffer webAssemblyMemoryProtoFuncBuffer DontEnum|Accessor 0
@end
*/
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp
index 730f4ec..d96c4ec 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyModuleConstructor.cpp
@@ -59,9 +59,9 @@
/* Source for WebAssemblyModuleConstructor.lut.h
@begin constructorTableWebAssemblyModule
- customSections webAssemblyModuleCustomSections Function 2
- imports webAssemblyModuleImports Function 1
- exports webAssemblyModuleExports Function 1
+ customSections webAssemblyModuleCustomSections DontEnum|Function 2
+ imports webAssemblyModuleImports DontEnum|Function 1
+ exports webAssemblyModuleExports DontEnum|Function 1
@end
*/
@@ -71,14 +71,11 @@
auto* globalObject = exec->lexicalGlobalObject();
auto throwScope = DECLARE_THROW_SCOPE(vm);
- if (UNLIKELY(exec->argumentCount() < 2))
- return JSValue::encode(throwException(exec, throwScope, createNotEnoughArgumentsError(exec)));
-
- JSWebAssemblyModule* module = jsDynamicCast<JSWebAssemblyModule*>(vm, exec->uncheckedArgument(0));
+ JSWebAssemblyModule* module = jsDynamicCast<JSWebAssemblyModule*>(vm, exec->argument(0));
if (!module)
return JSValue::encode(throwException(exec, throwScope, createTypeError(exec, "WebAssembly.Module.customSections called with non WebAssembly.Module argument"_s)));
- const String sectionNameString = exec->uncheckedArgument(1).getString(exec);
+ const String sectionNameString = exec->argument(1).getString(exec);
RETURN_IF_EXCEPTION(throwScope, { });
JSArray* result = constructEmptyArray(exec, nullptr, globalObject);
@@ -206,7 +203,7 @@
{
Base::finishCreation(vm, "Module"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyModuleConstructor::WebAssemblyModuleConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp
new file mode 100644
index 0000000..8a44433
--- /dev/null
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.cpp
@@ -0,0 +1,391 @@
+/*
+ * Copyright (C) 2016-2017 Apple Inc. All rights reserved.
+ * Copyright (C) 2018 Oleksandr Skachkov <gskachkov@gmail.com>.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "WebAssemblyPrototype.h"
+
+#if ENABLE(WEBASSEMBLY)
+
+#include "CatchScope.h"
+#include "Exception.h"
+#include "FunctionPrototype.h"
+#include "JSCBuiltins.h"
+#include "JSCInlines.h"
+#include "JSModuleNamespaceObject.h"
+#include "JSPromiseDeferred.h"
+#include "JSToWasm.h"
+#include "JSWebAssemblyHelpers.h"
+#include "JSWebAssemblyInstance.h"
+#include "JSWebAssemblyModule.h"
+#include "ObjectConstructor.h"
+#include "Options.h"
+#include "PromiseDeferredTimer.h"
+#include "StrongInlines.h"
+#include "ThrowScope.h"
+#include "WasmBBQPlan.h"
+#include "WasmToJS.h"
+#include "WasmWorklist.h"
+#include "WebAssemblyInstanceConstructor.h"
+#include "WebAssemblyModuleConstructor.h"
+
+using JSC::Wasm::Plan;
+using JSC::Wasm::BBQPlan;
+
+namespace JSC {
+static EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState*);
+static EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateFunc(ExecState*);
+static EncodedJSValue JSC_HOST_CALL webAssemblyValidateFunc(ExecState*);
+}
+
+#include "WebAssemblyPrototype.lut.h"
+
+namespace JSC {
+
+const ClassInfo WebAssemblyPrototype::s_info = { "WebAssembly", &Base::s_info, &prototypeTableWebAssembly, nullptr, CREATE_METHOD_TABLE(WebAssemblyPrototype) };
+
+/* Source for WebAssemblyPrototype.lut.h
+ @begin prototypeTableWebAssembly
+ compile webAssemblyCompileFunc DontEnum|Function 1
+ instantiate webAssemblyInstantiateFunc DontEnum|Function 1
+ validate webAssemblyValidateFunc DontEnum|Function 1
+ @end
+ */
+
+static void reject(ExecState* exec, CatchScope& catchScope, JSPromiseDeferred* promise)
+{
+ Exception* exception = catchScope.exception();
+ ASSERT(exception);
+ catchScope.clearException();
+ promise->reject(exec, exception->value());
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
+}
+
+static void webAssemblyModuleValidateAsyncInternal(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source)
+{
+ VM& vm = exec->vm();
+ auto* globalObject = exec->lexicalGlobalObject();
+
+ Vector<Strong<JSCell>> dependencies;
+ dependencies.append(Strong<JSCell>(vm, globalObject));
+
+ vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
+
+ Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
+ vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, globalObject, result = WTFMove(result), &vm] () mutable {
+ auto scope = DECLARE_CATCH_SCOPE(vm);
+ ExecState* exec = globalObject->globalExec();
+ JSValue module = JSWebAssemblyModule::createStub(vm, exec, globalObject->webAssemblyModuleStructure(), WTFMove(result));
+ if (UNLIKELY(scope.exception())) {
+ reject(exec, scope, promise);
+ return;
+ }
+
+ promise->resolve(exec, module);
+ CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
+ });
+ }));
+}
+
+static EncodedJSValue JSC_HOST_CALL webAssemblyCompileFunc(ExecState* exec)
+{
+ VM& vm = exec->vm();
+ auto throwScope = DECLARE_THROW_SCOPE(vm);
+ auto* globalObject = exec->lexicalGlobalObject();
+
+ JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
+ RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
+
+ {
+ auto catchScope = DECLARE_CATCH_SCOPE(vm);
+ Vector<uint8_t> source = createSourceBufferFromValue(vm, exec, exec->argument(0));
+
+ if (UNLIKELY(catchScope.exception()))
+ reject(exec, catchScope, promise);
+ else
+ webAssemblyModuleValidateAsyncInternal(exec, promise, WTFMove(source));
+
+ return JSValue::encode(promise->promise());
+ }
+}
+
+enum class Resolve { WithInstance, WithModuleRecord, WithModuleAndInstance };
+static void resolve(VM& vm, ExecState* exec, JSPromiseDeferred* promise, JSWebAssemblyInstance* instance, JSWebAssemblyModule* module, JSObject* importObject, Ref<Wasm::CodeBlock>&& codeBlock, Resolve resolveKind, Wasm::CreationMode creationMode)
+{
+ auto scope = DECLARE_CATCH_SCOPE(vm);
+ instance->finalizeCreation(vm, exec, WTFMove(codeBlock), importObject, creationMode);
+ RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
+
+ if (resolveKind == Resolve::WithInstance)
+ promise->resolve(exec, instance);
+ else if (resolveKind == Resolve::WithModuleRecord) {
+ auto* moduleRecord = instance->moduleNamespaceObject()->moduleRecord();
+ if (Options::dumpModuleRecord())
+ moduleRecord->dump();
+ promise->resolve(exec, moduleRecord);
+ } else {
+ JSObject* result = constructEmptyObject(exec);
+ result->putDirect(vm, Identifier::fromString(&vm, "module"_s), module);
+ result->putDirect(vm, Identifier::fromString(&vm, "instance"_s), instance);
+ promise->resolve(exec, result);
+ }
+ CLEAR_AND_RETURN_IF_EXCEPTION(scope, void());
+}
+
+void WebAssemblyPrototype::webAssemblyModuleValidateAsync(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source)
+{
+ VM& vm = exec->vm();
+ auto catchScope = DECLARE_CATCH_SCOPE(vm);
+ webAssemblyModuleValidateAsyncInternal(exec, promise, WTFMove(source));
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
+}
+
+static void instantiate(VM& vm, ExecState* exec, JSPromiseDeferred* promise, JSWebAssemblyModule* module, JSObject* importObject, const Identifier& moduleKey, Resolve resolveKind, Wasm::CreationMode creationMode)
+{
+ auto scope = DECLARE_CATCH_SCOPE(vm);
+ // In order to avoid potentially recompiling a module. We first gather all the import/memory information prior to compiling code.
+ JSWebAssemblyInstance* instance = JSWebAssemblyInstance::create(vm, exec, moduleKey, module, importObject, exec->lexicalGlobalObject()->webAssemblyInstanceStructure(), Ref<Wasm::Module>(module->module()), creationMode);
+ RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
+
+ Vector<Strong<JSCell>> dependencies;
+ // The instance keeps the module alive.
+ dependencies.append(Strong<JSCell>(vm, instance));
+ dependencies.append(Strong<JSCell>(vm, importObject));
+ vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
+ // Note: This completion task may or may not get called immediately.
+ module->module().compileAsync(&vm.wasmContext, instance->memoryMode(), createSharedTask<Wasm::CodeBlock::CallbackType>([promise, instance, module, importObject, resolveKind, creationMode, &vm] (Ref<Wasm::CodeBlock>&& refCodeBlock) mutable {
+ RefPtr<Wasm::CodeBlock> codeBlock = WTFMove(refCodeBlock);
+ vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, instance, module, importObject, resolveKind, creationMode, &vm, codeBlock = WTFMove(codeBlock)] () mutable {
+ ExecState* exec = instance->globalObject(vm)->globalExec();
+ resolve(vm, exec, promise, instance, module, importObject, codeBlock.releaseNonNull(), resolveKind, creationMode);
+ });
+ }), &Wasm::createJSToWasmWrapper, &Wasm::wasmToJSException);
+}
+
+static void compileAndInstantiate(VM& vm, ExecState* exec, JSPromiseDeferred* promise, const Identifier& moduleKey, JSValue buffer, JSObject* importObject, Resolve resolveKind, Wasm::CreationMode creationMode)
+{
+ auto scope = DECLARE_CATCH_SCOPE(vm);
+
+ auto* globalObject = exec->lexicalGlobalObject();
+
+ JSCell* moduleKeyCell = identifierToJSValue(vm, moduleKey).asCell();
+ Vector<Strong<JSCell>> dependencies;
+ dependencies.append(Strong<JSCell>(vm, importObject));
+ dependencies.append(Strong<JSCell>(vm, moduleKeyCell));
+ vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
+
+ Vector<uint8_t> source = createSourceBufferFromValue(vm, exec, buffer);
+ RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
+
+ Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, importObject, moduleKeyCell, globalObject, resolveKind, creationMode, &vm] (Wasm::Module::ValidationResult&& result) mutable {
+ vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, moduleKeyCell, globalObject, result = WTFMove(result), resolveKind, creationMode, &vm] () mutable {
+ auto scope = DECLARE_CATCH_SCOPE(vm);
+ ExecState* exec = globalObject->globalExec();
+ JSWebAssemblyModule* module = JSWebAssemblyModule::createStub(vm, exec, globalObject->webAssemblyModuleStructure(), WTFMove(result));
+ if (UNLIKELY(scope.exception()))
+ return reject(exec, scope, promise);
+
+ const Identifier moduleKey = JSValue(moduleKeyCell).toPropertyKey(exec);
+ if (UNLIKELY(scope.exception()))
+ return reject(exec, scope, promise);
+
+ instantiate(vm, exec, promise, module, importObject, moduleKey, resolveKind, creationMode);
+ });
+ }));
+}
+
+JSValue WebAssemblyPrototype::instantiate(ExecState* exec, JSPromiseDeferred* promise, const Identifier& moduleKey, JSValue argument)
+{
+ VM& vm = exec->vm();
+ compileAndInstantiate(vm, exec, promise, moduleKey, argument, nullptr, Resolve::WithModuleRecord, Wasm::CreationMode::FromModuleLoader);
+ return promise->promise();
+}
+
+static void webAssemblyModuleInstantinateAsyncInternal(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source, JSObject* importObject)
+{
+ auto* globalObject = exec->lexicalGlobalObject();
+ VM& vm = exec->vm();
+
+ Vector<Strong<JSCell>> dependencies;
+ dependencies.append(Strong<JSCell>(vm, importObject));
+ dependencies.append(Strong<JSCell>(vm, globalObject));
+ vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
+
+ Wasm::Module::validateAsync(&vm.wasmContext, WTFMove(source), createSharedTask<Wasm::Module::CallbackType>([promise, importObject, globalObject, &vm] (Wasm::Module::ValidationResult&& result) mutable {
+ vm.promiseDeferredTimer->scheduleWorkSoon(promise, [promise, importObject, globalObject, result = WTFMove(result), &vm] () mutable {
+ auto scope = DECLARE_CATCH_SCOPE(vm);
+ ExecState* exec = globalObject->globalExec();
+ JSWebAssemblyModule* module = JSWebAssemblyModule::createStub(vm, exec, globalObject->webAssemblyModuleStructure(), WTFMove(result));
+ if (UNLIKELY(scope.exception()))
+ return reject(exec, scope, promise);
+
+ instantiate(vm, exec, promise, module, importObject, JSWebAssemblyInstance::createPrivateModuleKey(), Resolve::WithModuleAndInstance, Wasm::CreationMode::FromJS);
+ CLEAR_AND_RETURN_IF_EXCEPTION(scope, reject(exec, scope, promise));
+ });
+ }));
+}
+
+void WebAssemblyPrototype::webAssemblyModuleInstantinateAsync(ExecState* exec, JSPromiseDeferred* promise, Vector<uint8_t>&& source, JSObject* importedObject)
+{
+ VM& vm = exec->vm();
+ auto catchScope = DECLARE_CATCH_SCOPE(vm);
+ webAssemblyModuleInstantinateAsyncInternal(exec, promise, WTFMove(source), importedObject);
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, void());
+}
+
+static EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateFunc(ExecState* exec)
+{
+ VM& vm = exec->vm();
+ auto throwScope = DECLARE_THROW_SCOPE(vm);
+ auto* globalObject = exec->lexicalGlobalObject();
+
+ JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
+ RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
+
+ {
+ auto catchScope = DECLARE_CATCH_SCOPE(vm);
+
+ JSValue importArgument = exec->argument(1);
+ JSObject* importObject = importArgument.getObject();
+ if (UNLIKELY(!importArgument.isUndefined() && !importObject)) {
+ promise->reject(exec, createTypeError(exec,
+ "second argument to WebAssembly.instantiate must be undefined or an Object"_s, defaultSourceAppender, runtimeTypeForValue(vm, importArgument)));
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
+ } else {
+ JSValue firstArgument = exec->argument(0);
+ if (auto* module = jsDynamicCast<JSWebAssemblyModule*>(vm, firstArgument))
+ instantiate(vm, exec, promise, module, importObject, JSWebAssemblyInstance::createPrivateModuleKey(), Resolve::WithInstance, Wasm::CreationMode::FromJS);
+ else
+ compileAndInstantiate(vm, exec, promise, JSWebAssemblyInstance::createPrivateModuleKey(), firstArgument, importObject, Resolve::WithModuleAndInstance, Wasm::CreationMode::FromJS);
+ }
+
+ return JSValue::encode(promise->promise());
+ }
+}
+
+static EncodedJSValue JSC_HOST_CALL webAssemblyValidateFunc(ExecState* exec)
+{
+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ auto [base, byteSize] = getWasmBufferFromValue(exec, exec->argument(0));
+ RETURN_IF_EXCEPTION(scope, encodedJSValue());
+ BBQPlan plan(&vm.wasmContext, BBQPlan::Validation, Plan::dontFinalize());
+ // FIXME: We might want to throw an OOM exception here if we detect that something will OOM.
+ // https://bugs.webkit.org/show_bug.cgi?id=166015
+ return JSValue::encode(jsBoolean(plan.parseAndValidateModule(base, byteSize)));
+}
+
+EncodedJSValue JSC_HOST_CALL webAssemblyCompileStreamingInternal(ExecState* exec)
+{
+ VM& vm = exec->vm();
+ auto* globalObject = exec->lexicalGlobalObject();
+ auto catchScope = DECLARE_CATCH_SCOPE(vm);
+
+ JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
+
+ Vector<Strong<JSCell>> dependencies;
+ dependencies.append(Strong<JSCell>(vm, globalObject));
+ vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
+
+ if (globalObject->globalObjectMethodTable()->compileStreaming)
+ globalObject->globalObjectMethodTable()->compileStreaming(globalObject, exec, promise, exec->argument(0));
+ else {
+ // CompileStreaming is not supported in jsc, only in browser environment
+ ASSERT_NOT_REACHED();
+ }
+
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
+
+ return JSValue::encode(promise->promise());
+}
+
+EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateStreamingInternal(ExecState* exec)
+{
+ VM& vm = exec->vm();
+ auto throwScope = DECLARE_THROW_SCOPE(vm);
+ auto* globalObject = exec->lexicalGlobalObject();
+
+ JSPromiseDeferred* promise = JSPromiseDeferred::tryCreate(exec, globalObject);
+ RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
+ {
+ auto catchScope = DECLARE_CATCH_SCOPE(vm);
+
+ JSValue importArgument = exec->argument(1);
+ JSObject* importObject = importArgument.getObject();
+ if (UNLIKELY(!importArgument.isUndefined() && !importObject)) {
+ promise->reject(exec, createTypeError(exec,
+ "second argument to WebAssembly.instantiateStreaming must be undefined or an Object"_s, defaultSourceAppender, runtimeTypeForValue(vm, importArgument)));
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
+ } else {
+ if (globalObject->globalObjectMethodTable()->instantiateStreaming) {
+ Vector<Strong<JSCell>> dependencies;
+ dependencies.append(Strong<JSCell>(vm, globalObject));
+ dependencies.append(Strong<JSCell>(vm, importObject));
+ vm.promiseDeferredTimer->addPendingPromise(vm, promise, WTFMove(dependencies));
+
+ // FIXME: <http://webkit.org/b/184888> if there's an importObject and it contains a Memory, then we can compile the module with the right memory type (fast or not) by looking at the memory's type.
+ globalObject->globalObjectMethodTable()->instantiateStreaming(globalObject, exec, promise, exec->argument(0), importObject);
+ } else {
+ // InstantiateStreaming is not supported in jsc, only in browser environment.
+ ASSERT_NOT_REACHED();
+ }
+ }
+ CLEAR_AND_RETURN_IF_EXCEPTION(catchScope, JSValue::encode(promise->promise()));
+
+ return JSValue::encode(promise->promise());
+ }
+}
+
+WebAssemblyPrototype* WebAssemblyPrototype::create(VM& vm, JSGlobalObject* globalObject, Structure* structure)
+{
+ auto* object = new (NotNull, allocateCell<WebAssemblyPrototype>(vm.heap)) WebAssemblyPrototype(vm, structure);
+ object->finishCreation(vm, globalObject);
+ return object;
+}
+
+Structure* WebAssemblyPrototype::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
+{
+ return Structure::create(vm, globalObject, prototype, TypeInfo(ObjectType, StructureFlags), info());
+}
+
+void WebAssemblyPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
+{
+ Base::finishCreation(vm);
+
+ if (Options::useWebAssemblyStreamingApi()) {
+ JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("compileStreaming", webAssemblyPrototypeCompileStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+ JSC_BUILTIN_FUNCTION_WITHOUT_TRANSITION("instantiateStreaming", webAssemblyPrototypeInstantiateStreamingCodeGenerator, static_cast<unsigned>(PropertyAttribute::DontEnum));
+ }
+}
+
+WebAssemblyPrototype::WebAssemblyPrototype(VM& vm, Structure* structure)
+ : Base(vm, structure)
+{
+}
+
+} // namespace JSC
+
+#endif // ENABLE(WEBASSEMBLY)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h b/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h
new file mode 100644
index 0000000..dc43898
--- /dev/null
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyPrototype.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2018 Oleksandr Skachkov <gskachkov@gmail.com>.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#if ENABLE(WEBASSEMBLY)
+
+#include "JSDestructibleObject.h"
+#include "JSObject.h"
+
+namespace JSC {
+
+class JSPromiseDeferred;
+
+class WebAssemblyPrototype final : public JSNonFinalObject {
+public:
+ typedef JSNonFinalObject Base;
+ static const unsigned StructureFlags = Base::StructureFlags | HasStaticPropertyTable;
+
+ static WebAssemblyPrototype* create(VM&, JSGlobalObject*, Structure*);
+ static Structure* createStructure(VM&, JSGlobalObject*, JSValue);
+ JS_EXPORT_PRIVATE static void webAssemblyModuleValidateAsync(ExecState*, JSPromiseDeferred*, Vector<uint8_t>&&);
+ JS_EXPORT_PRIVATE static void webAssemblyModuleInstantinateAsync(ExecState*, JSPromiseDeferred*, Vector<uint8_t>&&, JSObject*);
+
+ DECLARE_INFO;
+
+ static JSValue instantiate(ExecState*, JSPromiseDeferred*, const Identifier&, JSValue);
+
+protected:
+ void finishCreation(VM&, JSGlobalObject*);
+
+private:
+ WebAssemblyPrototype(VM&, Structure*);
+};
+
+EncodedJSValue JSC_HOST_CALL webAssemblyCompileStreamingInternal(ExecState*);
+EncodedJSValue JSC_HOST_CALL webAssemblyInstantiateStreamingInternal(ExecState*);
+
+} // namespace JSC
+
+#endif // ENABLE(WEBASSEMBLY)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
index 8de9d2d..7107d73 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyRuntimeErrorConstructor.cpp
@@ -79,7 +79,7 @@
{
Base::finishCreation(vm, "RuntimeError"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyRuntimeErrorConstructor::WebAssemblyRuntimeErrorConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp
index 909c281..191e204 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyTableConstructor.cpp
@@ -79,13 +79,13 @@
uint32_t initial = toNonWrappingUint32(exec, initialSizeValue);
RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
- // In WebIDL, "present" means that [[Get]] result is undefined, not [[HasProperty]] result.
- // https://heycam.github.io/webidl/#idl-dictionaries
Optional<uint32_t> maximum;
Identifier maximumIdent = Identifier::fromString(&vm, "maximum");
- JSValue maxSizeValue = memoryDescriptor->get(exec, maximumIdent);
+ bool hasProperty = memoryDescriptor->hasProperty(exec, maximumIdent);
RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
- if (!maxSizeValue.isUndefined()) {
+ if (hasProperty) {
+ JSValue maxSizeValue = memoryDescriptor->get(exec, maximumIdent);
+ RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
maximum = toNonWrappingUint32(exec, maxSizeValue);
RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
@@ -127,7 +127,7 @@
{
Base::finishCreation(vm, "Table"_s, NameVisibility::Visible, NameAdditionMode::WithoutStructureTransition);
putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, PropertyAttribute::DontEnum | PropertyAttribute::DontDelete | PropertyAttribute::ReadOnly);
- putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum);
+ putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), PropertyAttribute::ReadOnly | PropertyAttribute::DontEnum | PropertyAttribute::DontDelete);
}
WebAssemblyTableConstructor::WebAssemblyTableConstructor(VM& vm, Structure* structure)
diff --git a/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp b/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp
index e1c1fba..7f1057f 100644
--- a/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp
+++ b/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp
@@ -48,10 +48,10 @@
/* Source for WebAssemblyTablePrototype.lut.h
@begin prototypeTableWebAssemblyTable
- length webAssemblyTableProtoFuncLength Accessor 0
- grow webAssemblyTableProtoFuncGrow Function 1
- get webAssemblyTableProtoFuncGet Function 1
- set webAssemblyTableProtoFuncSet Function 2
+ length webAssemblyTableProtoFuncLength DontEnum|Accessor 0
+ grow webAssemblyTableProtoFuncGrow DontEnum|Function 1
+ get webAssemblyTableProtoFuncGet DontEnum|Function 1
+ set webAssemblyTableProtoFuncSet DontEnum|Function 2
@end
*/
diff --git a/Source/WebCore/ChangeLog b/Source/WebCore/ChangeLog
index 9903bb46..260ebce 100644
--- a/Source/WebCore/ChangeLog
+++ b/Source/WebCore/ChangeLog
@@ -1,3 +1,16 @@
+2019-07-15 Michael Catanzaro <mcatanzaro@igalia.com>
+
+ Unreviewed, rolling out r247440.
+
+ Broke builds
+
+ Reverted changeset:
+
+ "[JSC] Improve wasm wpt test results by fixing miscellaneous
+ issues"
+ https://bugs.webkit.org/show_bug.cgi?id=199783
+ https://trac.webkit.org/changeset/247440
+
2019-07-15 Daniel Bates <dabates@apple.com>
Typing into a cell in a Google Sheet lags behind by one character
diff --git a/Source/WebCore/bindings/js/JSDOMWindowBase.cpp b/Source/WebCore/bindings/js/JSDOMWindowBase.cpp
index db0c1dc..f48234a 100644
--- a/Source/WebCore/bindings/js/JSDOMWindowBase.cpp
+++ b/Source/WebCore/bindings/js/JSDOMWindowBase.cpp
@@ -50,10 +50,10 @@
#include <JavaScriptCore/CodeBlock.h>
#include <JavaScriptCore/JSInternalPromise.h>
#include <JavaScriptCore/JSInternalPromiseDeferred.h>
-#include <JavaScriptCore/JSWebAssembly.h>
#include <JavaScriptCore/Microtask.h>
#include <JavaScriptCore/PromiseDeferredTimer.h>
#include <JavaScriptCore/StrongInlines.h>
+#include <JavaScriptCore/WebAssemblyPrototype.h>
#include <wtf/Language.h>
#include <wtf/MainThread.h>
@@ -446,7 +446,7 @@
if (auto inputResponse = JSFetchResponse::toWrapped(vm, source)) {
handleResponseOnStreamingAction(globalObject, exec, inputResponse, promise, [promise] (JSC::ExecState* exec, const char* data, size_t byteSize) mutable {
if (auto arrayBuffer = tryAllocate(exec, promise, data, byteSize))
- JSC::JSWebAssembly::webAssemblyModuleValidateAsync(exec, promise, WTFMove(*arrayBuffer));
+ JSC::WebAssemblyPrototype::webAssemblyModuleValidateAsync(exec, promise, WTFMove(*arrayBuffer));
});
} else
promise->reject(exec, createTypeError(exec, "first argument must be an Response or Promise for Response"_s));
@@ -465,7 +465,7 @@
if (auto inputResponse = JSFetchResponse::toWrapped(vm, source)) {
handleResponseOnStreamingAction(globalObject, exec, inputResponse, promise, [promise, importedObject] (JSC::ExecState* exec, const char* data, size_t byteSize) mutable {
if (auto arrayBuffer = tryAllocate(exec, promise, data, byteSize))
- JSC::JSWebAssembly::webAssemblyModuleInstantinateAsync(exec, promise, WTFMove(*arrayBuffer), importedObject);
+ JSC::WebAssemblyPrototype::webAssemblyModuleInstantinateAsync(exec, promise, WTFMove(*arrayBuffer), importedObject);
});
} else
promise->reject(exec, createTypeError(exec, "first argument must be an Response or Promise for Response"_s));