| 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" | 5 #include "vm/globals.h" |
| 6 #if defined(TARGET_ARCH_ARM) | 6 #if defined(TARGET_ARCH_ARM) |
| 7 | 7 |
| 8 #include "vm/assembler.h" | 8 #include "vm/assembler.h" |
| 9 #include "vm/longjump.h" | 9 #include "vm/longjump.h" |
| 10 #include "vm/runtime_entry.h" | 10 #include "vm/runtime_entry.h" |
| (...skipping 2603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2614 } | 2614 } |
| 2615 | 2615 |
| 2616 | 2616 |
| 2617 void Assembler::LeaveDartFrame() { | 2617 void Assembler::LeaveDartFrame() { |
| 2618 LeaveFrame((1 << PP) | (1 << FP) | (1 << LR)); | 2618 LeaveFrame((1 << PP) | (1 << FP) | (1 << LR)); |
| 2619 // Adjust SP for PC pushed in EnterDartFrame. | 2619 // Adjust SP for PC pushed in EnterDartFrame. |
| 2620 AddImmediate(SP, kWordSize); | 2620 AddImmediate(SP, kWordSize); |
| 2621 } | 2621 } |
| 2622 | 2622 |
| 2623 | 2623 |
| 2624 void Assembler::EnterStubFrame(bool uses_pp) { | 2624 void Assembler::EnterStubFrame(bool load_pp) { |
| 2625 // Push 0 as saved PC for stub frames. | 2625 // Push 0 as saved PC for stub frames. |
| 2626 mov(IP, ShifterOperand(LR)); | 2626 mov(IP, ShifterOperand(LR)); |
| 2627 mov(LR, ShifterOperand(0)); | 2627 mov(LR, ShifterOperand(0)); |
| 2628 RegList regs = (1 << FP) | (1 << IP) | (1 << LR); | 2628 RegList regs = (1 << PP) | (1 << FP) | (1 << IP) | (1 << LR); |
| 2629 if (uses_pp) { | |
| 2630 regs |= (1 << PP); | |
| 2631 } | |
| 2632 EnterFrame(regs, 0); | 2629 EnterFrame(regs, 0); |
| 2633 if (uses_pp) { | 2630 if (load_pp) { |
| 2634 // Setup pool pointer for this stub. | 2631 // Setup pool pointer for this stub. |
| 2635 LoadPoolPointer(); | 2632 LoadPoolPointer(); |
| 2636 } | 2633 } |
| 2637 } | 2634 } |
| 2638 | 2635 |
| 2639 | 2636 |
| 2640 void Assembler::LeaveStubFrame(bool uses_pp) { | 2637 void Assembler::LeaveStubFrame() { |
| 2641 RegList regs = (1 << FP) | (1 << LR); | 2638 LeaveFrame((1 << PP) | (1 << FP) | (1 << LR)); |
| 2642 if (uses_pp) { | |
| 2643 regs |= (1 << PP); | |
| 2644 } | |
| 2645 LeaveFrame(regs); | |
| 2646 // Adjust SP for null PC pushed in EnterStubFrame. | 2639 // Adjust SP for null PC pushed in EnterStubFrame. |
| 2647 AddImmediate(SP, kWordSize); | 2640 AddImmediate(SP, kWordSize); |
| 2648 } | 2641 } |
| 2649 | 2642 |
| 2650 | 2643 |
| 2651 void Assembler::TryAllocate(const Class& cls, | 2644 void Assembler::TryAllocate(const Class& cls, |
| 2652 Label* failure, | 2645 Label* failure, |
| 2653 Register instance_reg) { | 2646 Register instance_reg) { |
| 2654 ASSERT(failure != NULL); | 2647 ASSERT(failure != NULL); |
| 2655 if (FLAG_inline_alloc) { | 2648 if (FLAG_inline_alloc) { |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2761 | 2754 |
| 2762 | 2755 |
| 2763 const char* Assembler::FpuRegisterName(FpuRegister reg) { | 2756 const char* Assembler::FpuRegisterName(FpuRegister reg) { |
| 2764 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); | 2757 ASSERT((0 <= reg) && (reg < kNumberOfFpuRegisters)); |
| 2765 return fpu_reg_names[reg]; | 2758 return fpu_reg_names[reg]; |
| 2766 } | 2759 } |
| 2767 | 2760 |
| 2768 } // namespace dart | 2761 } // namespace dart |
| 2769 | 2762 |
| 2770 #endif // defined TARGET_ARCH_ARM | 2763 #endif // defined TARGET_ARCH_ARM |
| 2771 | |
| OLD | NEW |