| 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 134 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 145   EXPECT_CALL(6, jsfunc, 0x3F, 0); | 145   EXPECT_CALL(6, jsfunc, 0x3F, 0); | 
| 146 } | 146 } | 
| 147 | 147 | 
| 148 TEST(Run_CallJS_Add_jswrapped) { | 148 TEST(Run_CallJS_Add_jswrapped) { | 
| 149   CcTest::InitializeVM(); | 149   CcTest::InitializeVM(); | 
| 150   TestSignatures sigs; | 150   TestSignatures sigs; | 
| 151   TestingModule module; | 151   TestingModule module; | 
| 152   WasmFunctionCompiler t(sigs.i_i(), &module); | 152   WasmFunctionCompiler t(sigs.i_i(), &module); | 
| 153   uint32_t js_index = | 153   uint32_t js_index = | 
| 154       module.AddJsFunction(sigs.i_i(), "(function(a) { return a + 99; })"); | 154       module.AddJsFunction(sigs.i_i(), "(function(a) { return a + 99; })"); | 
| 155   BUILD(t, WASM_CALL_FUNCTION1(js_index, WASM_GET_LOCAL(0))); | 155   BUILD(t, WASM_CALL_FUNCTION(js_index, WASM_GET_LOCAL(0))); | 
| 156 | 156 | 
| 157   Handle<JSFunction> jsfunc = module.WrapCode(t.CompileAndAdd()); | 157   Handle<JSFunction> jsfunc = module.WrapCode(t.CompileAndAdd()); | 
| 158 | 158 | 
| 159   EXPECT_CALL(101, jsfunc, 2, -8); | 159   EXPECT_CALL(101, jsfunc, 2, -8); | 
| 160   EXPECT_CALL(199, jsfunc, 100, -1); | 160   EXPECT_CALL(199, jsfunc, 100, -1); | 
| 161   EXPECT_CALL(-666666801, jsfunc, -666666900, -1); | 161   EXPECT_CALL(-666666801, jsfunc, -666666900, -1); | 
| 162 } | 162 } | 
| 163 | 163 | 
| 164 void RunJSSelectTest(int which) { | 164 void RunJSSelectTest(int which) { | 
| 165   const int kMaxParams = 8; | 165   const int kMaxParams = 8; | 
| 166   PredictableInputValues inputs(0x100); | 166   PredictableInputValues inputs(0x100); | 
| 167   LocalType type = kAstF64; | 167   LocalType type = kAstF64; | 
| 168   LocalType types[kMaxParams + 1] = {type, type, type, type, type, | 168   LocalType types[kMaxParams + 1] = {type, type, type, type, type, | 
| 169                                      type, type, type, type}; | 169                                      type, type, type, type}; | 
| 170   for (int num_params = which + 1; num_params < kMaxParams; num_params++) { | 170   for (int num_params = which + 1; num_params < kMaxParams; num_params++) { | 
| 171     HandleScope scope(CcTest::InitIsolateOnce()); | 171     HandleScope scope(CcTest::InitIsolateOnce()); | 
| 172     FunctionSig sig(1, num_params, types); | 172     FunctionSig sig(1, num_params, types); | 
| 173 | 173 | 
| 174     TestingModule module; | 174     TestingModule module; | 
| 175     uint32_t js_index = AddJSSelector(&module, &sig, which); | 175     uint32_t js_index = AddJSSelector(&module, &sig, which); | 
| 176     WasmFunctionCompiler t(&sig, &module); | 176     WasmFunctionCompiler t(&sig, &module); | 
| 177 | 177 | 
| 178     { | 178     { | 
| 179       std::vector<byte> code; | 179       std::vector<byte> code; | 
| 180 | 180 | 
| 181       for (int i = 0; i < num_params; i++) { | 181       for (int i = 0; i < num_params; i++) { | 
| 182         ADD_CODE(code, WASM_F64(inputs.arg_d(i))); | 182         ADD_CODE(code, WASM_F64(inputs.arg_d(i))); | 
| 183       } | 183       } | 
| 184 | 184 | 
| 185       ADD_CODE(code, kExprCallFunction, static_cast<byte>(num_params), | 185       ADD_CODE(code, kExprCallFunction, static_cast<byte>(js_index)); | 
| 186                static_cast<byte>(js_index)); |  | 
| 187 | 186 | 
| 188       size_t end = code.size(); | 187       size_t end = code.size(); | 
| 189       code.push_back(0); | 188       code.push_back(0); | 
| 190       t.Build(&code[0], &code[end]); | 189       t.Build(&code[0], &code[end]); | 
| 191     } | 190     } | 
| 192 | 191 | 
| 193     Handle<JSFunction> jsfunc = module.WrapCode(t.CompileAndAdd()); | 192     Handle<JSFunction> jsfunc = module.WrapCode(t.CompileAndAdd()); | 
| 194     double expected = inputs.arg_d(which); | 193     double expected = inputs.arg_d(which); | 
| 195     EXPECT_CALL(expected, jsfunc, 0.0, 0.0); | 194     EXPECT_CALL(expected, jsfunc, 0.0, 0.0); | 
| 196   } | 195   } | 
| (...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 413                                      type, type, type, type, type}; | 412                                      type, type, type, type, type}; | 
| 414   FunctionSig sig(1, num_params, types); | 413   FunctionSig sig(1, num_params, types); | 
| 415 | 414 | 
| 416   // Build the calling code. | 415   // Build the calling code. | 
| 417   std::vector<byte> code; | 416   std::vector<byte> code; | 
| 418 | 417 | 
| 419   for (int i = 0; i < num_params; i++) { | 418   for (int i = 0; i < num_params; i++) { | 
| 420     ADD_CODE(code, WASM_GET_LOCAL(i)); | 419     ADD_CODE(code, WASM_GET_LOCAL(i)); | 
| 421   } | 420   } | 
| 422 | 421 | 
| 423   ADD_CODE(code, kExprCallFunction, static_cast<byte>(num_params), 0); | 422   ADD_CODE(code, kExprCallFunction, 0); | 
| 424 | 423 | 
| 425   size_t end = code.size(); | 424   size_t end = code.size(); | 
| 426   code.push_back(0); | 425   code.push_back(0); | 
| 427 | 426 | 
| 428   // Call different select JS functions. | 427   // Call different select JS functions. | 
| 429   for (int which = 0; which < num_params; which++) { | 428   for (int which = 0; which < num_params; which++) { | 
| 430     HandleScope scope(isolate); | 429     HandleScope scope(isolate); | 
| 431     TestingModule module; | 430     TestingModule module; | 
| 432     uint32_t js_index = AddJSSelector(&module, &sig, which); | 431     uint32_t js_index = AddJSSelector(&module, &sig, which); | 
| 433     CHECK_EQ(0, js_index); | 432     CHECK_EQ(0, js_index); | 
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 509   RunJSSelectAlignTest(9, 9); | 508   RunJSSelectAlignTest(9, 9); | 
| 510 } | 509 } | 
| 511 | 510 | 
| 512 TEST(Run_JSSelectAlign_10) { | 511 TEST(Run_JSSelectAlign_10) { | 
| 513   CcTest::InitializeVM(); | 512   CcTest::InitializeVM(); | 
| 514   RunJSSelectAlignTest(10, 7); | 513   RunJSSelectAlignTest(10, 7); | 
| 515   RunJSSelectAlignTest(10, 8); | 514   RunJSSelectAlignTest(10, 8); | 
| 516   RunJSSelectAlignTest(10, 9); | 515   RunJSSelectAlignTest(10, 9); | 
| 517   RunJSSelectAlignTest(10, 10); | 516   RunJSSelectAlignTest(10, 10); | 
| 518 } | 517 } | 
| OLD | NEW | 
|---|