| 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 <stdio.h> | 6 #include <stdio.h> |
| 7 #include <stdlib.h> | 7 #include <stdlib.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include "src/wasm/wasm-macro-gen.h" | 10 #include "src/wasm/wasm-macro-gen.h" |
| (...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 Handle<JSFunction> jsfunc = r.module().WrapCode(r.function()->func_index); | 143 Handle<JSFunction> jsfunc = r.module().WrapCode(r.function()->func_index); |
| 144 | 144 |
| 145 EXPECT_CALL(101, jsfunc, 2, -8); | 145 EXPECT_CALL(101, jsfunc, 2, -8); |
| 146 EXPECT_CALL(199, jsfunc, 100, -1); | 146 EXPECT_CALL(199, jsfunc, 100, -1); |
| 147 EXPECT_CALL(-666666801, jsfunc, -666666900, -1); | 147 EXPECT_CALL(-666666801, jsfunc, -666666900, -1); |
| 148 } | 148 } |
| 149 | 149 |
| 150 void RunJSSelectTest(int which) { | 150 void RunJSSelectTest(int which) { |
| 151 const int kMaxParams = 8; | 151 const int kMaxParams = 8; |
| 152 PredictableInputValues inputs(0x100); | 152 PredictableInputValues inputs(0x100); |
| 153 LocalType type = kAstF64; | 153 ValueType type = kWasmF64; |
| 154 LocalType types[kMaxParams + 1] = {type, type, type, type, type, | 154 ValueType types[kMaxParams + 1] = {type, type, type, type, type, |
| 155 type, type, type, type}; | 155 type, type, type, type}; |
| 156 for (int num_params = which + 1; num_params < kMaxParams; num_params++) { | 156 for (int num_params = which + 1; num_params < kMaxParams; num_params++) { |
| 157 HandleScope scope(CcTest::InitIsolateOnce()); | 157 HandleScope scope(CcTest::InitIsolateOnce()); |
| 158 FunctionSig sig(1, num_params, types); | 158 FunctionSig sig(1, num_params, types); |
| 159 | 159 |
| 160 WasmRunner<void> r(kExecuteCompiled); | 160 WasmRunner<void> r(kExecuteCompiled); |
| 161 uint32_t js_index = AddJSSelector(&r.module(), &sig, which); | 161 uint32_t js_index = AddJSSelector(&r.module(), &sig, which); |
| 162 WasmFunctionCompiler& t = r.NewFunction(&sig); | 162 WasmFunctionCompiler& t = r.NewFunction(&sig); |
| 163 | 163 |
| 164 { | 164 { |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 TEST(Run_JSSelect_7) { | 219 TEST(Run_JSSelect_7) { |
| 220 CcTest::InitializeVM(); | 220 CcTest::InitializeVM(); |
| 221 RunJSSelectTest(7); | 221 RunJSSelectTest(7); |
| 222 } | 222 } |
| 223 | 223 |
| 224 void RunWASMSelectTest(int which) { | 224 void RunWASMSelectTest(int which) { |
| 225 PredictableInputValues inputs(0x200); | 225 PredictableInputValues inputs(0x200); |
| 226 Isolate* isolate = CcTest::InitIsolateOnce(); | 226 Isolate* isolate = CcTest::InitIsolateOnce(); |
| 227 const int kMaxParams = 8; | 227 const int kMaxParams = 8; |
| 228 for (int num_params = which + 1; num_params < kMaxParams; num_params++) { | 228 for (int num_params = which + 1; num_params < kMaxParams; num_params++) { |
| 229 LocalType type = kAstF64; | 229 ValueType type = kWasmF64; |
| 230 LocalType types[kMaxParams + 1] = {type, type, type, type, type, | 230 ValueType types[kMaxParams + 1] = {type, type, type, type, type, |
| 231 type, type, type, type}; | 231 type, type, type, type}; |
| 232 FunctionSig sig(1, num_params, types); | 232 FunctionSig sig(1, num_params, types); |
| 233 | 233 |
| 234 WasmRunner<void> r(kExecuteCompiled); | 234 WasmRunner<void> r(kExecuteCompiled); |
| 235 WasmFunctionCompiler& t = r.NewFunction(&sig); | 235 WasmFunctionCompiler& t = r.NewFunction(&sig); |
| 236 BUILD(t, WASM_GET_LOCAL(which)); | 236 BUILD(t, WASM_GET_LOCAL(which)); |
| 237 Handle<JSFunction> jsfunc = r.module().WrapCode(t.function_index()); | 237 Handle<JSFunction> jsfunc = r.module().WrapCode(t.function_index()); |
| 238 | 238 |
| 239 Handle<Object> args[] = { | 239 Handle<Object> args[] = { |
| 240 isolate->factory()->NewNumber(inputs.arg_d(0)), | 240 isolate->factory()->NewNumber(inputs.arg_d(0)), |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 290 TEST(Run_WASMSelect_7) { | 290 TEST(Run_WASMSelect_7) { |
| 291 CcTest::InitializeVM(); | 291 CcTest::InitializeVM(); |
| 292 RunWASMSelectTest(7); | 292 RunWASMSelectTest(7); |
| 293 } | 293 } |
| 294 | 294 |
| 295 void RunWASMSelectAlignTest(int num_args, int num_params) { | 295 void RunWASMSelectAlignTest(int num_args, int num_params) { |
| 296 PredictableInputValues inputs(0x300); | 296 PredictableInputValues inputs(0x300); |
| 297 Isolate* isolate = CcTest::InitIsolateOnce(); | 297 Isolate* isolate = CcTest::InitIsolateOnce(); |
| 298 const int kMaxParams = 10; | 298 const int kMaxParams = 10; |
| 299 DCHECK_LE(num_args, kMaxParams); | 299 DCHECK_LE(num_args, kMaxParams); |
| 300 LocalType type = kAstF64; | 300 ValueType type = kWasmF64; |
| 301 LocalType types[kMaxParams + 1] = {type, type, type, type, type, type, | 301 ValueType types[kMaxParams + 1] = {type, type, type, type, type, type, |
| 302 type, type, type, type, type}; | 302 type, type, type, type, type}; |
| 303 FunctionSig sig(1, num_params, types); | 303 FunctionSig sig(1, num_params, types); |
| 304 | 304 |
| 305 for (int which = 0; which < num_params; which++) { | 305 for (int which = 0; which < num_params; which++) { |
| 306 WasmRunner<void> r(kExecuteCompiled); | 306 WasmRunner<void> r(kExecuteCompiled); |
| 307 WasmFunctionCompiler& t = r.NewFunction(&sig); | 307 WasmFunctionCompiler& t = r.NewFunction(&sig); |
| 308 BUILD(t, WASM_GET_LOCAL(which)); | 308 BUILD(t, WASM_GET_LOCAL(which)); |
| 309 Handle<JSFunction> jsfunc = r.module().WrapCode(t.function_index()); | 309 Handle<JSFunction> jsfunc = r.module().WrapCode(t.function_index()); |
| 310 | 310 |
| 311 Handle<Object> args[] = {isolate->factory()->NewNumber(inputs.arg_d(0)), | 311 Handle<Object> args[] = {isolate->factory()->NewNumber(inputs.arg_d(0)), |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 386 RunWASMSelectAlignTest(10, 10); | 386 RunWASMSelectAlignTest(10, 10); |
| 387 } | 387 } |
| 388 | 388 |
| 389 void RunJSSelectAlignTest(int num_args, int num_params) { | 389 void RunJSSelectAlignTest(int num_args, int num_params) { |
| 390 PredictableInputValues inputs(0x400); | 390 PredictableInputValues inputs(0x400); |
| 391 Isolate* isolate = CcTest::InitIsolateOnce(); | 391 Isolate* isolate = CcTest::InitIsolateOnce(); |
| 392 Factory* factory = isolate->factory(); | 392 Factory* factory = isolate->factory(); |
| 393 const int kMaxParams = 10; | 393 const int kMaxParams = 10; |
| 394 CHECK_LE(num_args, kMaxParams); | 394 CHECK_LE(num_args, kMaxParams); |
| 395 CHECK_LE(num_params, kMaxParams); | 395 CHECK_LE(num_params, kMaxParams); |
| 396 LocalType type = kAstF64; | 396 ValueType type = kWasmF64; |
| 397 LocalType types[kMaxParams + 1] = {type, type, type, type, type, type, | 397 ValueType types[kMaxParams + 1] = {type, type, type, type, type, type, |
| 398 type, type, type, type, type}; | 398 type, type, type, type, type}; |
| 399 FunctionSig sig(1, num_params, types); | 399 FunctionSig sig(1, num_params, types); |
| 400 i::AccountingAllocator allocator; | 400 i::AccountingAllocator allocator; |
| 401 Zone zone(&allocator, ZONE_NAME); | 401 Zone zone(&allocator, ZONE_NAME); |
| 402 | 402 |
| 403 // Build the calling code. | 403 // Build the calling code. |
| 404 std::vector<byte> code; | 404 std::vector<byte> code; |
| 405 | 405 |
| 406 for (int i = 0; i < num_params; i++) { | 406 for (int i = 0; i < num_params; i++) { |
| 407 ADD_CODE(code, WASM_GET_LOCAL(i)); | 407 ADD_CODE(code, WASM_GET_LOCAL(i)); |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 RunJSSelectAlignTest(9, 9); | 496 RunJSSelectAlignTest(9, 9); |
| 497 } | 497 } |
| 498 | 498 |
| 499 TEST(Run_JSSelectAlign_10) { | 499 TEST(Run_JSSelectAlign_10) { |
| 500 CcTest::InitializeVM(); | 500 CcTest::InitializeVM(); |
| 501 RunJSSelectAlignTest(10, 7); | 501 RunJSSelectAlignTest(10, 7); |
| 502 RunJSSelectAlignTest(10, 8); | 502 RunJSSelectAlignTest(10, 8); |
| 503 RunJSSelectAlignTest(10, 9); | 503 RunJSSelectAlignTest(10, 9); |
| 504 RunJSSelectAlignTest(10, 10); | 504 RunJSSelectAlignTest(10, 10); |
| 505 } | 505 } |
| OLD | NEW |