Chromium Code Reviews| Index: src/arm/macro-assembler-arm.cc |
| =================================================================== |
| --- src/arm/macro-assembler-arm.cc (revision 6500) |
| +++ src/arm/macro-assembler-arm.cc (working copy) |
| @@ -467,29 +467,39 @@ |
| 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); |
| } |
| + PushSafepointRegisters(); |
|
Mads Ager (chromium)
2011/01/27 08:27:56
What is the motivation for changing this? Please u
Alexandre
2011/01/28 13:57:59
Reversed.
We usually want to patch general purpos
|
| } |
| void MacroAssembler::PopSafepointRegistersAndDoubles() { |
| + PopSafepointRegisters(); |
|
Mads Ager (chromium)
2011/01/27 08:27:56
Undo please. :)
Alexandre
2011/01/28 13:57:59
Done.
|
| for (int i = 0; i < DwVfpRegister::kNumAllocatableRegisters; i++) { |
| vldr(DwVfpRegister::FromAllocationIndex(i), sp, i * kDoubleSize); |
| } |
| add(sp, sp, Operand(DwVfpRegister::kNumAllocatableRegisters * |
| kDoubleSize)); |
| - 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,12 @@ |
| } |
| +MemOperand MacroAssembler::SafepointRegistersAndDoublesSlot(Register reg) { |
| + // General purpose registers are pushed last on the stack. |
| + return MemOperand(sp, SafepointRegisterStackIndex(reg.code()) * kInstrSize); |
|
Mads Ager (chromium)
2011/01/27 08:27:56
kInstrSize -> kPointerSize. This is an index into
Alexandre
2011/01/28 13:57:59
Done.
|
| +} |
| + |
| + |
| void MacroAssembler::Ldrd(Register dst1, Register dst2, |
| const MemOperand& src, Condition cond) { |
| ASSERT(src.rm().is(no_reg)); |