| Index: test/cctest/wasm/test-run-wasm-js.cc
|
| diff --git a/test/cctest/wasm/test-run-wasm-js.cc b/test/cctest/wasm/test-run-wasm-js.cc
|
| index 1456850a02e7b4333cbcacf5fed0866afb1513b4..6d95d6e0fcdac0c791f94051e67a5f92d404efbe 100644
|
| --- a/test/cctest/wasm/test-run-wasm-js.cc
|
| +++ b/test/cctest/wasm/test-run-wasm-js.cc
|
| @@ -66,11 +66,18 @@ uint32_t AddJsFunction(TestingModule* module, FunctionSig* sig,
|
|
|
|
|
| uint32_t AddJSSelector(TestingModule* module, FunctionSig* sig, int which) {
|
| - const int kMaxParams = 8;
|
| - static const char* formals[kMaxParams] = {
|
| - "", "a", "a,b", "a,b,c",
|
| - "a,b,c,d", "a,b,c,d,e", "a,b,c,d,e,f", "a,b,c,d,e,f,g",
|
| - };
|
| + const int kMaxParams = 11;
|
| + static const char* formals[kMaxParams] = {"",
|
| + "a",
|
| + "a,b",
|
| + "a,b,c",
|
| + "a,b,c,d",
|
| + "a,b,c,d,e",
|
| + "a,b,c,d,e,f",
|
| + "a,b,c,d,e,f,g",
|
| + "a,b,c,d,e,f,g,h",
|
| + "a,b,c,d,e,f,g,h,i",
|
| + "a,b,c,d,e,f,g,h,i,j"};
|
| CHECK_LT(which, static_cast<int>(sig->parameter_count()));
|
| CHECK_LT(static_cast<int>(sig->parameter_count()), kMaxParams);
|
|
|
| @@ -173,8 +180,6 @@ TEST(Run_I32Popcount_jswrapped) {
|
| }
|
|
|
|
|
| -#if !V8_TARGET_ARCH_ARM64
|
| -// TODO(titzer): dynamic frame alignment on arm64
|
| TEST(Run_CallJS_Add_jswrapped) {
|
| TestSignatures sigs;
|
| TestingModule module;
|
| @@ -189,12 +194,9 @@ TEST(Run_CallJS_Add_jswrapped) {
|
| EXPECT_CALL(199, jsfunc, 100, -1);
|
| EXPECT_CALL(-666666801, jsfunc, -666666900, -1);
|
| }
|
| -#endif
|
|
|
|
|
| void RunJSSelectTest(int which) {
|
| -#if !V8_TARGET_ARCH_ARM
|
| - // TODO(titzer): fix tests on arm and reenable
|
| const int kMaxParams = 8;
|
| PredictableInputValues inputs(0x100);
|
| LocalType type = kAstF64;
|
| @@ -225,7 +227,6 @@ void RunJSSelectTest(int which) {
|
| double expected = inputs.arg_d(which);
|
| EXPECT_CALL(expected, jsfunc, 0.0, 0.0);
|
| }
|
| -#endif
|
| }
|
|
|
|
|
| @@ -298,10 +299,11 @@ TEST(Run_WASMSelect_7) { RunWASMSelectTest(7); }
|
| void RunWASMSelectAlignTest(int num_args, int num_params) {
|
| PredictableInputValues inputs(0x300);
|
| Isolate* isolate = CcTest::InitIsolateOnce();
|
| - const int kMaxParams = 4;
|
| + const int kMaxParams = 10;
|
| DCHECK_LE(num_args, kMaxParams);
|
| LocalType type = kAstF64;
|
| - LocalType types[kMaxParams + 1] = {type, type, type, type, type};
|
| + LocalType types[kMaxParams + 1] = {type, type, type, type, type, type,
|
| + type, type, type, type, type};
|
| FunctionSig sig(1, num_params, types);
|
|
|
| for (int which = 0; which < num_params; which++) {
|
| @@ -310,12 +312,16 @@ void RunWASMSelectAlignTest(int num_args, int num_params) {
|
| BUILD(t, WASM_GET_LOCAL(which));
|
| Handle<JSFunction> jsfunc = WrapCode(&module, t.CompileAndAdd());
|
|
|
| - Handle<Object> args[] = {
|
| - isolate->factory()->NewNumber(inputs.arg_d(0)),
|
| - isolate->factory()->NewNumber(inputs.arg_d(1)),
|
| - isolate->factory()->NewNumber(inputs.arg_d(2)),
|
| - isolate->factory()->NewNumber(inputs.arg_d(3)),
|
| - };
|
| + Handle<Object> args[] = {isolate->factory()->NewNumber(inputs.arg_d(0)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(1)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(2)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(3)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(4)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(5)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(6)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(7)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(8)),
|
| + isolate->factory()->NewNumber(inputs.arg_d(9))};
|
|
|
| double nan = std::numeric_limits<double>::quiet_NaN();
|
| double expected = which < num_args ? inputs.arg_d(which) : nan;
|
| @@ -353,16 +359,43 @@ TEST(Run_WASMSelectAlign_4) {
|
| RunWASMSelectAlignTest(4, 4);
|
| }
|
|
|
| +TEST(Run_WASMSelectAlign_7) {
|
| + RunWASMSelectAlignTest(7, 5);
|
| + RunWASMSelectAlignTest(7, 6);
|
| + RunWASMSelectAlignTest(7, 7);
|
| +}
|
| +
|
| +TEST(Run_WASMSelectAlign_8) {
|
| + RunWASMSelectAlignTest(8, 5);
|
| + RunWASMSelectAlignTest(8, 6);
|
| + RunWASMSelectAlignTest(8, 7);
|
| + RunWASMSelectAlignTest(8, 8);
|
| +}
|
| +
|
| +TEST(Run_WASMSelectAlign_9) {
|
| + RunWASMSelectAlignTest(9, 6);
|
| + RunWASMSelectAlignTest(9, 7);
|
| + RunWASMSelectAlignTest(9, 8);
|
| + RunWASMSelectAlignTest(9, 9);
|
| +}
|
| +
|
| +TEST(Run_WASMSelectAlign_10) {
|
| + RunWASMSelectAlignTest(10, 7);
|
| + RunWASMSelectAlignTest(10, 8);
|
| + RunWASMSelectAlignTest(10, 9);
|
| + RunWASMSelectAlignTest(10, 10);
|
| +}
|
|
|
| void RunJSSelectAlignTest(int num_args, int num_params) {
|
| PredictableInputValues inputs(0x400);
|
| Isolate* isolate = CcTest::InitIsolateOnce();
|
| Factory* factory = isolate->factory();
|
| - const int kMaxParams = 4;
|
| + const int kMaxParams = 10;
|
| CHECK_LE(num_args, kMaxParams);
|
| CHECK_LE(num_params, kMaxParams);
|
| LocalType type = kAstF64;
|
| - LocalType types[kMaxParams + 1] = {type, type, type, type, type};
|
| + LocalType types[kMaxParams + 1] = {type, type, type, type, type, type,
|
| + type, type, type, type, type};
|
| FunctionSig sig(1, num_params, types);
|
|
|
| // Build the calling code.
|
| @@ -392,6 +425,12 @@ void RunJSSelectAlignTest(int num_args, int num_params) {
|
| factory->NewNumber(inputs.arg_d(1)),
|
| factory->NewNumber(inputs.arg_d(2)),
|
| factory->NewNumber(inputs.arg_d(3)),
|
| + factory->NewNumber(inputs.arg_d(4)),
|
| + factory->NewNumber(inputs.arg_d(5)),
|
| + factory->NewNumber(inputs.arg_d(6)),
|
| + factory->NewNumber(inputs.arg_d(7)),
|
| + factory->NewNumber(inputs.arg_d(8)),
|
| + factory->NewNumber(inputs.arg_d(9)),
|
| };
|
|
|
| double nan = std::numeric_limits<double>::quiet_NaN();
|
| @@ -406,29 +445,50 @@ TEST(Run_JSSelectAlign_0) {
|
| RunJSSelectAlignTest(0, 2);
|
| }
|
|
|
| +TEST(Run_JSSelectAlign_1) {
|
| + RunJSSelectAlignTest(1, 2);
|
| + RunJSSelectAlignTest(1, 3);
|
| +}
|
|
|
| TEST(Run_JSSelectAlign_2) {
|
| RunJSSelectAlignTest(2, 3);
|
| RunJSSelectAlignTest(2, 4);
|
| }
|
|
|
| +TEST(Run_JSSelectAlign_3) {
|
| + RunJSSelectAlignTest(3, 3);
|
| + RunJSSelectAlignTest(3, 4);
|
| +}
|
|
|
| TEST(Run_JSSelectAlign_4) {
|
| RunJSSelectAlignTest(4, 3);
|
| RunJSSelectAlignTest(4, 4);
|
| }
|
|
|
| +TEST(Run_JSSelectAlign_7) {
|
| + RunJSSelectAlignTest(7, 3);
|
| + RunJSSelectAlignTest(7, 4);
|
| + RunJSSelectAlignTest(7, 4);
|
| + RunJSSelectAlignTest(7, 4);
|
| +}
|
|
|
| -#if !V8_TARGET_ARCH_ARM64
|
| -// TODO(titzer): dynamic frame alignment on arm64
|
| -TEST(Run_JSSelectAlign_1) {
|
| - RunJSSelectAlignTest(1, 2);
|
| - RunJSSelectAlignTest(1, 3);
|
| +TEST(Run_JSSelectAlign_8) {
|
| + RunJSSelectAlignTest(8, 5);
|
| + RunJSSelectAlignTest(8, 6);
|
| + RunJSSelectAlignTest(8, 7);
|
| + RunJSSelectAlignTest(8, 8);
|
| }
|
|
|
| +TEST(Run_JSSelectAlign_9) {
|
| + RunJSSelectAlignTest(9, 6);
|
| + RunJSSelectAlignTest(9, 7);
|
| + RunJSSelectAlignTest(9, 8);
|
| + RunJSSelectAlignTest(9, 9);
|
| +}
|
|
|
| -TEST(Run_JSSelectAlign_3) {
|
| - RunJSSelectAlignTest(3, 3);
|
| - RunJSSelectAlignTest(3, 4);
|
| +TEST(Run_JSSelectAlign_10) {
|
| + RunJSSelectAlignTest(10, 7);
|
| + RunJSSelectAlignTest(10, 8);
|
| + RunJSSelectAlignTest(10, 9);
|
| + RunJSSelectAlignTest(10, 10);
|
| }
|
| -#endif
|
|
|