Index: src/arm/macro-assembler-arm.cc |
=================================================================== |
--- src/arm/macro-assembler-arm.cc (revision 6524) |
+++ src/arm/macro-assembler-arm.cc (working copy) |
@@ -485,11 +485,21 @@ |
PopSafepointRegisters(); |
} |
+void MacroAssembler::StoreToSafepointRegistersAndDoublesSlot(Register reg) { |
+ str(reg, SafepointRegistersAndDoublesSlot(reg)); |
+} |
+ |
+ |
void MacroAssembler::StoreToSafepointRegisterSlot(Register reg) { |
str(reg, SafepointRegisterSlot(reg)); |
} |
+void MacroAssembler::LoadFromSafepointRegisterSlot(Register reg) { |
+ ldr(reg, SafepointRegisterSlot(reg)); |
+} |
+ |
+ |
int MacroAssembler::SafepointRegisterStackIndex(int reg_code) { |
// The registers are pushed starting with the highest encoding, |
// which means that lowest encodings are closest to the stack pointer. |
@@ -503,6 +513,13 @@ |
} |
+MemOperand MacroAssembler::SafepointRegistersAndDoublesSlot(Register reg) { |
+ // General purpose registers are pushed last on the stack. |
+ return MemOperand(sp, SafepointRegisterStackIndex(reg.code()) * kPointerSize + |
+ DwVfpRegister::kNumAllocatableRegisters * kDoubleSize); |
+} |
+ |
+ |
void MacroAssembler::Ldrd(Register dst1, Register dst2, |
const MemOperand& src, Condition cond) { |
ASSERT(src.rm().is(no_reg)); |