Index: runtime/vm/assembler_mips.h |
=================================================================== |
--- runtime/vm/assembler_mips.h (revision 30114) |
+++ runtime/vm/assembler_mips.h (working copy) |
@@ -175,13 +175,16 @@ |
return FLAG_use_far_branches || use_far_branches_; |
} |
+ void EnterFrame(); |
+ void LeaveFrameAndReturn(); |
+ |
// Set up a stub frame so that the stack traversal code can easily identify |
// a stub frame. |
- void EnterStubFrame(bool uses_pp = false); |
- void LeaveStubFrame(bool uses_pp = false); |
+ void EnterStubFrame(bool load_pp = false); |
+ void LeaveStubFrame(); |
// A separate macro for when a Ret immediately follows, so that we can use |
// the branch delay slot. |
- void LeaveStubFrameAndReturn(Register ra = RA, bool uses_pp = false); |
+ void LeaveStubFrameAndReturn(Register ra = RA); |
// Instruction pattern from entrypoint is used in dart frame prologs |
// to set up the frame and save a PC which can be used to figure out the |
@@ -803,6 +806,14 @@ |
} |
} |
+ void LoadPoolPointer() { |
+ GetNextPC(TMP); // TMP gets the address of the next instruction. |
+ const intptr_t object_pool_pc_dist = |
+ Instructions::HeaderSize() - Instructions::object_pool_offset() + |
+ CodeSize(); |
+ lw(PP, Address(TMP, -object_pool_pc_dist)); |
+ } |
+ |
void LoadImmediate(Register rd, int32_t value) { |
if (Utils::IsInt(kImmBits, value)) { |
addiu(rd, ZR, Immediate(value)); |