diff options
Diffstat (limited to 'deps/v8/test/mjsunit/wasm/table-access.js')
-rw-r--r-- | deps/v8/test/mjsunit/wasm/table-access.js | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/deps/v8/test/mjsunit/wasm/table-access.js b/deps/v8/test/mjsunit/wasm/table-access.js index 9a6f0ebc3a..3203b76d0b 100644 --- a/deps/v8/test/mjsunit/wasm/table-access.js +++ b/deps/v8/test/mjsunit/wasm/table-access.js @@ -117,8 +117,8 @@ const dummy_func = exports.set_table_func1; const offset1 = 3; const offset2 = 9; - builder.addElementSegment(t1, offset1, false, [f1.index, f2.index], false); - builder.addElementSegment(t2, offset2, false, [f3.index, f1.index], false); + builder.addElementSegment(t1, offset1, false, [f1.index, f2.index]); + builder.addElementSegment(t2, offset2, false, [f3.index, f1.index]); const instance = builder.instantiate(); @@ -127,3 +127,29 @@ const dummy_func = exports.set_table_func1; assertEquals(value3, instance.exports.get_t2(offset2)()); assertEquals(value1, instance.exports.get_t2(offset2 + 1)()); })(); + +(function testRefFuncInTableIsCallable() { + print(arguments.callee.name); + const expected = 54; + const index = 3; + const builder = new WasmModuleBuilder(); + const table_index = builder.addTable(kWasmAnyFunc, 15, 15).index; + const sig_index = builder.addType(kSig_i_v); + const function_index = builder.addFunction('hidden', sig_index) + .addBody([kExprI32Const, expected]) + .index; + + builder.addFunction('main', kSig_i_v) + .addBody([ + kExprI32Const, index, // entry index + kExprRefFunc, function_index, // function reference + kExprSetTable, table_index, // -- + kExprI32Const, index, // entry index + kExprCallIndirect, sig_index, table_index // -- + + ]) + .exportFunc(); + + const instance = builder.instantiate(); + assertEquals(expected, instance.exports.main()); +})(); |