Index: src/arm/macro-assembler-arm.cc |
diff --git a/src/arm/macro-assembler-arm.cc b/src/arm/macro-assembler-arm.cc |
index 21146234a1725d790437baf0dc08b4dfa3b359c7..1028b0e69f3e8dbba88fee6e7ac635a0c6ff954b 100644 |
--- a/src/arm/macro-assembler-arm.cc |
+++ b/src/arm/macro-assembler-arm.cc |
@@ -466,6 +466,25 @@ void MacroAssembler::PopSafepointRegisters() { |
} |
+void MacroAssembler::PushSafepointRegistersAndDoubles() { |
+ PushSafepointRegisters(); |
+ sub(sp, sp, Operand(DwVfpRegister::kNumAllocatableRegisters * |
+ kDoubleSize)); |
+ for (int i = 0; i < DwVfpRegister::kNumAllocatableRegisters; i++) { |
+ vstr(DwVfpRegister::FromAllocationIndex(i), sp, i * kDoubleSize); |
+ } |
+} |
+ |
+ |
+void MacroAssembler::PopSafepointRegistersAndDoubles() { |
+ for (int i = 0; i < DwVfpRegister::kNumAllocatableRegisters; i++) { |
+ vldr(DwVfpRegister::FromAllocationIndex(i), sp, i * kDoubleSize); |
+ } |
+ add(sp, sp, Operand(DwVfpRegister::kNumAllocatableRegisters * |
+ kDoubleSize)); |
+ PopSafepointRegisters(); |
+} |
+ |
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. |