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_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 967 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
978 // allocate. We must also set up the pool pointer for the function. | 978 // allocate. We must also set up the pool pointer for the function. |
979 void Assembler::EnterOsrFrame(intptr_t extra_size) { | 979 void Assembler::EnterOsrFrame(intptr_t extra_size) { |
980 ASSERT(!in_delay_slot_); | 980 ASSERT(!in_delay_slot_); |
981 Comment("EnterOsrFrame"); | 981 Comment("EnterOsrFrame"); |
982 | 982 |
983 GetNextPC(TMP); // TMP gets the address of the next instruction. | 983 GetNextPC(TMP); // TMP gets the address of the next instruction. |
984 | 984 |
985 // The runtime system assumes that the code marker address is | 985 // The runtime system assumes that the code marker address is |
986 // kEntryPointToPcMarkerOffset bytes from the entry. Since there is no | 986 // kEntryPointToPcMarkerOffset bytes from the entry. Since there is no |
987 // code to set up the frame pointer, etc., the address needs to be adjusted. | 987 // code to set up the frame pointer, etc., the address needs to be adjusted. |
988 const intptr_t offset = kEntryPointToPcMarkerOffset - CodeSize(); | 988 const intptr_t offset = EntryPointToPcMarkerOffset() - CodeSize(); |
989 // Calculate the offset of the pool pointer from the PC. | 989 // Calculate the offset of the pool pointer from the PC. |
990 const intptr_t object_pool_pc_dist = | 990 const intptr_t object_pool_pc_dist = |
991 Instructions::HeaderSize() - Instructions::object_pool_offset() + | 991 Instructions::HeaderSize() - Instructions::object_pool_offset() + |
992 CodeSize(); | 992 CodeSize(); |
993 | 993 |
994 // Adjust PC by the offset, and store it in the stack frame. | 994 // Adjust PC by the offset, and store it in the stack frame. |
995 AddImmediate(TMP, TMP, offset); | 995 AddImmediate(TMP, TMP, offset); |
996 sw(TMP, Address(FP, kPcMarkerSlotFromFp * kWordSize)); | 996 sw(TMP, Address(FP, kPcMarkerSlotFromFp * kWordSize)); |
997 | 997 |
998 // Restore return address. | 998 // Restore return address. |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1228 Emit(reinterpret_cast<int32_t>(message)); | 1228 Emit(reinterpret_cast<int32_t>(message)); |
1229 Bind(&msg); | 1229 Bind(&msg); |
1230 break_(Instr::kMsgMessageCode); | 1230 break_(Instr::kMsgMessageCode); |
1231 } | 1231 } |
1232 #endif | 1232 #endif |
1233 } | 1233 } |
1234 | 1234 |
1235 } // namespace dart | 1235 } // namespace dart |
1236 | 1236 |
1237 #endif // defined TARGET_ARCH_MIPS | 1237 #endif // defined TARGET_ARCH_MIPS |
OLD | NEW |