diff options
Diffstat (limited to 'deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc')
-rw-r--r-- | deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc | 298 |
1 files changed, 57 insertions, 241 deletions
diff --git a/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc b/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc index f8523b114c..dd59b48ef5 100644 --- a/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc +++ b/deps/v8/test/cctest/wasm/test-run-wasm-bulk-memory.cc @@ -51,10 +51,9 @@ WASM_EXEC_TEST(MemoryInit) { r.builder().AddMemory(kWasmPageSize); const byte data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; r.builder().AddPassiveDataSegment(base::ArrayVector(data)); - BUILD(r, - WASM_MEMORY_INIT(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), - WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_INIT(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); // All zeroes. CheckMemoryEqualsZero(&r.builder(), 0, kWasmPageSize); @@ -87,10 +86,9 @@ WASM_EXEC_TEST(MemoryInitOutOfBoundsData) { r.builder().AddMemory(kWasmPageSize); const byte data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; r.builder().AddPassiveDataSegment(base::ArrayVector(data)); - BUILD(r, - WASM_MEMORY_INIT(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), - WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_INIT(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); const uint32_t last_5_bytes = kWasmPageSize - 5; @@ -108,10 +106,9 @@ WASM_EXEC_TEST(MemoryInitOutOfBounds) { r.builder().AddMemory(kWasmPageSize); const byte data[kWasmPageSize] = {}; r.builder().AddPassiveDataSegment(base::ArrayVector(data)); - BUILD(r, - WASM_MEMORY_INIT(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), - WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_INIT(0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); // OK, copy the full data segment to memory. r.Call(0, 0, kWasmPageSize); @@ -137,10 +134,9 @@ WASM_EXEC_TEST(MemoryInitOutOfBounds) { WASM_EXEC_TEST(MemoryCopy) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); byte* mem = r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); const byte initial[] = {0, 11, 22, 33, 44, 55, 66, 77}; memcpy(mem, initial, sizeof(initial)); @@ -165,10 +161,9 @@ WASM_EXEC_TEST(MemoryCopy) { WASM_EXEC_TEST(MemoryCopyOverlapping) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); byte* mem = r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); const byte initial[] = {10, 20, 30}; memcpy(mem, initial, sizeof(initial)); @@ -187,10 +182,9 @@ WASM_EXEC_TEST(MemoryCopyOverlapping) { WASM_EXEC_TEST(MemoryCopyOutOfBoundsData) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); byte* mem = r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); const byte data[] = {11, 22, 33, 44, 55, 66, 77, 88}; memcpy(mem, data, sizeof(data)); @@ -215,10 +209,9 @@ WASM_EXEC_TEST(MemoryCopyOutOfBoundsData) { WASM_EXEC_TEST(MemoryCopyOutOfBounds) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_COPY(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); // Copy full range is OK. CHECK_EQ(0, r.Call(0, 0, kWasmPageSize)); @@ -244,10 +237,9 @@ WASM_EXEC_TEST(MemoryCopyOutOfBounds) { WASM_EXEC_TEST(MemoryFill) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); CHECK_EQ(0, r.Call(1, 33, 5)); CheckMemoryEqualsFollowedByZeroes(&r.builder(), {0, 33, 33, 33, 33, 33}); @@ -267,10 +259,9 @@ WASM_EXEC_TEST(MemoryFill) { WASM_EXEC_TEST(MemoryFillValueWrapsToByte) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); CHECK_EQ(0, r.Call(0, 1000, 3)); const byte expected = 1000 & 255; CheckMemoryEqualsFollowedByZeroes(&r.builder(), @@ -280,10 +271,9 @@ WASM_EXEC_TEST(MemoryFillValueWrapsToByte) { WASM_EXEC_TEST(MemoryFillOutOfBoundsData) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); const byte v = 123; CHECK_EQ(0xDEADBEEF, r.Call(kWasmPageSize - 5, v, 999)); CheckMemoryEquals(&r.builder(), kWasmPageSize - 6, {0, 0, 0, 0, 0, 0}); @@ -292,10 +282,9 @@ WASM_EXEC_TEST(MemoryFillOutOfBoundsData) { WASM_EXEC_TEST(MemoryFillOutOfBounds) { WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); r.builder().AddMemory(kWasmPageSize); - BUILD( - r, - WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_MEMORY_FILL(WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), + WASM_LOCAL_GET(2)), + kExprI32Const, 0}); const byte v = 123; @@ -316,7 +305,7 @@ WASM_EXEC_TEST(DataDropTwice) { r.builder().AddMemory(kWasmPageSize); const byte data[] = {0}; r.builder().AddPassiveDataSegment(base::ArrayVector(data)); - BUILD(r, WASM_DATA_DROP(0), kExprI32Const, 0); + r.Build({WASM_DATA_DROP(0), kExprI32Const, 0}); CHECK_EQ(0, r.Call()); CHECK_EQ(0, r.Call()); @@ -327,9 +316,9 @@ WASM_EXEC_TEST(DataDropThenMemoryInit) { r.builder().AddMemory(kWasmPageSize); const byte data[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; r.builder().AddPassiveDataSegment(base::ArrayVector(data)); - BUILD(r, WASM_DATA_DROP(0), - WASM_MEMORY_INIT(0, WASM_I32V_1(0), WASM_I32V_1(1), WASM_I32V_1(2)), - kExprI32Const, 0); + r.Build({WASM_DATA_DROP(0), + WASM_MEMORY_INIT(0, WASM_I32V_1(0), WASM_I32V_1(1), WASM_I32V_1(2)), + kExprI32Const, 0}); CHECK_EQ(0xDEADBEEF, r.Call()); } @@ -342,10 +331,9 @@ void TestTableCopyInbounds(TestExecutionTier execution_tier, int table_dst, for (int i = 0; i < 10; ++i) { r.builder().AddIndirectFunctionTable(nullptr, kTableSize); } - BUILD(r, - WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), - WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), + WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), + kExprI32Const, 0}); for (uint32_t i = 0; i <= kTableSize; ++i) { r.CheckCallViaJS(0, 0, 0, i); // nop @@ -394,151 +382,6 @@ void CheckTableCall(Isolate* isolate, Handle<WasmTableObject> table, } } // namespace -void TestTableInitElems(TestExecutionTier execution_tier, int table_index) { - Isolate* isolate = CcTest::InitIsolateOnce(); - HandleScope scope(isolate); - TestSignatures sigs; - WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); - const uint32_t kTableSize = 5; - std::vector<uint32_t> function_indexes; - const uint32_t sig_index = r.builder().AddSignature(sigs.i_v()); - - for (uint32_t i = 0; i < kTableSize; ++i) { - WasmFunctionCompiler& fn = r.NewFunction(sigs.i_v(), "f"); - BUILD(fn, WASM_I32V_1(i)); - fn.SetSigIndex(sig_index); - function_indexes.push_back(fn.function_index()); - } - - // Add 10 function tables, even though we only test one table. - for (int i = 0; i < 10; ++i) { - r.builder().AddIndirectFunctionTable(nullptr, kTableSize); - } - // Passive element segment has [f0, f1, f2, f3, f4]. - r.builder().AddPassiveElementSegment(function_indexes); - - WasmFunctionCompiler& call = r.NewFunction(sigs.i_i(), "call"); - BUILD(call, - WASM_CALL_INDIRECT_TABLE(table_index, sig_index, WASM_LOCAL_GET(0))); - const uint32_t call_index = call.function_index(); - - BUILD(r, - WASM_TABLE_INIT(table_index, 0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), - WASM_LOCAL_GET(2)), - kExprI32Const, 0); - - auto table = - handle(WasmTableObject::cast( - r.builder().instance_object()->tables().get(table_index)), - isolate); - const double null = 0xDEADBEEF; - - CheckTableCall(isolate, table, &r, call_index, null, null, null, null, null); - - // 0 count is ok in bounds, and at end of regions. - r.CheckCallViaJS(0, 0, 0, 0); - r.CheckCallViaJS(0, kTableSize, 0, 0); - r.CheckCallViaJS(0, 0, kTableSize, 0); - - // Test actual writes. - r.CheckCallViaJS(0, 0, 0, 1); - CheckTableCall(isolate, table, &r, call_index, 0.0, null, null, null, null); - r.CheckCallViaJS(0, 0, 0, 2); - CheckTableCall(isolate, table, &r, call_index, 0.0, 1.0, null, null, null); - r.CheckCallViaJS(0, 0, 0, 3); - CheckTableCall(isolate, table, &r, call_index, 0.0, 1.0, 2.0, null, null); - r.CheckCallViaJS(0, 3, 0, 2); - CheckTableCall(isolate, table, &r, call_index, 0.0, 1.0, 2.0, 0.0, 1.0); - r.CheckCallViaJS(0, 3, 1, 2); - CheckTableCall(isolate, table, &r, call_index, 0.0, 1.0, 2.0, 1.0, 2.0); - r.CheckCallViaJS(0, 3, 2, 2); - CheckTableCall(isolate, table, &r, call_index, 0.0, 1.0, 2.0, 2.0, 3.0); - r.CheckCallViaJS(0, 3, 3, 2); - CheckTableCall(isolate, table, &r, call_index, 0.0, 1.0, 2.0, 3.0, 4.0); -} - -WASM_COMPILED_EXEC_TEST(TableInitElems0) { - TestTableInitElems(execution_tier, 0); -} -WASM_COMPILED_EXEC_TEST(TableInitElems7) { - TestTableInitElems(execution_tier, 7); -} -WASM_COMPILED_EXEC_TEST(TableInitElems9) { - TestTableInitElems(execution_tier, 9); -} - -void TestTableInitOob(TestExecutionTier execution_tier, int table_index) { - Isolate* isolate = CcTest::InitIsolateOnce(); - HandleScope scope(isolate); - TestSignatures sigs; - WasmRunner<uint32_t, uint32_t, uint32_t, uint32_t> r(execution_tier); - const uint32_t kTableSize = 5; - std::vector<uint32_t> function_indexes; - const uint32_t sig_index = r.builder().AddSignature(sigs.i_v()); - - for (uint32_t i = 0; i < kTableSize; ++i) { - WasmFunctionCompiler& fn = r.NewFunction(sigs.i_v(), "f"); - BUILD(fn, WASM_I32V_1(i)); - fn.SetSigIndex(sig_index); - function_indexes.push_back(fn.function_index()); - } - - for (int i = 0; i < 10; ++i) { - r.builder().AddIndirectFunctionTable(nullptr, kTableSize); - } - r.builder().AddPassiveElementSegment(function_indexes); - - WasmFunctionCompiler& call = r.NewFunction(sigs.i_i(), "call"); - BUILD(call, - WASM_CALL_INDIRECT_TABLE(table_index, sig_index, WASM_LOCAL_GET(0))); - const uint32_t call_index = call.function_index(); - - BUILD(r, - WASM_TABLE_INIT(table_index, 0, WASM_LOCAL_GET(0), WASM_LOCAL_GET(1), - WASM_LOCAL_GET(2)), - kExprI32Const, 0); - - auto table = - handle(WasmTableObject::cast( - r.builder().instance_object()->tables().get(table_index)), - isolate); - const double null = 0xDEADBEEF; - - CheckTableCall(isolate, table, &r, call_index, null, null, null, null, null); - - // Out-of-bounds table.init should not have any effect. - r.CheckCallViaJS(0xDEADBEEF, 3, 0, 3); - CheckTableCall(isolate, table, &r, call_index, null, null, null, null, null); - - r.CheckCallViaJS(0xDEADBEEF, 0, 3, 3); - CheckTableCall(isolate, table, &r, call_index, null, null, null, null, null); - - // 0-count is still oob if target is invalid. - r.CheckCallViaJS(0xDEADBEEF, kTableSize + 1, 0, 0); - r.CheckCallViaJS(0xDEADBEEF, 0, kTableSize + 1, 0); - - r.CheckCallViaJS(0xDEADBEEF, 0, 0, 6); - r.CheckCallViaJS(0xDEADBEEF, 0, 1, 5); - r.CheckCallViaJS(0xDEADBEEF, 0, 2, 4); - r.CheckCallViaJS(0xDEADBEEF, 0, 3, 3); - r.CheckCallViaJS(0xDEADBEEF, 0, 4, 2); - r.CheckCallViaJS(0xDEADBEEF, 0, 5, 1); - - r.CheckCallViaJS(0xDEADBEEF, 0, 0, 6); - r.CheckCallViaJS(0xDEADBEEF, 1, 0, 5); - r.CheckCallViaJS(0xDEADBEEF, 2, 0, 4); - r.CheckCallViaJS(0xDEADBEEF, 3, 0, 3); - r.CheckCallViaJS(0xDEADBEEF, 4, 0, 2); - r.CheckCallViaJS(0xDEADBEEF, 5, 0, 1); - - r.CheckCallViaJS(0xDEADBEEF, 10, 0, 1); - r.CheckCallViaJS(0xDEADBEEF, 0, 10, 1); -} - -WASM_COMPILED_EXEC_TEST(TableInitOob0) { TestTableInitOob(execution_tier, 0); } -WASM_COMPILED_EXEC_TEST(TableInitOob7) { TestTableInitOob(execution_tier, 7); } -WASM_COMPILED_EXEC_TEST(TableInitOob9) { TestTableInitOob(execution_tier, 9); } - void TestTableCopyElems(TestExecutionTier execution_tier, int table_dst, int table_src) { Isolate* isolate = CcTest::InitIsolateOnce(); @@ -551,7 +394,7 @@ void TestTableCopyElems(TestExecutionTier execution_tier, int table_dst, for (uint32_t i = 0; i < kTableSize; ++i) { WasmFunctionCompiler& fn = r.NewFunction(sigs.i_v(), "f"); - BUILD(fn, WASM_I32V_1(i)); + fn.Build({WASM_I32V_1(i)}); fn.SetSigIndex(sig_index); function_indexes[i] = fn.function_index(); } @@ -560,10 +403,9 @@ void TestTableCopyElems(TestExecutionTier execution_tier, int table_dst, r.builder().AddIndirectFunctionTable(function_indexes, kTableSize); } - BUILD(r, - WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), - WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), + WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), + kExprI32Const, 0}); r.builder().InitializeWrapperCache(); @@ -629,7 +471,7 @@ void TestTableCopyCalls(TestExecutionTier execution_tier, int table_dst, for (uint32_t i = 0; i < kTableSize; ++i) { WasmFunctionCompiler& fn = r.NewFunction(sigs.i_v(), "f"); - BUILD(fn, WASM_I32V_1(i)); + fn.Build({WASM_I32V_1(i)}); fn.SetSigIndex(sig_index); function_indexes[i] = fn.function_index(); } @@ -639,14 +481,13 @@ void TestTableCopyCalls(TestExecutionTier execution_tier, int table_dst, } WasmFunctionCompiler& call = r.NewFunction(sigs.i_i(), "call"); - BUILD(call, - WASM_CALL_INDIRECT_TABLE(table_dst, sig_index, WASM_LOCAL_GET(0))); + call.Build( + {WASM_CALL_INDIRECT_TABLE(table_dst, sig_index, WASM_LOCAL_GET(0))}); const uint32_t call_index = call.function_index(); - BUILD(r, - WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), - WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), + WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), + kExprI32Const, 0}); auto table = handle(WasmTableObject::cast( @@ -700,7 +541,7 @@ void TestTableCopyOobWrites(TestExecutionTier execution_tier, int table_dst, for (uint32_t i = 0; i < kTableSize; ++i) { WasmFunctionCompiler& fn = r.NewFunction(sigs.i_v(), "f"); - BUILD(fn, WASM_I32V_1(i)); + fn.Build({WASM_I32V_1(i)}); fn.SetSigIndex(sig_index); function_indexes[i] = fn.function_index(); } @@ -709,10 +550,9 @@ void TestTableCopyOobWrites(TestExecutionTier execution_tier, int table_dst, r.builder().AddIndirectFunctionTable(function_indexes, kTableSize); } - BUILD(r, - WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), - WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), + WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), + kExprI32Const, 0}); r.builder().InitializeWrapperCache(); @@ -769,10 +609,9 @@ void TestTableCopyOob1(TestExecutionTier execution_tier, int table_dst, r.builder().AddIndirectFunctionTable(nullptr, kTableSize); } - BUILD(r, - WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), - WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), - kExprI32Const, 0); + r.Build({WASM_TABLE_COPY(table_dst, table_src, WASM_LOCAL_GET(0), + WASM_LOCAL_GET(1), WASM_LOCAL_GET(2)), + kExprI32Const, 0}); r.CheckCallViaJS(0, 0, 0, 1); // nop r.CheckCallViaJS(0, 0, 0, kTableSize); // nop @@ -815,29 +654,6 @@ WASM_COMPILED_EXEC_TEST(TableCopyOob1From6To6) { TestTableCopyOob1(execution_tier, 6, 6); } -WASM_COMPILED_EXEC_TEST(ElemDropTwice) { - WasmRunner<uint32_t> r(execution_tier); - r.builder().AddIndirectFunctionTable(nullptr, 1); - r.builder().AddPassiveElementSegment({}); - BUILD(r, WASM_ELEM_DROP(0), kExprI32Const, 0); - - r.CheckCallViaJS(0); - r.CheckCallViaJS(0); -} - -WASM_COMPILED_EXEC_TEST(ElemDropThenTableInit) { - WasmRunner<uint32_t, uint32_t> r(execution_tier); - r.builder().AddIndirectFunctionTable(nullptr, 1); - r.builder().AddPassiveElementSegment({}); - BUILD( - r, WASM_ELEM_DROP(0), - WASM_TABLE_INIT(0, 0, WASM_I32V_1(0), WASM_I32V_1(0), WASM_LOCAL_GET(0)), - kExprI32Const, 0); - - r.CheckCallViaJS(0, 0); - r.CheckCallViaJS(0xDEADBEEF, 1); -} - } // namespace test_run_wasm_bulk_memory } // namespace wasm } // namespace internal |