| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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_ARM. | 5 #include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM. |
| 6 #if defined(TARGET_ARCH_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
| 7 | 7 |
| 8 #include "vm/flow_graph_compiler.h" | 8 #include "vm/flow_graph_compiler.h" |
| 9 | 9 |
| 10 #include "lib/error.h" | 10 #include "lib/error.h" |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 247 } | 247 } |
| 248 | 248 |
| 249 EmitFrameEntry(); | 249 EmitFrameEntry(); |
| 250 | 250 |
| 251 const Function& function = parsed_function().function(); | 251 const Function& function = parsed_function().function(); |
| 252 | 252 |
| 253 const int num_fixed_params = function.num_fixed_parameters(); | 253 const int num_fixed_params = function.num_fixed_parameters(); |
| 254 const int num_copied_params = parsed_function().num_copied_params(); | 254 const int num_copied_params = parsed_function().num_copied_params(); |
| 255 const int num_locals = parsed_function().num_stack_locals(); | 255 const int num_locals = parsed_function().num_stack_locals(); |
| 256 | 256 |
| 257 // For optimized code, keep a bitmap of the frame in order to build | |
| 258 // stackmaps for GC safepoints in the prologue. | |
| 259 LocationSummary* prologue_locs = NULL; | |
| 260 if (is_optimizing()) { | |
| 261 // Spill slots are allocated but not initialized. | |
| 262 prologue_locs = new LocationSummary(0, 0, LocationSummary::kCall); | |
| 263 prologue_locs->stack_bitmap()->SetLength(StackSize()); | |
| 264 } | |
| 265 | |
| 266 // We check the number of passed arguments when we have to copy them due to | 257 // We check the number of passed arguments when we have to copy them due to |
| 267 // the presence of optional parameters. | 258 // the presence of optional parameters. |
| 268 // No such checking code is generated if only fixed parameters are declared, | 259 // No such checking code is generated if only fixed parameters are declared, |
| 269 // unless we are in debug mode or unless we are compiling a closure. | 260 // unless we are in debug mode or unless we are compiling a closure. |
| 270 LocalVariable* saved_args_desc_var = | 261 LocalVariable* saved_args_desc_var = |
| 271 parsed_function().GetSavedArgumentsDescriptorVar(); | 262 parsed_function().GetSavedArgumentsDescriptorVar(); |
| 272 if (num_copied_params == 0) { | 263 if (num_copied_params == 0) { |
| 273 #ifdef DEBUG | 264 #ifdef DEBUG |
| 274 ASSERT(!parsed_function().function().HasOptionalParameters()); | 265 ASSERT(!parsed_function().function().HasOptionalParameters()); |
| 275 const bool check_arguments = true; | 266 const bool check_arguments = true; |
| (...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 632 | 623 |
| 633 | 624 |
| 634 void ParallelMoveResolver::Exchange(const Address& mem1, const Address& mem2) { | 625 void ParallelMoveResolver::Exchange(const Address& mem1, const Address& mem2) { |
| 635 UNIMPLEMENTED(); | 626 UNIMPLEMENTED(); |
| 636 } | 627 } |
| 637 | 628 |
| 638 | 629 |
| 639 } // namespace dart | 630 } // namespace dart |
| 640 | 631 |
| 641 #endif // defined TARGET_ARCH_ARM | 632 #endif // defined TARGET_ARCH_ARM |
| OLD | NEW |