diff options
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.js | 23 |
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(); +})(); |