From dbc101606b6044c0d769c4116370ba8da21e9502 Mon Sep 17 00:00:00 2001
From: test262-automation
 <40212386+test262-automation@users.noreply.github.com>
Date: Fri, 31 Aug 2018 14:46:07 -0400
Subject: [PATCH] Import test changes from JavaScriptCore (#1698)

* [javascriptcore-test262-automation] Changes from https://github.com/webkit/webkit.git at sha 8a25978f29 on Tue Aug 28 2018 18:16:05 GMT+0000 (Coordinated Universal Time)

* [javascriptcore-test262-automation] Updated curation log with latest revision sha's from export and changed files.
    sourceRevisionAtLastExport: 8a25978f29 targetRevisionAtLastExport: 70dc33467
---
 .../curation_logs/javascriptcore.json         |   4 +-
 .../javascriptcore/stress/regress-188577.js   |  20 ++++++
 .../invalid-duplicate-export.js               |   2 +-
 .../wasm/function-tests/memory-alignment.js   |   2 +-
 .../memory-section-and-import.js              |   2 +-
 ...ument-type-should-be-a-validation-error.js |   6 +-
 .../wasm/js-api/Module-compile.js             |   2 +-
 .../javascriptcore/wasm/js-api/element.js     |   8 +--
 .../wasm/js-api/global-error.js               |   6 +-
 .../javascriptcore/wasm/js-api/table.js       |  62 +++++++++---------
 .../javascriptcore/wasm/js-api/test_Data.js   |   4 +-
 .../javascriptcore/wasm/js-api/test_Start.js  |   2 +-
 .../wasm/js-api/test_basic_api.js             |   2 +-
 .../javascriptcore/wasm/js-api/version.js     |   2 +-
 .../wasm/stress/nameSection.wasm              | Bin 0 -> 13409 bytes
 .../wasm/stress/streaming-basic.js            |  18 +++++
 16 files changed, 90 insertions(+), 52 deletions(-)
 create mode 100644 implementation-contributed/javascriptcore/stress/regress-188577.js
 create mode 100644 implementation-contributed/javascriptcore/wasm/stress/nameSection.wasm
 create mode 100644 implementation-contributed/javascriptcore/wasm/stress/streaming-basic.js

diff --git a/implementation-contributed/curation_logs/javascriptcore.json b/implementation-contributed/curation_logs/javascriptcore.json
index 7e1e764236..10b448f922 100644
--- a/implementation-contributed/curation_logs/javascriptcore.json
+++ b/implementation-contributed/curation_logs/javascriptcore.json
@@ -1,6 +1,6 @@
 {
-  "sourceRevisionAtLastExport": "8a25978f29",
-  "targetRevisionAtLastExport": "70dc33467",
+  "sourceRevisionAtLastExport": "671be37db3",
+  "targetRevisionAtLastExport": "eaa48b4f0",
   "curatedFiles": {
     "/stress/Number-isNaN-basics.js": "DELETED_IN_TARGET",
     "/stress/Object_static_methods_Object.getOwnPropertyDescriptors-proxy.js": "DELETED_IN_TARGET",
diff --git a/implementation-contributed/javascriptcore/stress/regress-188577.js b/implementation-contributed/javascriptcore/stress/regress-188577.js
new file mode 100644
index 0000000000..46b87511b0
--- /dev/null
+++ b/implementation-contributed/javascriptcore/stress/regress-188577.js
@@ -0,0 +1,20 @@
+//@ requireOptions("--maxPerThreadStackUsage=262144")
+
+var exception;
+try {
+    var i = 25000;
+    var args = [];
+    var v3;
+    while (i--)
+        args[i] = "a";
+    var argsList = args.join();
+    setter = Function(argsList, "");
+    Object.defineProperty(args, '0', {set: setter});
+    args.sort();
+
+} catch (e) {
+    exception = e;
+}
+
+if (exception != "RangeError: Maximum call stack size exceeded.")
+    throw "FAILED";
diff --git a/implementation-contributed/javascriptcore/wasm/function-tests/invalid-duplicate-export.js b/implementation-contributed/javascriptcore/wasm/function-tests/invalid-duplicate-export.js
index c47b1e1662..418d51aa49 100644
--- a/implementation-contributed/javascriptcore/wasm/function-tests/invalid-duplicate-export.js
+++ b/implementation-contributed/javascriptcore/wasm/function-tests/invalid-duplicate-export.js
@@ -15,5 +15,5 @@ import * as assert from '../assert.js';
         .End();
 
     const bin = builder.WebAssembly().get();
-    assert.throws(() => new WebAssembly.Module(bin), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 31 / 39: duplicate export: 'foo'");
+    assert.throws(() => new WebAssembly.Module(bin), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 31: duplicate export: 'foo'");
 }
diff --git a/implementation-contributed/javascriptcore/wasm/function-tests/memory-alignment.js b/implementation-contributed/javascriptcore/wasm/function-tests/memory-alignment.js
index abc5741214..e605898900 100644
--- a/implementation-contributed/javascriptcore/wasm/function-tests/memory-alignment.js
+++ b/implementation-contributed/javascriptcore/wasm/function-tests/memory-alignment.js
@@ -42,7 +42,7 @@ for (const op of WASM.opcodes("memory")) {
         if (alignLog2 <= maxAlignLog2)
             instance();
         else
-            assert.throws(instance, WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte ${start} / ${end}: byte alignment ${1 << alignLog2} exceeds ${info.type}'s natural alignment ${1 << maxAlignLog2}, in function at index 0`);
+            assert.throws(instance, WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte ${start}: byte alignment ${1 << alignLog2} exceeds ${info.type}'s natural alignment ${1 << maxAlignLog2}, in function at index 0`);
 
     }
 }
diff --git a/implementation-contributed/javascriptcore/wasm/function-tests/memory-section-and-import.js b/implementation-contributed/javascriptcore/wasm/function-tests/memory-section-and-import.js
index a1db9ce257..15207ef718 100644
--- a/implementation-contributed/javascriptcore/wasm/function-tests/memory-section-and-import.js
+++ b/implementation-contributed/javascriptcore/wasm/function-tests/memory-section-and-import.js
@@ -28,4 +28,4 @@ const builder1 = (new Builder())
       .Code().End();
 
 const i0 = instantiate(builder0);
-assert.throws(() => instantiate(builder1, { imp: { memory: i0.exports.memory } }), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 35 / 41: there can at most be one Memory section for now`);
+assert.throws(() => instantiate(builder1, { imp: { memory: i0.exports.memory } }), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 35: there can at most be one Memory section for now`);
diff --git a/implementation-contributed/javascriptcore/wasm/function-tests/void-argument-type-should-be-a-validation-error.js b/implementation-contributed/javascriptcore/wasm/function-tests/void-argument-type-should-be-a-validation-error.js
index 47149b1d7f..2178810a78 100644
--- a/implementation-contributed/javascriptcore/wasm/function-tests/void-argument-type-should-be-a-validation-error.js
+++ b/implementation-contributed/javascriptcore/wasm/function-tests/void-argument-type-should-be-a-validation-error.js
@@ -17,6 +17,6 @@ function getBinary(params) {
     return builder.WebAssembly().get();
 }
 
-assert.throws(() => new WebAssembly.Module(getBinary(["i32", "void"])), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 15 / 47: can't get 1th argument Type");
-assert.throws(() => new WebAssembly.Module(getBinary(["void"])), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 14 / 46: can't get 0th argument Type");
-assert.throws(() => new WebAssembly.Module(getBinary(["i32", "void", "i32"])), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 15 / 48: can't get 1th argument Type");
+assert.throws(() => new WebAssembly.Module(getBinary(["i32", "void"])), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 15: can't get 1th argument Type");
+assert.throws(() => new WebAssembly.Module(getBinary(["void"])), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 14: can't get 0th argument Type");
+assert.throws(() => new WebAssembly.Module(getBinary(["i32", "void", "i32"])), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 15: can't get 1th argument Type");
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/Module-compile.js b/implementation-contributed/javascriptcore/wasm/js-api/Module-compile.js
index d3beb33257..d723bf4d70 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/Module-compile.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/Module-compile.js
@@ -21,7 +21,7 @@ async function testPromiseAPI() {
             await WebAssembly.compile(builder.WebAssembly().get());
         } catch(e) {
             assert.truthy(e instanceof WebAssembly.CompileError);
-            assert.truthy(e.message === "WebAssembly.Module doesn't parse at byte 34 / 43: there can at most be one Memory section for now");
+            assert.truthy(e.message === "WebAssembly.Module doesn't parse at byte 34: there can at most be one Memory section for now");
         }
     }
 
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/element.js b/implementation-contributed/javascriptcore/wasm/js-api/element.js
index 188ac74151..fcbe2827f3 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/element.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/element.js
@@ -18,7 +18,7 @@ import * as assert from '../assert.js';
             .End()
         .End();
 
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 24 / 41: Element section for Table 0 exceeds available Table 0");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 24: Element section for Table 0 exceeds available Table 0");
 }
 
 {
@@ -41,7 +41,7 @@ import * as assert from '../assert.js';
             .End()
         .End();
 
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 30 / 47: Element section for Table 1 exceeds available Table 1");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 30: Element section for Table 1 exceeds available Table 1");
 }
 
 {
@@ -112,7 +112,7 @@ import * as assert from '../assert.js';
             .End()
         .End();
 
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 38 / 50: Element section's 0th element's 2th index is 1 which exceeds the function index space size of 1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 38: Element section's 0th element's 2th index is 1 which exceeds the function index space size of 1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
 }
 
 {
@@ -215,5 +215,5 @@ import * as assert from '../assert.js';
         return new WebAssembly.Module(bin);
     }
 
-    assert.throws(() => badModule(), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 58 / 72: Element init_expr must produce an i32");
+    assert.throws(() => badModule(), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 58: Element init_expr must produce an i32");
 }
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/global-error.js b/implementation-contributed/javascriptcore/wasm/js-api/global-error.js
index 09f8d799dc..d3edf898e7 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/global-error.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/global-error.js
@@ -23,7 +23,7 @@ import Builder from '../Builder.js';
     const bin = builder.WebAssembly();
     bin.trim();
 
-    assert.throws(() => new WebAssembly.Module(bin.get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 26 / 59: get_global's index 0 exceeds the number of globals 0 (evaluating 'new WebAssembly.Module(bin.get())')");
+    assert.throws(() => new WebAssembly.Module(bin.get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 26: get_global's index 0 exceeds the number of globals 0 (evaluating 'new WebAssembly.Module(bin.get())')");
 }
 
 
@@ -52,7 +52,7 @@ import Builder from '../Builder.js';
     const bin = builder.WebAssembly();
     bin.trim();
 
-    assert.throws(() => new WebAssembly.Module(bin.get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 32 / 76: Mutable Globals aren't supported (evaluating 'new WebAssembly.Module(bin.get())')");
+    assert.throws(() => new WebAssembly.Module(bin.get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 32: Mutable Globals aren't supported (evaluating 'new WebAssembly.Module(bin.get())')");
 }
 
 {
@@ -77,7 +77,7 @@ import Builder from '../Builder.js';
     const bin = builder.WebAssembly();
     bin.trim();
 
-    assert.throws(() => new WebAssembly.Module(bin.get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 51 / 59: 1th Export isn't immutable, named 'global' (evaluating 'new WebAssembly.Module(bin.get())')");
+    assert.throws(() => new WebAssembly.Module(bin.get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 51: 1th Export isn't immutable, named 'global' (evaluating 'new WebAssembly.Module(bin.get())')");
 }
 
 {
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/table.js b/implementation-contributed/javascriptcore/wasm/js-api/table.js
index b832e11766..cf68b44049 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/table.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/table.js
@@ -13,7 +13,7 @@ import * as assert from '../assert.js';
         .End()
         .Code()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 34 / 41: Cannot have more than one Table for now");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 34: Cannot have more than one Table for now");
 }
 
 {
@@ -38,7 +38,7 @@ import * as assert from '../assert.js';
         .End()
         .Code()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 17 / 28: Table count of 2 is invalid, at most 1 is allowed for now (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 17: Table count of 2 is invalid, at most 1 is allowed for now (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
 }
 
 {
@@ -54,7 +54,7 @@ import * as assert from '../assert.js';
                 .CallIndirect(0, 0)
             .End()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 4 / 7: call_indirect is only valid when a table is defined or imported, in function at index 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 4: call_indirect is only valid when a table is defined or imported, in function at index 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
 }
 
 {
@@ -73,7 +73,7 @@ import * as assert from '../assert.js';
                 .CallIndirect(0, 1)
             .End()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 6 / 7: call_indirect's 'reserved' varuint1 must be 0x0, in function at index 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 6: call_indirect's 'reserved' varuint1 must be 0x0, in function at index 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')");
 }
 
 {
@@ -86,7 +86,7 @@ import * as assert from '../assert.js';
         .End()
         .Code()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 23 / 26: can't export Table 0 there are 0 Tables");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 23: can't export Table 0 there are 0 Tables");
 }
 
 {
@@ -102,7 +102,7 @@ import * as assert from '../assert.js';
         .End()
         .Code()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 30 / 33: can't export Table 1 there are 1 Tables");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 30: can't export Table 1 there are 1 Tables");
 }
 
 function assertBadTable(tableDescription, message) {
@@ -132,42 +132,42 @@ function assertBadTableImport(tableDescription, message) {
 {
     let badDescriptions = [
         [{initial: 10, element: "i32"},
-         "WebAssembly.Module doesn't parse at byte 18 / 23: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 34: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, element: "f32"},
-         "WebAssembly.Module doesn't parse at byte 18 / 23: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 34: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, element: "f64"},
-         "WebAssembly.Module doesn't parse at byte 18 / 23: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 34: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, element: "i64"},
-         "WebAssembly.Module doesn't parse at byte 18 / 23: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 34: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, maximum: 20, element: "i32"},
-         "WebAssembly.Module doesn't parse at byte 18 / 24: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 35: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -1 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, maximum: 20, element: "f32"},
-         "WebAssembly.Module doesn't parse at byte 18 / 24: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 35: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -3 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, maximum: 20, element: "f64"},
-         "WebAssembly.Module doesn't parse at byte 18 / 24: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 35: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -4 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 10, maximum: 20, element: "i64"},
-         "WebAssembly.Module doesn't parse at byte 18 / 24: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 26 / 35: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 18: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 26: Table type should be anyfunc, got -2 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
 
         [{initial: 10, maximum: 9, element: "anyfunc"},
-         "WebAssembly.Module doesn't parse at byte 21 / 24: resizable limits has a initial page count of 10 which is greater than its maximum 9 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 29 / 35: resizable limits has a initial page count of 10 which is greater than its maximum 9 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 21: resizable limits has a initial page count of 10 which is greater than its maximum 9 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 29: resizable limits has a initial page count of 10 which is greater than its maximum 9 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 1, maximum: 0, element: "anyfunc"},
-         "WebAssembly.Module doesn't parse at byte 21 / 24: resizable limits has a initial page count of 1 which is greater than its maximum 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 29 / 35: resizable limits has a initial page count of 1 which is greater than its maximum 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 21: resizable limits has a initial page count of 1 which is greater than its maximum 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 29: resizable limits has a initial page count of 1 which is greater than its maximum 0 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 2**32 - 1, maximum: 2**32 - 2, element: "anyfunc"},
-         "WebAssembly.Module doesn't parse at byte 29 / 32: resizable limits has a initial page count of 4294967295 which is greater than its maximum 4294967294 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 37 / 43: resizable limits has a initial page count of 4294967295 which is greater than its maximum 4294967294 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 29: resizable limits has a initial page count of 4294967295 which is greater than its maximum 4294967294 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 37: resizable limits has a initial page count of 4294967295 which is greater than its maximum 4294967294 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
         [{initial: 2**31, element: "anyfunc"},
-         "WebAssembly.Module doesn't parse at byte 24 / 27: Table's initial page count of 2147483648 is too big, maximum 10000000 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
-         "WebAssembly.Module doesn't parse at byte 32 / 38: Table's initial page count of 2147483648 is too big, maximum 10000000 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
+         "WebAssembly.Module doesn't parse at byte 24: Table's initial page count of 2147483648 is too big, maximum 10000000 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')",
+         "WebAssembly.Module doesn't parse at byte 32: Table's initial page count of 2147483648 is too big, maximum 10000000 (evaluating 'new WebAssembly.Module(builder.WebAssembly().get())')"],
     ];
 
     for (const d of badDescriptions) {
@@ -186,7 +186,7 @@ function assertBadTableImport(tableDescription, message) {
         .Function().End()
         .Code()
         .End();
-    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 39 / 48: Cannot have more than one Table for now");
+    assert.throws(() => new WebAssembly.Module(builder.WebAssembly().get()), WebAssembly.CompileError, "WebAssembly.Module doesn't parse at byte 39: Cannot have more than one Table for now");
 }
 
 
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/test_Data.js b/implementation-contributed/javascriptcore/wasm/js-api/test_Data.js
index cca0cf3bc4..4171435128 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/test_Data.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/test_Data.js
@@ -52,7 +52,7 @@ const assertMemoryAllZero = memory => {
           .Segment([0xff]).Offset(0).End()
         .End();
     const bin = builder.WebAssembly().get();
-    assert.throws(() => new WebAssembly.Module(bin), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 15 / 20: 0th Data segment has index 0 which exceeds the number of Memories 0`);
+    assert.throws(() => new WebAssembly.Module(bin), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 15: 0th Data segment has index 0 which exceeds the number of Memories 0`);
 })();
 
 (function EmptyDataSectionWithoutMemory() {
@@ -62,7 +62,7 @@ const assertMemoryAllZero = memory => {
           .Segment([]).Offset(0).End()
         .End();
     const bin = builder.WebAssembly().get();
-    assert.throws(() => new WebAssembly.Module(bin), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 15 / 19: 0th Data segment has index 0 which exceeds the number of Memories 0`);
+    assert.throws(() => new WebAssembly.Module(bin), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 15: 0th Data segment has index 0 which exceeds the number of Memories 0`);
 })();
 
 (function DataSectionBiggerThanMemory() {
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/test_Start.js b/implementation-contributed/javascriptcore/wasm/js-api/test_Start.js
index b44456932d..5c3150e1ca 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/test_Start.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/test_Start.js
@@ -31,5 +31,5 @@ import Builder from '../Builder.js';
         .Start(0).End() // Invalid index.
         .Code().End();
     const bin = b.WebAssembly().get();
-    assert.throws(() => new WebAssembly.Module(bin), Error, `WebAssembly.Module doesn't parse at byte 17 / 20: Start index 0 exceeds function index space 0 (evaluating 'new WebAssembly.Module(bin)')`);
+    assert.throws(() => new WebAssembly.Module(bin), Error, `WebAssembly.Module doesn't parse at byte 17: Start index 0 exceeds function index space 0 (evaluating 'new WebAssembly.Module(bin)')`);
 })();
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/test_basic_api.js b/implementation-contributed/javascriptcore/wasm/js-api/test_basic_api.js
index 08e74aa324..1a2d222103 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/test_basic_api.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/test_basic_api.js
@@ -67,7 +67,7 @@ for (const c in constructorProperties) {
             assert.throws(() => new WebAssembly[c](invalid), TypeError, `first argument must be an ArrayBufferView or an ArrayBuffer (evaluating 'new WebAssembly[c](invalid)')`);
         for (const buffer of [new ArrayBuffer(), new DataView(new ArrayBuffer()), new Int8Array(), new Uint8Array(), new Uint8ClampedArray(), new Int16Array(), new Uint16Array(), new Int32Array(), new Uint32Array(), new Float32Array(), new Float64Array()])
             // FIXME the following should be WebAssembly.CompileError. https://bugs.webkit.org/show_bug.cgi?id=163768
-            assert.throws(() => new WebAssembly[c](buffer), Error, `WebAssembly.Module doesn't parse at byte 0 / 0: expected a module of at least 8 bytes (evaluating 'new WebAssembly[c](buffer)')`);
+            assert.throws(() => new WebAssembly[c](buffer), Error, `WebAssembly.Module doesn't parse at byte 0: expected a module of at least 8 bytes (evaluating 'new WebAssembly[c](buffer)')`);
         assert.instanceof(new WebAssembly[c](emptyModuleArray), WebAssembly.Module);
         break;
     case "Instance":
diff --git a/implementation-contributed/javascriptcore/wasm/js-api/version.js b/implementation-contributed/javascriptcore/wasm/js-api/version.js
index 81cd7ff012..0486fcfdde 100644
--- a/implementation-contributed/javascriptcore/wasm/js-api/version.js
+++ b/implementation-contributed/javascriptcore/wasm/js-api/version.js
@@ -5,5 +5,5 @@ for (let version = 0; version < 256; ++version) {
     if (version === 1)
         continue;
     const emptyModuleArray = Uint8Array.of(0x0, 0x61, 0x73, 0x6d, version, 0x00, 0x00, 0x00);
-    assert.throws(() => new WebAssembly.Module(emptyModuleArray), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 8 / 8: unexpected version number ${version} expected 1`);
+    assert.throws(() => new WebAssembly.Module(emptyModuleArray), WebAssembly.CompileError, `WebAssembly.Module doesn't parse at byte 8: unexpected version number ${version} expected 1`);
 }
diff --git a/implementation-contributed/javascriptcore/wasm/stress/nameSection.wasm b/implementation-contributed/javascriptcore/wasm/stress/nameSection.wasm
new file mode 100644
index 0000000000000000000000000000000000000000..24b22b1aeea38e469c3260ba34d5da4a6db12153
GIT binary patch
literal 13409
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
J5Z`?Ke*s81TjBr!

literal 0
HcmV?d00001

diff --git a/implementation-contributed/javascriptcore/wasm/stress/streaming-basic.js b/implementation-contributed/javascriptcore/wasm/stress/streaming-basic.js
new file mode 100644
index 0000000000..b3fbc2479f
--- /dev/null
+++ b/implementation-contributed/javascriptcore/wasm/stress/streaming-basic.js
@@ -0,0 +1,18 @@
+import * as assert from '../assert.js';
+
+var data = read("./nameSection.wasm", "binary");
+
+function check(step)
+{
+    var parser = $vm.createWasmStreamingParser();
+    for (var i = 0; i < data.byteLength; i += step) {
+        parser.addBytes(data.subarray(i, i + Math.min(step, data.byteLength - i)));
+    }
+    assert.eq(parser.finalize(), 7);
+}
+
+for (var i = 0; i < 10; ++i)
+    check(i + 1);
+check(100);
+check(1000);
+check(2000);
-- 
GitLab