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/wasm/wasm-macro-gen.h" | 9 #include "src/wasm/wasm-macro-gen.h" |
10 | 10 |
(...skipping 1696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1707 BUILD(r, | 1707 BUILD(r, |
1708 B2(WASM_BRV_IF(0, WASM_I8(45), WASM_GET_LOCAL(0)), WASM_INFINITE_LOOP)); | 1708 B2(WASM_BRV_IF(0, WASM_I8(45), WASM_GET_LOCAL(0)), WASM_INFINITE_LOOP)); |
1709 // Run the code, but don't go into the infinite loop. | 1709 // Run the code, but don't go into the infinite loop. |
1710 CHECK_EQ(45, r.Call(1)); | 1710 CHECK_EQ(45, r.Call(1)); |
1711 } | 1711 } |
1712 | 1712 |
1713 | 1713 |
1714 static void TestBuildGraphForSimpleExpression(WasmOpcode opcode) { | 1714 static void TestBuildGraphForSimpleExpression(WasmOpcode opcode) { |
1715 if (!WasmOpcodes::IsSupported(opcode)) return; | 1715 if (!WasmOpcodes::IsSupported(opcode)) return; |
1716 | 1716 |
1717 Zone zone; | |
1718 Isolate* isolate = CcTest::InitIsolateOnce(); | 1717 Isolate* isolate = CcTest::InitIsolateOnce(); |
| 1718 Zone zone(isolate->allocator()); |
1719 HandleScope scope(isolate); | 1719 HandleScope scope(isolate); |
1720 // Enable all optional operators. | 1720 // Enable all optional operators. |
1721 CommonOperatorBuilder common(&zone); | 1721 CommonOperatorBuilder common(&zone); |
1722 MachineOperatorBuilder machine(&zone, MachineType::PointerRepresentation(), | 1722 MachineOperatorBuilder machine(&zone, MachineType::PointerRepresentation(), |
1723 MachineOperatorBuilder::kAllOptionalOps); | 1723 MachineOperatorBuilder::kAllOptionalOps); |
1724 Graph graph(&zone); | 1724 Graph graph(&zone); |
1725 JSGraph jsgraph(isolate, &graph, &common, nullptr, nullptr, &machine); | 1725 JSGraph jsgraph(isolate, &graph, &common, nullptr, nullptr, &machine); |
1726 FunctionSig* sig = WasmOpcodes::Signature(opcode); | 1726 FunctionSig* sig = WasmOpcodes::Signature(opcode); |
1727 | 1727 |
1728 if (sig->parameter_count() == 1) { | 1728 if (sig->parameter_count() == 1) { |
(...skipping 405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2134 #else | 2134 #else |
2135 static MachineType mixed[] = { | 2135 static MachineType mixed[] = { |
2136 MachineType::Int32(), MachineType::Float32(), MachineType::Float64(), | 2136 MachineType::Int32(), MachineType::Float32(), MachineType::Float64(), |
2137 MachineType::Float32(), MachineType::Int32(), MachineType::Float64(), | 2137 MachineType::Float32(), MachineType::Int32(), MachineType::Float64(), |
2138 MachineType::Float32(), MachineType::Float64(), MachineType::Int32(), | 2138 MachineType::Float32(), MachineType::Float64(), MachineType::Int32(), |
2139 MachineType::Int32(), MachineType::Int32()}; | 2139 MachineType::Int32(), MachineType::Int32()}; |
2140 #endif | 2140 #endif |
2141 | 2141 |
2142 int num_params = static_cast<int>(arraysize(mixed)) - start; | 2142 int num_params = static_cast<int>(arraysize(mixed)) - start; |
2143 for (int which = 0; which < num_params; which++) { | 2143 for (int which = 0; which < num_params; which++) { |
2144 Zone zone; | 2144 v8::base::AccountingAllocator allocator; |
| 2145 Zone zone(&allocator); |
2145 TestingModule module; | 2146 TestingModule module; |
2146 module.AddMemory(1024); | 2147 module.AddMemory(1024); |
2147 MachineType* memtypes = &mixed[start]; | 2148 MachineType* memtypes = &mixed[start]; |
2148 MachineType result = memtypes[which]; | 2149 MachineType result = memtypes[which]; |
2149 | 2150 |
2150 // ========================================================================= | 2151 // ========================================================================= |
2151 // Build the selector function. | 2152 // Build the selector function. |
2152 // ========================================================================= | 2153 // ========================================================================= |
2153 uint32_t index; | 2154 uint32_t index; |
2154 FunctionSig::Builder b(&zone, 1, num_params); | 2155 FunctionSig::Builder b(&zone, 1, num_params); |
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2777 FOR_FLOAT32_INPUTS(i) { | 2778 FOR_FLOAT32_INPUTS(i) { |
2778 FOR_FLOAT32_INPUTS(j) { CHECK_FLOAT_EQ(copysign(*i, *j), r.Call(*i, *j)); } | 2779 FOR_FLOAT32_INPUTS(j) { CHECK_FLOAT_EQ(copysign(*i, *j), r.Call(*i, *j)); } |
2779 } | 2780 } |
2780 } | 2781 } |
2781 | 2782 |
2782 void CompileCallIndirectMany(LocalType param) { | 2783 void CompileCallIndirectMany(LocalType param) { |
2783 // Make sure we don't run out of registers when compiling indirect calls | 2784 // Make sure we don't run out of registers when compiling indirect calls |
2784 // with many many parameters. | 2785 // with many many parameters. |
2785 TestSignatures sigs; | 2786 TestSignatures sigs; |
2786 for (byte num_params = 0; num_params < 40; num_params++) { | 2787 for (byte num_params = 0; num_params < 40; num_params++) { |
2787 Zone zone; | 2788 v8::base::AccountingAllocator allocator; |
| 2789 Zone zone(&allocator); |
2788 HandleScope scope(CcTest::InitIsolateOnce()); | 2790 HandleScope scope(CcTest::InitIsolateOnce()); |
2789 TestingModule module; | 2791 TestingModule module; |
2790 FunctionSig* sig = sigs.many(&zone, kAstStmt, param, num_params); | 2792 FunctionSig* sig = sigs.many(&zone, kAstStmt, param, num_params); |
2791 | 2793 |
2792 module.AddSignature(sig); | 2794 module.AddSignature(sig); |
2793 module.AddSignature(sig); | 2795 module.AddSignature(sig); |
2794 module.AddIndirectFunctionTable(nullptr, 0); | 2796 module.AddIndirectFunctionTable(nullptr, 0); |
2795 | 2797 |
2796 WasmFunctionCompiler t(sig, &module); | 2798 WasmFunctionCompiler t(sig, &module); |
2797 | 2799 |
(...skipping 15 matching lines...) Expand all Loading... |
2813 | 2815 |
2814 #if WASM_64 | 2816 #if WASM_64 |
2815 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } | 2817 TEST(Compile_Wasm_CallIndirect_Many_i64) { CompileCallIndirectMany(kAstI64); } |
2816 #endif | 2818 #endif |
2817 | 2819 |
2818 | 2820 |
2819 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } | 2821 TEST(Compile_Wasm_CallIndirect_Many_f32) { CompileCallIndirectMany(kAstF32); } |
2820 | 2822 |
2821 | 2823 |
2822 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } | 2824 TEST(Compile_Wasm_CallIndirect_Many_f64) { CompileCallIndirectMany(kAstF64); } |
OLD | NEW |