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" // NOLINT | 5 #include "vm/globals.h" // NOLINT |
6 #if defined(TARGET_ARCH_MIPS) | 6 #if defined(TARGET_ARCH_MIPS) |
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 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 sw(RA, Address(SP, 2 * kWordSize)); | 808 sw(RA, Address(SP, 2 * kWordSize)); |
809 sw(FP, Address(SP, 1 * kWordSize)); | 809 sw(FP, Address(SP, 1 * kWordSize)); |
810 sw(PP, Address(SP, 0 * kWordSize)); | 810 sw(PP, Address(SP, 0 * kWordSize)); |
811 addiu(FP, SP, Immediate(1 * kWordSize)); | 811 addiu(FP, SP, Immediate(1 * kWordSize)); |
812 // Setup pool pointer for this stub. | 812 // Setup pool pointer for this stub. |
813 LoadPoolPointer(); | 813 LoadPoolPointer(); |
814 } | 814 } |
815 | 815 |
816 | 816 |
817 void Assembler::LeaveStubFrame() { | 817 void Assembler::LeaveStubFrame() { |
818 ASSERT(!in_delay_slot_); | 818 LeaveDartFrame(); |
819 addiu(SP, FP, Immediate(-1 * kWordSize)); | |
820 lw(RA, Address(SP, 2 * kWordSize)); | |
821 lw(FP, Address(SP, 1 * kWordSize)); | |
822 lw(PP, Address(SP, 0 * kWordSize)); | |
823 addiu(SP, SP, Immediate(4 * kWordSize)); | |
824 } | 819 } |
825 | 820 |
826 | 821 |
827 void Assembler::LeaveStubFrameAndReturn(Register ra) { | 822 void Assembler::LeaveStubFrameAndReturn(Register ra) { |
828 ASSERT(!in_delay_slot_); | 823 ASSERT(!in_delay_slot_); |
829 addiu(SP, FP, Immediate(-1 * kWordSize)); | 824 addiu(SP, FP, Immediate(-1 * kWordSize)); |
830 lw(RA, Address(SP, 2 * kWordSize)); | 825 lw(RA, Address(SP, 2 * kWordSize)); |
831 lw(FP, Address(SP, 1 * kWordSize)); | 826 lw(FP, Address(SP, 1 * kWordSize)); |
832 lw(PP, Address(SP, 0 * kWordSize)); | 827 lw(PP, Address(SP, 0 * kWordSize)); |
833 jr(ra); | 828 jr(ra); |
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1305 Label stop; | 1300 Label stop; |
1306 b(&stop); | 1301 b(&stop); |
1307 Emit(reinterpret_cast<int32_t>(message)); | 1302 Emit(reinterpret_cast<int32_t>(message)); |
1308 Bind(&stop); | 1303 Bind(&stop); |
1309 break_(Instr::kStopMessageCode); | 1304 break_(Instr::kStopMessageCode); |
1310 } | 1305 } |
1311 | 1306 |
1312 } // namespace dart | 1307 } // namespace dart |
1313 | 1308 |
1314 #endif // defined TARGET_ARCH_MIPS | 1309 #endif // defined TARGET_ARCH_MIPS |
OLD | NEW |