OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <stdint.h> | 5 #include <stdint.h> |
6 #include <stdlib.h> | 6 #include <stdlib.h> |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include "src/base/bits.h" | 9 #include "src/base/bits.h" |
10 #include "src/wasm/wasm-macro-gen.h" | 10 #include "src/wasm/wasm-macro-gen.h" |
(...skipping 14 matching lines...) Expand all Loading... |
25 CHECK_EQ(0xdeadbeef, (bit_cast<uint32_t>(x)) & 0xFFFFFFFF) | 25 CHECK_EQ(0xdeadbeef, (bit_cast<uint32_t>(x)) & 0xFFFFFFFF) |
26 #define CHECK_TRAP64(x) \ | 26 #define CHECK_TRAP64(x) \ |
27 CHECK_EQ(0xdeadbeefdeadbeef, (bit_cast<uint64_t>(x)) & 0xFFFFFFFFFFFFFFFF) | 27 CHECK_EQ(0xdeadbeefdeadbeef, (bit_cast<uint64_t>(x)) & 0xFFFFFFFFFFFFFFFF) |
28 #define CHECK_TRAP(x) CHECK_TRAP32(x) | 28 #define CHECK_TRAP(x) CHECK_TRAP32(x) |
29 | 29 |
30 #define asi64(x) static_cast<int64_t>(x) | 30 #define asi64(x) static_cast<int64_t>(x) |
31 | 31 |
32 #define asu64(x) static_cast<uint64_t>(x) | 32 #define asu64(x) static_cast<uint64_t>(x) |
33 | 33 |
34 #define B2(a, b) kExprBlock, a, b, kExprEnd | 34 #define B2(a, b) kExprBlock, a, b, kExprEnd |
35 #define B1(a) kExprBlock, a, kExprEnd | |
36 | 35 |
37 // Can't bridge macro land with nested macros. | 36 // Can't bridge macro land with nested macros. |
38 #if V8_TARGET_ARCH_MIPS | 37 #if V8_TARGET_ARCH_MIPS |
39 #define MIPS true | 38 #define MIPS true |
40 #else | 39 #else |
41 #define MIPS false | 40 #define MIPS false |
42 #endif | 41 #endif |
43 | 42 |
44 #define FOREACH_I64_OPERATOR(V) \ | 43 #define FOREACH_I64_OPERATOR(V) \ |
45 V(DepthFirst, true) \ | 44 V(DepthFirst, true) \ |
(...skipping 782 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
828 continue; | 827 continue; |
829 } else { | 828 } else { |
830 BUILD(t, WASM_GET_LOCAL(i)); | 829 BUILD(t, WASM_GET_LOCAL(i)); |
831 } | 830 } |
832 uint32_t index = t.CompileAndAdd(); | 831 uint32_t index = t.CompileAndAdd(); |
833 | 832 |
834 // Build the calling function. | 833 // Build the calling function. |
835 WasmRunner<int32_t> r(&module); | 834 WasmRunner<int32_t> r(&module); |
836 BUILD( | 835 BUILD( |
837 r, | 836 r, |
838 WASM_I32_CONVERT_I64(WASM_CALL_FUNCTIONN( | 837 WASM_I32_CONVERT_I64(WASM_CALL_FUNCTION( |
839 19, index, WASM_I64V_9(0xbcd12340000000b), | 838 index, WASM_I64V_9(0xbcd12340000000b), |
840 WASM_I64V_9(0xbcd12340000000c), WASM_I32V_1(0xd), | 839 WASM_I64V_9(0xbcd12340000000c), WASM_I32V_1(0xd), |
841 WASM_I32_CONVERT_I64(WASM_I64V_9(0xbcd12340000000e)), | 840 WASM_I32_CONVERT_I64(WASM_I64V_9(0xbcd12340000000e)), |
842 WASM_I64V_9(0xbcd12340000000f), WASM_I64V_10(0xbcd1234000000010), | 841 WASM_I64V_9(0xbcd12340000000f), WASM_I64V_10(0xbcd1234000000010), |
843 WASM_I64V_10(0xbcd1234000000011), WASM_I64V_10(0xbcd1234000000012), | 842 WASM_I64V_10(0xbcd1234000000011), WASM_I64V_10(0xbcd1234000000012), |
844 WASM_I64V_10(0xbcd1234000000013), WASM_I64V_10(0xbcd1234000000014), | 843 WASM_I64V_10(0xbcd1234000000013), WASM_I64V_10(0xbcd1234000000014), |
845 WASM_I64V_10(0xbcd1234000000015), WASM_I64V_10(0xbcd1234000000016), | 844 WASM_I64V_10(0xbcd1234000000015), WASM_I64V_10(0xbcd1234000000016), |
846 WASM_I64V_10(0xbcd1234000000017), WASM_I64V_10(0xbcd1234000000018), | 845 WASM_I64V_10(0xbcd1234000000017), WASM_I64V_10(0xbcd1234000000018), |
847 WASM_I64V_10(0xbcd1234000000019), WASM_I64V_10(0xbcd123400000001a), | 846 WASM_I64V_10(0xbcd1234000000019), WASM_I64V_10(0xbcd123400000001a), |
848 WASM_I64V_10(0xbcd123400000001b), WASM_I64V_10(0xbcd123400000001c), | 847 WASM_I64V_10(0xbcd123400000001b), WASM_I64V_10(0xbcd123400000001c), |
849 WASM_I64V_10(0xbcd123400000001d)))); | 848 WASM_I64V_10(0xbcd123400000001d)))); |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1112 REQUIRE(I64Sub); | 1111 REQUIRE(I64Sub); |
1113 // Build the target function. | 1112 // Build the target function. |
1114 TestSignatures sigs; | 1113 TestSignatures sigs; |
1115 TestingModule module(execution_mode); | 1114 TestingModule module(execution_mode); |
1116 WasmFunctionCompiler t(sigs.l_ll(), &module); | 1115 WasmFunctionCompiler t(sigs.l_ll(), &module); |
1117 BUILD(t, WASM_I64_SUB(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); | 1116 BUILD(t, WASM_I64_SUB(WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); |
1118 uint32_t index = t.CompileAndAdd(); | 1117 uint32_t index = t.CompileAndAdd(); |
1119 | 1118 |
1120 // Build the caller function. | 1119 // Build the caller function. |
1121 WasmRunner<int64_t> r(&module, MachineType::Int64(), MachineType::Int64()); | 1120 WasmRunner<int64_t> r(&module, MachineType::Int64(), MachineType::Int64()); |
1122 BUILD(r, WASM_CALL_FUNCTION2(index, WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); | 1121 BUILD(r, WASM_CALL_FUNCTION(index, WASM_GET_LOCAL(0), WASM_GET_LOCAL(1))); |
1123 | 1122 |
1124 FOR_INT32_INPUTS(i) { | 1123 FOR_INT32_INPUTS(i) { |
1125 FOR_INT32_INPUTS(j) { | 1124 FOR_INT32_INPUTS(j) { |
1126 int64_t a = static_cast<int64_t>(*i) << 32 | | 1125 int64_t a = static_cast<int64_t>(*i) << 32 | |
1127 (static_cast<int64_t>(*j) | 0xFFFFFFFF); | 1126 (static_cast<int64_t>(*j) | 0xFFFFFFFF); |
1128 int64_t b = static_cast<int64_t>(*j) << 32 | | 1127 int64_t b = static_cast<int64_t>(*j) << 32 | |
1129 (static_cast<int64_t>(*i) | 0xFFFFFFFF); | 1128 (static_cast<int64_t>(*i) | 0xFFFFFFFF); |
1130 | 1129 |
1131 int64_t expected = static_cast<int64_t>(static_cast<uint64_t>(a) - | 1130 int64_t expected = static_cast<int64_t>(static_cast<uint64_t>(a) - |
1132 static_cast<uint64_t>(b)); | 1131 static_cast<uint64_t>(b)); |
(...skipping 14 matching lines...) Expand all Loading... |
1147 WasmRunner<int64_t> r(&module); | 1146 WasmRunner<int64_t> r(&module); |
1148 | 1147 |
1149 byte code[] = { | 1148 byte code[] = { |
1150 kExprI8Const, 8, // -- | 1149 kExprI8Const, 8, // -- |
1151 kExprI8Const, 0, // -- | 1150 kExprI8Const, 0, // -- |
1152 loads[m], // -- | 1151 loads[m], // -- |
1153 ZERO_ALIGNMENT, // -- | 1152 ZERO_ALIGNMENT, // -- |
1154 ZERO_OFFSET, // -- | 1153 ZERO_OFFSET, // -- |
1155 kExprI64StoreMem, // -- | 1154 kExprI64StoreMem, // -- |
1156 ZERO_ALIGNMENT, // -- | 1155 ZERO_ALIGNMENT, // -- |
1157 ZERO_OFFSET // -- | 1156 ZERO_OFFSET, // -- |
| 1157 kExprI8Const, 0, // -- |
| 1158 loads[m], // -- |
| 1159 ZERO_ALIGNMENT, // -- |
| 1160 ZERO_OFFSET, // -- |
1158 }; | 1161 }; |
1159 | 1162 |
1160 r.Build(code, code + arraysize(code)); | 1163 r.Build(code, code + arraysize(code)); |
1161 | 1164 |
1162 // Try a bunch of different negative values. | 1165 // Try a bunch of different negative values. |
1163 for (int i = -1; i >= -128; i -= 11) { | 1166 for (int i = -1; i >= -128; i -= 11) { |
1164 int size = 1 << m; | 1167 int size = 1 << m; |
1165 module.BlankMemory(); | 1168 module.BlankMemory(); |
1166 memory[size - 1] = static_cast<byte>(i); // set the high order byte. | 1169 memory[size - 1] = static_cast<byte>(i); // set the high order byte. |
1167 | 1170 |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1249 CHECK_EQ(expected, r.Call()); | 1252 CHECK_EQ(expected, r.Call()); |
1250 } | 1253 } |
1251 } | 1254 } |
1252 | 1255 |
1253 WASM_EXEC_TEST(F64ReinterpretI64) { | 1256 WASM_EXEC_TEST(F64ReinterpretI64) { |
1254 REQUIRE(F64ReinterpretI64); | 1257 REQUIRE(F64ReinterpretI64); |
1255 TestingModule module(execution_mode); | 1258 TestingModule module(execution_mode); |
1256 int64_t* memory = module.AddMemoryElems<int64_t>(8); | 1259 int64_t* memory = module.AddMemoryElems<int64_t>(8); |
1257 WasmRunner<int64_t> r(&module, MachineType::Int64()); | 1260 WasmRunner<int64_t> r(&module, MachineType::Int64()); |
1258 | 1261 |
1259 BUILD(r, | 1262 BUILD(r, WASM_STORE_MEM(MachineType::Float64(), WASM_ZERO, |
1260 WASM_BLOCK(WASM_STORE_MEM(MachineType::Float64(), WASM_ZERO, | 1263 WASM_F64_REINTERPRET_I64(WASM_GET_LOCAL(0))), |
1261 WASM_F64_REINTERPRET_I64(WASM_GET_LOCAL(0))), | 1264 WASM_GET_LOCAL(0)); |
1262 WASM_GET_LOCAL(0))); | |
1263 | 1265 |
1264 FOR_INT32_INPUTS(i) { | 1266 FOR_INT32_INPUTS(i) { |
1265 int64_t expected = static_cast<int64_t>(*i) * 0x300010001; | 1267 int64_t expected = static_cast<int64_t>(*i) * 0x300010001; |
1266 CHECK_EQ(expected, r.Call(expected)); | 1268 CHECK_EQ(expected, r.Call(expected)); |
1267 CHECK_EQ(expected, module.ReadMemory<int64_t>(&memory[0])); | 1269 CHECK_EQ(expected, module.ReadMemory<int64_t>(&memory[0])); |
1268 } | 1270 } |
1269 } | 1271 } |
1270 | 1272 |
1271 WASM_EXEC_TEST(LoadMemI64) { | 1273 WASM_EXEC_TEST(LoadMemI64) { |
1272 REQUIRE(I64LoadStore); | 1274 REQUIRE(I64LoadStore); |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1313 REQUIRE(I64LoadStore); | 1315 REQUIRE(I64LoadStore); |
1314 REQUIRE(I64Add); | 1316 REQUIRE(I64Add); |
1315 REQUIRE(I64Sub); | 1317 REQUIRE(I64Sub); |
1316 REQUIRE(I64Phi); | 1318 REQUIRE(I64Phi); |
1317 const int kNumElems = 20; | 1319 const int kNumElems = 20; |
1318 TestingModule module(execution_mode); | 1320 TestingModule module(execution_mode); |
1319 uint64_t* memory = module.AddMemoryElems<uint64_t>(kNumElems); | 1321 uint64_t* memory = module.AddMemoryElems<uint64_t>(kNumElems); |
1320 WasmRunner<uint64_t> r(&module, MachineType::Int32()); | 1322 WasmRunner<uint64_t> r(&module, MachineType::Int32()); |
1321 const byte kSum = r.AllocateLocal(kAstI64); | 1323 const byte kSum = r.AllocateLocal(kAstI64); |
1322 | 1324 |
1323 BUILD(r, | 1325 BUILD( |
1324 WASM_BLOCK( | 1326 r, |
1325 WASM_WHILE( | 1327 WASM_WHILE( |
1326 WASM_GET_LOCAL(0), | 1328 WASM_GET_LOCAL(0), |
1327 WASM_BLOCK( | 1329 WASM_BLOCK( |
1328 WASM_SET_LOCAL( | 1330 WASM_SET_LOCAL(kSum, |
1329 kSum, WASM_I64_ADD(WASM_GET_LOCAL(kSum), | 1331 WASM_I64_ADD(WASM_GET_LOCAL(kSum), |
1330 WASM_LOAD_MEM(MachineType::Int64(), | 1332 WASM_LOAD_MEM(MachineType::Int64(), |
1331 WASM_GET_LOCAL(0)))), | 1333 WASM_GET_LOCAL(0)))), |
1332 WASM_SET_LOCAL( | 1334 WASM_SET_LOCAL(0, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(8))))), |
1333 0, WASM_I32_SUB(WASM_GET_LOCAL(0), WASM_I8(8))))), | 1335 WASM_GET_LOCAL(1)); |
1334 WASM_GET_LOCAL(1))); | |
1335 | 1336 |
1336 // Run 4 trials. | 1337 // Run 4 trials. |
1337 for (int i = 0; i < 3; i++) { | 1338 for (int i = 0; i < 3; i++) { |
1338 module.RandomizeMemory(i * 33); | 1339 module.RandomizeMemory(i * 33); |
1339 uint64_t expected = 0; | 1340 uint64_t expected = 0; |
1340 for (size_t j = kNumElems - 1; j > 0; j--) { | 1341 for (size_t j = kNumElems - 1; j > 0; j--) { |
1341 expected += module.ReadMemory(&memory[j]); | 1342 expected += module.ReadMemory(&memory[j]); |
1342 } | 1343 } |
1343 uint64_t result = r.Call(8 * (kNumElems - 1)); | 1344 uint64_t result = r.Call(8 * (kNumElems - 1)); |
1344 CHECK_EQ(expected, result); | 1345 CHECK_EQ(expected, result); |
1345 } | 1346 } |
1346 } | 1347 } |
1347 | 1348 |
1348 WASM_EXEC_TEST(StoreMemI64_alignment) { | 1349 WASM_EXEC_TEST(StoreMemI64_alignment) { |
1349 TestingModule module(execution_mode); | 1350 TestingModule module(execution_mode); |
1350 int64_t* memory = module.AddMemoryElems<int64_t>(4); | 1351 int64_t* memory = module.AddMemoryElems<int64_t>(4); |
1351 const int64_t kWritten = 0x12345678abcd0011ll; | 1352 const int64_t kWritten = 0x12345678abcd0011ll; |
1352 | 1353 |
1353 for (byte i = 0; i <= 3; i++) { | 1354 for (byte i = 0; i <= 3; i++) { |
1354 WasmRunner<int64_t> r(&module, MachineType::Int64()); | 1355 WasmRunner<int64_t> r(&module, MachineType::Int64()); |
1355 BUILD(r, WASM_STORE_MEM_ALIGNMENT(MachineType::Int64(), WASM_ZERO, i, | 1356 BUILD(r, WASM_STORE_MEM_ALIGNMENT(MachineType::Int64(), WASM_ZERO, i, |
1356 WASM_GET_LOCAL(0))); | 1357 WASM_GET_LOCAL(0)), |
| 1358 WASM_GET_LOCAL(0)); |
1357 module.RandomizeMemory(1111); | 1359 module.RandomizeMemory(1111); |
1358 module.WriteMemory<int64_t>(&memory[0], 0); | 1360 module.WriteMemory<int64_t>(&memory[0], 0); |
1359 | 1361 |
1360 CHECK_EQ(kWritten, r.Call(kWritten)); | 1362 CHECK_EQ(kWritten, r.Call(kWritten)); |
1361 CHECK_EQ(kWritten, module.ReadMemory(&memory[0])); | 1363 CHECK_EQ(kWritten, module.ReadMemory(&memory[0])); |
1362 } | 1364 } |
1363 } | 1365 } |
1364 | 1366 |
1365 WASM_EXEC_TEST(I64Global) { | 1367 WASM_EXEC_TEST(I64Global) { |
1366 REQUIRE(I64LoadStore); | 1368 REQUIRE(I64LoadStore); |
1367 REQUIRE(I64SConvertI32); | 1369 REQUIRE(I64SConvertI32); |
1368 REQUIRE(I64And); | 1370 REQUIRE(I64And); |
1369 REQUIRE(DepthFirst); | 1371 REQUIRE(DepthFirst); |
1370 TestingModule module(execution_mode); | 1372 TestingModule module(execution_mode); |
1371 int64_t* global = module.AddGlobal<int64_t>(kAstI64); | 1373 int64_t* global = module.AddGlobal<int64_t>(kAstI64); |
1372 WasmRunner<int32_t> r(&module, MachineType::Int32()); | 1374 WasmRunner<int32_t> r(&module, MachineType::Int32()); |
1373 // global = global + p0 | 1375 // global = global + p0 |
1374 BUILD(r, B2(WASM_SET_GLOBAL( | 1376 BUILD(r, WASM_SET_GLOBAL( |
1375 0, WASM_I64_AND(WASM_GET_GLOBAL(0), | 1377 0, WASM_I64_AND(WASM_GET_GLOBAL(0), |
1376 WASM_I64_SCONVERT_I32(WASM_GET_LOCAL(0)))), | 1378 WASM_I64_SCONVERT_I32(WASM_GET_LOCAL(0)))), |
1377 WASM_ZERO)); | 1379 WASM_ZERO); |
1378 | 1380 |
1379 module.WriteMemory<int64_t>(global, 0xFFFFFFFFFFFFFFFFLL); | 1381 module.WriteMemory<int64_t>(global, 0xFFFFFFFFFFFFFFFFLL); |
1380 for (int i = 9; i < 444444; i += 111111) { | 1382 for (int i = 9; i < 444444; i += 111111) { |
1381 int64_t expected = *global & i; | 1383 int64_t expected = *global & i; |
1382 r.Call(i); | 1384 r.Call(i); |
1383 CHECK_EQ(expected, *global); | 1385 CHECK_EQ(expected, *global); |
1384 } | 1386 } |
1385 } | 1387 } |
1386 | 1388 |
1387 WASM_EXEC_TEST(I64Eqz) { | 1389 WASM_EXEC_TEST(I64Eqz) { |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1470 TestingModule module(kExecuteCompiled); | 1472 TestingModule module(kExecuteCompiled); |
1471 FunctionSig* sig = sigs.many(&zone, kAstStmt, param, num_params); | 1473 FunctionSig* sig = sigs.many(&zone, kAstStmt, param, num_params); |
1472 | 1474 |
1473 module.AddSignature(sig); | 1475 module.AddSignature(sig); |
1474 module.AddSignature(sig); | 1476 module.AddSignature(sig); |
1475 module.AddIndirectFunctionTable(nullptr, 0); | 1477 module.AddIndirectFunctionTable(nullptr, 0); |
1476 | 1478 |
1477 WasmFunctionCompiler t(sig, &module); | 1479 WasmFunctionCompiler t(sig, &module); |
1478 | 1480 |
1479 std::vector<byte> code; | 1481 std::vector<byte> code; |
1480 ADD_CODE(code, kExprI8Const, 0); | |
1481 for (byte p = 0; p < num_params; p++) { | 1482 for (byte p = 0; p < num_params; p++) { |
1482 ADD_CODE(code, kExprGetLocal, p); | 1483 ADD_CODE(code, kExprGetLocal, p); |
1483 } | 1484 } |
1484 ADD_CODE(code, kExprCallIndirect, static_cast<byte>(num_params), 1); | 1485 ADD_CODE(code, kExprI8Const, 0); |
| 1486 ADD_CODE(code, kExprCallIndirect, 1); |
1485 | 1487 |
1486 t.Build(&code[0], &code[0] + code.size()); | 1488 t.Build(&code[0], &code[0] + code.size()); |
1487 t.Compile(); | 1489 t.Compile(); |
1488 } | 1490 } |
1489 } | 1491 } |
1490 | 1492 |
1491 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } | 1493 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } |
1492 | 1494 |
1493 static void Run_WasmMixedCall_N(WasmExecutionMode execution_mode, int start) { | 1495 static void Run_WasmMixedCall_N(WasmExecutionMode execution_mode, int start) { |
1494 const int kExpected = 6333; | 1496 const int kExpected = 6333; |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1533 // Load the offset for the store. | 1535 // Load the offset for the store. |
1534 ADD_CODE(code, WASM_ZERO); | 1536 ADD_CODE(code, WASM_ZERO); |
1535 | 1537 |
1536 // Load the arguments. | 1538 // Load the arguments. |
1537 for (int i = 0; i < num_params; i++) { | 1539 for (int i = 0; i < num_params; i++) { |
1538 int offset = (i + 1) * kElemSize; | 1540 int offset = (i + 1) * kElemSize; |
1539 ADD_CODE(code, WASM_LOAD_MEM(memtypes[i], WASM_I8(offset))); | 1541 ADD_CODE(code, WASM_LOAD_MEM(memtypes[i], WASM_I8(offset))); |
1540 } | 1542 } |
1541 | 1543 |
1542 // Call the selector function. | 1544 // Call the selector function. |
1543 ADD_CODE(code, kExprCallFunction, static_cast<byte>(num_params), | 1545 ADD_CODE(code, kExprCallFunction, static_cast<byte>(index)); |
1544 static_cast<byte>(index)); | |
1545 | 1546 |
1546 // Store the result in memory. | 1547 // Store the result in memory. |
1547 ADD_CODE(code, | 1548 ADD_CODE(code, |
1548 static_cast<byte>(WasmOpcodes::LoadStoreOpcodeOf(result, true)), | 1549 static_cast<byte>(WasmOpcodes::LoadStoreOpcodeOf(result, true)), |
1549 ZERO_ALIGNMENT, ZERO_OFFSET); | 1550 ZERO_ALIGNMENT, ZERO_OFFSET); |
1550 | 1551 |
1551 // Return the expected value. | 1552 // Return the expected value. |
1552 ADD_CODE(code, WASM_I32V_2(kExpected)); | 1553 ADD_CODE(code, WASM_I32V_2(kExpected)); |
1553 | 1554 |
1554 r.Build(&code[0], &code[0] + code.size()); | 1555 r.Build(&code[0], &code[0] + code.size()); |
(...skipping 11 matching lines...) Expand all Loading... |
1566 CHECK_EQ(expected, result); | 1567 CHECK_EQ(expected, result); |
1567 } | 1568 } |
1568 } | 1569 } |
1569 } | 1570 } |
1570 } | 1571 } |
1571 | 1572 |
1572 WASM_EXEC_TEST(MixedCall_i64_0) { Run_WasmMixedCall_N(execution_mode, 0); } | 1573 WASM_EXEC_TEST(MixedCall_i64_0) { Run_WasmMixedCall_N(execution_mode, 0); } |
1573 WASM_EXEC_TEST(MixedCall_i64_1) { Run_WasmMixedCall_N(execution_mode, 1); } | 1574 WASM_EXEC_TEST(MixedCall_i64_1) { Run_WasmMixedCall_N(execution_mode, 1); } |
1574 WASM_EXEC_TEST(MixedCall_i64_2) { Run_WasmMixedCall_N(execution_mode, 2); } | 1575 WASM_EXEC_TEST(MixedCall_i64_2) { Run_WasmMixedCall_N(execution_mode, 2); } |
1575 WASM_EXEC_TEST(MixedCall_i64_3) { Run_WasmMixedCall_N(execution_mode, 3); } | 1576 WASM_EXEC_TEST(MixedCall_i64_3) { Run_WasmMixedCall_N(execution_mode, 3); } |
OLD | NEW |