| 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..b5f01b3f7f62a3de39e349238d869e877b5dff3b 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++) {
|
| + // Number 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).
|
| }
|
|
|