| 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 // TODO(jochen): Remove this after the setting is turned on globally. | 5 // TODO(jochen): Remove this after the setting is turned on globally. |
| 6 #define V8_IMMINENT_DEPRECATION_WARNINGS | 6 #define V8_IMMINENT_DEPRECATION_WARNINGS |
| 7 | 7 |
| 8 #include "src/assembler.h" | 8 #include "src/assembler.h" |
| 9 #include "src/codegen.h" | 9 #include "src/codegen.h" |
| 10 #include "src/compiler/linkage.h" | 10 #include "src/compiler/linkage.h" |
| 11 #include "src/compiler/machine-type.h" | 11 #include "src/compiler/machine-type.h" |
| 12 #include "src/compiler/raw-machine-assembler.h" | 12 #include "src/compiler/raw-machine-assembler.h" |
| 13 #include "src/register-configuration.h" | 13 #include "src/register-configuration.h" |
| 14 | 14 |
| 15 #include "test/cctest/cctest.h" | 15 #include "test/cctest/cctest.h" |
| 16 #include "test/cctest/compiler/codegen-tester.h" | 16 #include "test/cctest/compiler/codegen-tester.h" |
| 17 #include "test/cctest/compiler/graph-builder-tester.h" | 17 #include "test/cctest/compiler/graph-builder-tester.h" |
| 18 #include "test/cctest/compiler/value-helper.h" | 18 #include "test/cctest/compiler/value-helper.h" |
| 19 | 19 |
| 20 namespace v8 { | 20 namespace v8 { |
| 21 namespace internal { | 21 namespace internal { |
| 22 namespace compiler { | 22 namespace compiler { |
| 23 | 23 |
| 24 #if V8_TARGET_ARCH_ARM64 | |
| 25 // TODO(titzer): fix native stack parameters on arm64 | |
| 26 #define DISABLE_NATIVE_STACK_PARAMS true | |
| 27 #else | |
| 28 #define DISABLE_NATIVE_STACK_PARAMS false | |
| 29 #endif | |
| 30 | |
| 31 namespace { | 24 namespace { |
| 32 typedef float float32; | 25 typedef float float32; |
| 33 typedef double float64; | 26 typedef double float64; |
| 34 | 27 |
| 35 // Picks a representative pair of integers from the given range. | 28 // Picks a representative pair of integers from the given range. |
| 36 // If there are less than {max_pairs} possible pairs, do them all, otherwise try | 29 // If there are less than {max_pairs} possible pairs, do them all, otherwise try |
| 37 // to select a representative set. | 30 // to select a representative set. |
| 38 class Pairs { | 31 class Pairs { |
| 39 public: | 32 public: |
| 40 Pairs(int max_pairs, int range, const int* codes) | 33 Pairs(int max_pairs, int range, const int* codes) |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 return new (zone) CallDescriptor( // -- | 207 return new (zone) CallDescriptor( // -- |
| 215 CallDescriptor::kCallCodeObject, // kind | 208 CallDescriptor::kCallCodeObject, // kind |
| 216 target_type, // target MachineType | 209 target_type, // target MachineType |
| 217 target_loc, // target location | 210 target_loc, // target location |
| 218 msig, // machine_sig | 211 msig, // machine_sig |
| 219 locations.Build(), // location_sig | 212 locations.Build(), // location_sig |
| 220 stack_param_count, // stack_parameter_count | 213 stack_param_count, // stack_parameter_count |
| 221 compiler::Operator::kNoProperties, // properties | 214 compiler::Operator::kNoProperties, // properties |
| 222 kCalleeSaveRegisters, // callee-saved registers | 215 kCalleeSaveRegisters, // callee-saved registers |
| 223 kCalleeSaveFPRegisters, // callee-saved fp regs | 216 kCalleeSaveFPRegisters, // callee-saved fp regs |
| 224 CallDescriptor::kNoFlags, // flags | 217 CallDescriptor::kUseNativeStack, // flags |
| 225 "c-call"); | 218 "c-call"); |
| 226 } | 219 } |
| 227 | 220 |
| 228 private: | 221 private: |
| 229 Allocator& params; | 222 Allocator& params; |
| 230 Allocator& rets; | 223 Allocator& rets; |
| 231 }; | 224 }; |
| 232 | 225 |
| 233 const int kMaxParamCount = 64; | 226 const int kMaxParamCount = 64; |
| 234 | 227 |
| (...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 552 int32_t expected = static_cast<int32_t>(static_cast<uint32_t>(*i) - | 545 int32_t expected = static_cast<int32_t>(static_cast<uint32_t>(*i) - |
| 553 static_cast<uint32_t>(*j)); | 546 static_cast<uint32_t>(*j)); |
| 554 int32_t result = runnable.Call(*i, *j); | 547 int32_t result = runnable.Call(*i, *j); |
| 555 CHECK_EQ(expected, result); | 548 CHECK_EQ(expected, result); |
| 556 } | 549 } |
| 557 } | 550 } |
| 558 } | 551 } |
| 559 | 552 |
| 560 | 553 |
| 561 static void CopyTwentyInt32(CallDescriptor* desc) { | 554 static void CopyTwentyInt32(CallDescriptor* desc) { |
| 562 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 563 | |
| 564 const int kNumParams = 20; | 555 const int kNumParams = 20; |
| 565 int32_t input[kNumParams]; | 556 int32_t input[kNumParams]; |
| 566 int32_t output[kNumParams]; | 557 int32_t output[kNumParams]; |
| 567 Isolate* isolate = CcTest::InitIsolateOnce(); | 558 Isolate* isolate = CcTest::InitIsolateOnce(); |
| 568 HandleScope scope(isolate); | 559 HandleScope scope(isolate); |
| 569 Handle<Code> inner = Handle<Code>::null(); | 560 Handle<Code> inner = Handle<Code>::null(); |
| 570 { | 561 { |
| 571 // Writes all parameters into the output buffer. | 562 // Writes all parameters into the output buffer. |
| 572 Zone zone; | 563 Zone zone; |
| 573 Graph graph(&zone); | 564 Graph graph(&zone); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 665 TEST_INT32_SUB_WITH_RET(13) | 656 TEST_INT32_SUB_WITH_RET(13) |
| 666 TEST_INT32_SUB_WITH_RET(14) | 657 TEST_INT32_SUB_WITH_RET(14) |
| 667 TEST_INT32_SUB_WITH_RET(15) | 658 TEST_INT32_SUB_WITH_RET(15) |
| 668 TEST_INT32_SUB_WITH_RET(16) | 659 TEST_INT32_SUB_WITH_RET(16) |
| 669 TEST_INT32_SUB_WITH_RET(17) | 660 TEST_INT32_SUB_WITH_RET(17) |
| 670 TEST_INT32_SUB_WITH_RET(18) | 661 TEST_INT32_SUB_WITH_RET(18) |
| 671 TEST_INT32_SUB_WITH_RET(19) | 662 TEST_INT32_SUB_WITH_RET(19) |
| 672 | 663 |
| 673 | 664 |
| 674 TEST(Run_Int32Sub_all_allocatable_single) { | 665 TEST(Run_Int32Sub_all_allocatable_single) { |
| 675 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 676 Int32Signature sig(2); | 666 Int32Signature sig(2); |
| 677 RegisterPairs pairs; | 667 RegisterPairs pairs; |
| 678 while (pairs.More()) { | 668 while (pairs.More()) { |
| 679 Zone zone; | 669 Zone zone; |
| 680 int parray[1]; | 670 int parray[1]; |
| 681 int rarray[1]; | 671 int rarray[1]; |
| 682 pairs.Next(&rarray[0], &parray[0], true); | 672 pairs.Next(&rarray[0], &parray[0], true); |
| 683 Allocator params(parray, 1, nullptr, 0); | 673 Allocator params(parray, 1, nullptr, 0); |
| 684 Allocator rets(rarray, 1, nullptr, 0); | 674 Allocator rets(rarray, 1, nullptr, 0); |
| 685 RegisterConfig config(params, rets); | 675 RegisterConfig config(params, rets); |
| 686 CallDescriptor* desc = config.Create(&zone, &sig); | 676 CallDescriptor* desc = config.Create(&zone, &sig); |
| 687 TestInt32Sub(desc); | 677 TestInt32Sub(desc); |
| 688 } | 678 } |
| 689 } | 679 } |
| 690 | 680 |
| 691 | 681 |
| 692 TEST(Run_CopyTwentyInt32_all_allocatable_pairs) { | 682 TEST(Run_CopyTwentyInt32_all_allocatable_pairs) { |
| 693 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 694 Int32Signature sig(20); | 683 Int32Signature sig(20); |
| 695 RegisterPairs pairs; | 684 RegisterPairs pairs; |
| 696 while (pairs.More()) { | 685 while (pairs.More()) { |
| 697 Zone zone; | 686 Zone zone; |
| 698 int parray[2]; | 687 int parray[2]; |
| 699 int rarray[] = { | 688 int rarray[] = { |
| 700 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 689 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 701 ->GetAllocatableGeneralCode(0)}; | 690 ->GetAllocatableGeneralCode(0)}; |
| 702 pairs.Next(&parray[0], &parray[1], false); | 691 pairs.Next(&parray[0], &parray[1], false); |
| 703 Allocator params(parray, 2, nullptr, 0); | 692 Allocator params(parray, 2, nullptr, 0); |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 static int32_t Compute_Int32_WeightedSum(CallDescriptor* desc, int32_t* input) { | 725 static int32_t Compute_Int32_WeightedSum(CallDescriptor* desc, int32_t* input) { |
| 737 uint32_t result = 0; | 726 uint32_t result = 0; |
| 738 for (int i = 0; i < ParamCount(desc); i++) { | 727 for (int i = 0; i < ParamCount(desc); i++) { |
| 739 result += static_cast<uint32_t>(input[i]) * coeff[i]; | 728 result += static_cast<uint32_t>(input[i]) * coeff[i]; |
| 740 } | 729 } |
| 741 return static_cast<int32_t>(result); | 730 return static_cast<int32_t>(result); |
| 742 } | 731 } |
| 743 | 732 |
| 744 | 733 |
| 745 static void Test_Int32_WeightedSum_of_size(int count) { | 734 static void Test_Int32_WeightedSum_of_size(int count) { |
| 746 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 747 Int32Signature sig(count); | 735 Int32Signature sig(count); |
| 748 for (int p0 = 0; p0 < Register::kNumRegisters; p0++) { | 736 for (int p0 = 0; p0 < Register::kNumRegisters; p0++) { |
| 749 if (Register::from_code(p0).IsAllocatable()) { | 737 if (Register::from_code(p0).IsAllocatable()) { |
| 750 Zone zone; | 738 Zone zone; |
| 751 | 739 |
| 752 int parray[] = {p0}; | 740 int parray[] = {p0}; |
| 753 int rarray[] = { | 741 int rarray[] = { |
| 754 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 742 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 755 ->GetAllocatableGeneralCode(0)}; | 743 ->GetAllocatableGeneralCode(0)}; |
| 756 Allocator params(parray, 1, nullptr, 0); | 744 Allocator params(parray, 1, nullptr, 0); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 798 int count = ParamCount(desc); | 786 int count = ParamCount(desc); |
| 799 if (count <= which) return; | 787 if (count <= which) return; |
| 800 Run_Computation<CType>(desc, Build_Select<which>, | 788 Run_Computation<CType>(desc, Build_Select<which>, |
| 801 Compute_Select<CType, which>, | 789 Compute_Select<CType, which>, |
| 802 1044 + which + 3 * sizeof(CType)); | 790 1044 + which + 3 * sizeof(CType)); |
| 803 } | 791 } |
| 804 | 792 |
| 805 | 793 |
| 806 template <int which> | 794 template <int which> |
| 807 void Test_Int32_Select() { | 795 void Test_Int32_Select() { |
| 808 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 809 | |
| 810 int parray[] = { | 796 int parray[] = { |
| 811 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 797 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 812 ->GetAllocatableGeneralCode(0)}; | 798 ->GetAllocatableGeneralCode(0)}; |
| 813 int rarray[] = { | 799 int rarray[] = { |
| 814 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 800 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 815 ->GetAllocatableGeneralCode(0)}; | 801 ->GetAllocatableGeneralCode(0)}; |
| 816 Allocator params(parray, 1, nullptr, 0); | 802 Allocator params(parray, 1, nullptr, 0); |
| 817 Allocator rets(rarray, 1, nullptr, 0); | 803 Allocator rets(rarray, 1, nullptr, 0); |
| 818 RegisterConfig config(params, rets); | 804 RegisterConfig config(params, rets); |
| 819 | 805 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 923 RegisterConfig config(params, rets); | 909 RegisterConfig config(params, rets); |
| 924 | 910 |
| 925 CallDescriptor* desc = config.Create(&zone, &sig); | 911 CallDescriptor* desc = config.Create(&zone, &sig); |
| 926 RunSelect<float64, 0>(desc); | 912 RunSelect<float64, 0>(desc); |
| 927 RunSelect<float64, 1>(desc); | 913 RunSelect<float64, 1>(desc); |
| 928 } | 914 } |
| 929 } | 915 } |
| 930 | 916 |
| 931 | 917 |
| 932 TEST(Float32Select_stack_params_return_reg) { | 918 TEST(Float32Select_stack_params_return_reg) { |
| 933 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 934 int rarray[] = { | 919 int rarray[] = { |
| 935 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 920 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 936 ->GetAllocatableDoubleCode(0)}; | 921 ->GetAllocatableDoubleCode(0)}; |
| 937 Allocator params(nullptr, 0, nullptr, 0); | 922 Allocator params(nullptr, 0, nullptr, 0); |
| 938 Allocator rets(nullptr, 0, rarray, 1); | 923 Allocator rets(nullptr, 0, rarray, 1); |
| 939 RegisterConfig config(params, rets); | 924 RegisterConfig config(params, rets); |
| 940 | 925 |
| 941 Zone zone; | 926 Zone zone; |
| 942 for (int count = 1; count < 6; count++) { | 927 for (int count = 1; count < 6; count++) { |
| 943 ArgsBuffer<float32>::Sig sig(count); | 928 ArgsBuffer<float32>::Sig sig(count); |
| 944 CallDescriptor* desc = config.Create(&zone, &sig); | 929 CallDescriptor* desc = config.Create(&zone, &sig); |
| 945 RunSelect<float32, 0>(desc); | 930 RunSelect<float32, 0>(desc); |
| 946 RunSelect<float32, 1>(desc); | 931 RunSelect<float32, 1>(desc); |
| 947 RunSelect<float32, 2>(desc); | 932 RunSelect<float32, 2>(desc); |
| 948 RunSelect<float32, 3>(desc); | 933 RunSelect<float32, 3>(desc); |
| 949 RunSelect<float32, 4>(desc); | 934 RunSelect<float32, 4>(desc); |
| 950 RunSelect<float32, 5>(desc); | 935 RunSelect<float32, 5>(desc); |
| 951 } | 936 } |
| 952 } | 937 } |
| 953 | 938 |
| 954 | 939 |
| 955 TEST(Float64Select_stack_params_return_reg) { | 940 TEST(Float64Select_stack_params_return_reg) { |
| 956 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 957 int rarray[] = { | 941 int rarray[] = { |
| 958 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 942 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 959 ->GetAllocatableDoubleCode(0)}; | 943 ->GetAllocatableDoubleCode(0)}; |
| 960 Allocator params(nullptr, 0, nullptr, 0); | 944 Allocator params(nullptr, 0, nullptr, 0); |
| 961 Allocator rets(nullptr, 0, rarray, 1); | 945 Allocator rets(nullptr, 0, rarray, 1); |
| 962 RegisterConfig config(params, rets); | 946 RegisterConfig config(params, rets); |
| 963 | 947 |
| 964 Zone zone; | 948 Zone zone; |
| 965 for (int count = 1; count < 6; count++) { | 949 for (int count = 1; count < 6; count++) { |
| 966 ArgsBuffer<float64>::Sig sig(count); | 950 ArgsBuffer<float64>::Sig sig(count); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1001 args[i] = raw.Parameter(i); | 985 args[i] = raw.Parameter(i); |
| 1002 } | 986 } |
| 1003 | 987 |
| 1004 Node* call = raw.CallN(desc, target, args); | 988 Node* call = raw.CallN(desc, target, args); |
| 1005 raw.Return(call); | 989 raw.Return(call); |
| 1006 } | 990 } |
| 1007 } | 991 } |
| 1008 | 992 |
| 1009 | 993 |
| 1010 TEST(Float64StackParamsToStackParams) { | 994 TEST(Float64StackParamsToStackParams) { |
| 1011 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 1012 | |
| 1013 int rarray[] = { | 995 int rarray[] = { |
| 1014 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 996 RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 1015 ->GetAllocatableDoubleCode(0)}; | 997 ->GetAllocatableDoubleCode(0)}; |
| 1016 Allocator params(nullptr, 0, nullptr, 0); | 998 Allocator params(nullptr, 0, nullptr, 0); |
| 1017 Allocator rets(nullptr, 0, rarray, 1); | 999 Allocator rets(nullptr, 0, rarray, 1); |
| 1018 | 1000 |
| 1019 Zone zone; | 1001 Zone zone; |
| 1020 ArgsBuffer<float64>::Sig sig(2); | 1002 ArgsBuffer<float64>::Sig sig(2); |
| 1021 RegisterConfig config(params, rets); | 1003 RegisterConfig config(params, rets); |
| 1022 CallDescriptor* desc = config.Create(&zone, &sig); | 1004 CallDescriptor* desc = config.Create(&zone, &sig); |
| 1023 | 1005 |
| 1024 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 0>, | 1006 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 0>, |
| 1025 Compute_Select<float64, 0>, 1098); | 1007 Compute_Select<float64, 0>, 1098); |
| 1026 | 1008 |
| 1027 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 1>, | 1009 Run_Computation<float64>(desc, Build_Select_With_Call<float64, 1>, |
| 1028 Compute_Select<float64, 1>, 1099); | 1010 Compute_Select<float64, 1>, 1099); |
| 1029 } | 1011 } |
| 1030 | 1012 |
| 1031 | 1013 |
| 1032 void MixedParamTest(int start) { | 1014 void MixedParamTest(int start) { |
| 1033 if (DISABLE_NATIVE_STACK_PARAMS) return; | |
| 1034 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) | 1015 if (RegisterConfiguration::ArchDefault(RegisterConfiguration::TURBOFAN) |
| 1035 ->num_double_registers() < 2) | 1016 ->num_double_registers() < 2) |
| 1036 return; | 1017 return; |
| 1037 | 1018 |
| 1038 // TODO(titzer): mix in 64-bit types on all platforms when supported. | 1019 // TODO(titzer): mix in 64-bit types on all platforms when supported. |
| 1039 #if V8_TARGET_ARCH_32_BIT | 1020 #if V8_TARGET_ARCH_32_BIT |
| 1040 static MachineType types[] = { | 1021 static MachineType types[] = { |
| 1041 kMachInt32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat64, | 1022 kMachInt32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat64, |
| 1042 kMachFloat32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat32, | 1023 kMachFloat32, kMachFloat32, kMachFloat64, kMachInt32, kMachFloat32, |
| 1043 kMachInt32, kMachFloat64, kMachFloat64, kMachFloat32, kMachInt32, | 1024 kMachInt32, kMachFloat64, kMachFloat64, kMachFloat32, kMachInt32, |
| 1044 kMachFloat64, kMachInt32, kMachFloat32}; | 1025 kMachFloat64, kMachInt32, kMachFloat32}; |
| 1045 #else | 1026 #else |
| 1046 static MachineType types[] = { | 1027 static MachineType types[] = { |
| 1047 kMachInt32, kMachInt64, kMachFloat32, kMachFloat64, kMachInt32, | 1028 kMachInt32, kMachInt64, kMachFloat32, kMachFloat64, kMachInt32, |
| 1048 kMachFloat64, kMachFloat32, kMachInt64, kMachFloat64, kMachInt32, | 1029 kMachFloat64, kMachFloat32, kMachInt64, kMachInt64, kMachFloat32, |
| 1049 kMachFloat32, kMachInt32, kMachFloat64, kMachFloat64, kMachInt64, | 1030 kMachFloat32, kMachInt32, kMachFloat64, kMachFloat64, kMachInt64, |
| 1050 kMachInt32, kMachFloat64, kMachInt32, kMachFloat32}; | 1031 kMachInt32, kMachFloat64, kMachInt32, kMachFloat32}; |
| 1051 #endif | 1032 #endif |
| 1052 | 1033 |
| 1053 Isolate* isolate = CcTest::InitIsolateOnce(); | 1034 Isolate* isolate = CcTest::InitIsolateOnce(); |
| 1054 | 1035 |
| 1055 // Build machine signature | 1036 // Build machine signature |
| 1056 MachineType* params = &types[start]; | 1037 MachineType* params = &types[start]; |
| 1057 const int num_params = static_cast<int>(arraysize(types) - start); | 1038 const int num_params = static_cast<int>(arraysize(types) - start); |
| 1058 | 1039 |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1162 | 1143 |
| 1163 | 1144 |
| 1164 TEST(MixedParams_0) { MixedParamTest(0); } | 1145 TEST(MixedParams_0) { MixedParamTest(0); } |
| 1165 TEST(MixedParams_1) { MixedParamTest(1); } | 1146 TEST(MixedParams_1) { MixedParamTest(1); } |
| 1166 TEST(MixedParams_2) { MixedParamTest(2); } | 1147 TEST(MixedParams_2) { MixedParamTest(2); } |
| 1167 TEST(MixedParams_3) { MixedParamTest(3); } | 1148 TEST(MixedParams_3) { MixedParamTest(3); } |
| 1168 | 1149 |
| 1169 } // namespace compiler | 1150 } // namespace compiler |
| 1170 } // namespace internal | 1151 } // namespace internal |
| 1171 } // namespace v8 | 1152 } // namespace v8 |
| OLD | NEW |