Index: src/arm/code-stubs-arm.cc |
diff --git a/src/arm/code-stubs-arm.cc b/src/arm/code-stubs-arm.cc |
index 9484f85f97e38ff87de543ec4c25dee3b9d6984e..233425f32e17aa2ab35cfbf569e73086da675c1b 100644 |
--- a/src/arm/code-stubs-arm.cc |
+++ b/src/arm/code-stubs-arm.cc |
@@ -2036,8 +2036,11 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) { |
__ stm(db_w, sp, kCallerSaved | lr.bit()); |
if (save_doubles_ == kSaveFPRegs) { |
CpuFeatures::Scope scope(VFP2); |
- __ sub(sp, sp, Operand(kDoubleSize * DwVfpRegister::kNumRegisters)); |
- for (int i = 0; i < DwVfpRegister::kNumRegisters; i++) { |
+ // Nbr of d-regs not known at snapshot time. |
+ ASSERT(!Serializer::enabled()); |
+ __ sub(sp, sp, Operand(kDoubleSize * |
+ DwVfpRegister::NumAvailableRegisters())); |
+ for (int i = 0; i < DwVfpRegister::NumAvailableRegisters(); i++) { |
DwVfpRegister reg = DwVfpRegister::from_code(i); |
__ vstr(reg, MemOperand(sp, i * kDoubleSize)); |
} |
@@ -2054,11 +2057,12 @@ void StoreBufferOverflowStub::Generate(MacroAssembler* masm) { |
argument_count); |
if (save_doubles_ == kSaveFPRegs) { |
CpuFeatures::Scope scope(VFP2); |
- for (int i = 0; i < DwVfpRegister::kNumRegisters; i++) { |
+ for (int i = 0; i < DwVfpRegister::NumAvailableRegisters(); i++) { |
DwVfpRegister reg = DwVfpRegister::from_code(i); |
__ vldr(reg, MemOperand(sp, i * kDoubleSize)); |
} |
- __ add(sp, sp, Operand(kDoubleSize * DwVfpRegister::kNumRegisters)); |
+ __ add(sp, sp, Operand(kDoubleSize * |
+ DwVfpRegister::NumAvailableRegisters())); |
} |
__ ldm(ia_w, sp, kCallerSaved | pc.bit()); // Also pop pc to get Ret(0). |
} |