summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js')
-rw-r--r--deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js23
1 files changed, 22 insertions, 1 deletions
diff --git a/deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js b/deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js
index 0b01df4427..3915109bbe 100644
--- a/deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js
+++ b/deps/v8/test/mjsunit/wasm/test-wasm-module-builder.js
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// Flags: --expose-wasm
+// Flags: --expose-wasm --experimental-wasm-typed-funcref
d8.file.execute('test/mjsunit/wasm/wasm-module-builder.js');
@@ -183,3 +183,24 @@ function instantiate(buffer, ffi) {
assertEquals(i, instance.exports.main());
}
})();
+
+(function TestBigTypeIndices() {
+ print(arguments.callee.name);
+ // These are all positive type indices (e.g. kI31RefCode and not kWasmI31Ref)
+ // and should be treated as such.
+ let indices = [kI31RefCode, kDataRefCode, 200, 400];
+ let kMaxIndex = 400;
+ let builder = new WasmModuleBuilder();
+ for (let i = 0; i <= kMaxIndex; i++) {
+ builder.addType(kSig_i_i);
+ builder.addFunction(undefined, i)
+ .addBody([kExprLocalGet, 0]);
+ builder.addGlobal(wasmRefType(i), false, WasmInitExpr.RefFunc(i));
+ }
+ for (let i of indices) {
+ builder.addFunction('f_' + i, makeSig([], [wasmRefType(i)]))
+ .addBody([kExprRefFunc, ...wasmSignedLeb(i, 5)])
+ .exportFunc();
+ }
+ builder.instantiate();
+})();