| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. |
| 6 #if defined(TARGET_ARCH_ARM64) | 6 #if defined(TARGET_ARCH_ARM64) |
| 7 | 7 |
| 8 #include "vm/flow_graph_compiler.h" | 8 #include "vm/flow_graph_compiler.h" |
| 9 | 9 |
| 10 #include "vm/ast_printer.h" | 10 #include "vm/ast_printer.h" |
| (...skipping 1030 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1041 const int num_locals = parsed_function().num_stack_locals(); | 1041 const int num_locals = parsed_function().num_stack_locals(); |
| 1042 StubCode* stub_code = isolate()->stub_code(); | 1042 StubCode* stub_code = isolate()->stub_code(); |
| 1043 | 1043 |
| 1044 // We check the number of passed arguments when we have to copy them due to | 1044 // We check the number of passed arguments when we have to copy them due to |
| 1045 // the presence of optional parameters. | 1045 // the presence of optional parameters. |
| 1046 // No such checking code is generated if only fixed parameters are declared, | 1046 // No such checking code is generated if only fixed parameters are declared, |
| 1047 // unless we are in debug mode or unless we are compiling a closure. | 1047 // unless we are in debug mode or unless we are compiling a closure. |
| 1048 if (num_copied_params == 0) { | 1048 if (num_copied_params == 0) { |
| 1049 #ifdef DEBUG | 1049 #ifdef DEBUG |
| 1050 ASSERT(!parsed_function().function().HasOptionalParameters()); | 1050 ASSERT(!parsed_function().function().HasOptionalParameters()); |
| 1051 const bool check_arguments = !flow_graph().IsCompiledForOsr(); | 1051 const bool check_arguments = !flow_graph().IsCompiledForOsr() && |
| 1052 !function.IsIrregexpFunction(); |
| 1052 #else | 1053 #else |
| 1053 const bool check_arguments = | 1054 const bool check_arguments = |
| 1054 function.IsClosureFunction() && !flow_graph().IsCompiledForOsr(); | 1055 function.IsClosureFunction() && !flow_graph().IsCompiledForOsr() && |
| 1056 !function.IsIrregexpFunction(); |
| 1055 #endif | 1057 #endif |
| 1056 if (check_arguments) { | 1058 if (check_arguments) { |
| 1057 __ Comment("Check argument count"); | 1059 __ Comment("Check argument count"); |
| 1058 // Check that exactly num_fixed arguments are passed in. | 1060 // Check that exactly num_fixed arguments are passed in. |
| 1059 Label correct_num_arguments, wrong_num_arguments; | 1061 Label correct_num_arguments, wrong_num_arguments; |
| 1060 __ LoadFieldFromOffset(R0, R4, ArgumentsDescriptor::count_offset(), PP); | 1062 __ LoadFieldFromOffset(R0, R4, ArgumentsDescriptor::count_offset(), PP); |
| 1061 __ CompareImmediate(R0, Smi::RawValue(num_fixed_params), PP); | 1063 __ CompareImmediate(R0, Smi::RawValue(num_fixed_params), PP); |
| 1062 __ b(&wrong_num_arguments, NE); | 1064 __ b(&wrong_num_arguments, NE); |
| 1063 __ LoadFieldFromOffset(R1, R4, | 1065 __ LoadFieldFromOffset(R1, R4, |
| 1064 ArgumentsDescriptor::positional_count_offset(), PP); | 1066 ArgumentsDescriptor::positional_count_offset(), PP); |
| (...skipping 702 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1767 void ParallelMoveResolver::RestoreFpuScratch(FpuRegister reg) { | 1769 void ParallelMoveResolver::RestoreFpuScratch(FpuRegister reg) { |
| 1768 __ PopDouble(reg); | 1770 __ PopDouble(reg); |
| 1769 } | 1771 } |
| 1770 | 1772 |
| 1771 | 1773 |
| 1772 #undef __ | 1774 #undef __ |
| 1773 | 1775 |
| 1774 } // namespace dart | 1776 } // namespace dart |
| 1775 | 1777 |
| 1776 #endif // defined TARGET_ARCH_ARM64 | 1778 #endif // defined TARGET_ARCH_ARM64 |
| OLD | NEW |