Index: src/mips/lithium-codegen-mips.h |
diff --git a/src/mips/lithium-codegen-mips.h b/src/mips/lithium-codegen-mips.h |
index cd8ea40f8f2da4d4223f4b91ec76615fb96ef99a..83a10de016bc1c579ba22000ff70f2b9abc9c697 100644 |
--- a/src/mips/lithium-codegen-mips.h |
+++ b/src/mips/lithium-codegen-mips.h |
@@ -422,12 +422,18 @@ class LCodeGen: public LCodeGenBase { |
codegen_->expected_safepoint_kind_ = kind; |
switch (codegen_->expected_safepoint_kind_) { |
- case Safepoint::kWithRegisters: |
- codegen_->masm_->PushSafepointRegisters(); |
+ case Safepoint::kWithRegisters: { |
+ StoreRegistersStateStub stub1(kDontSaveFPRegs); |
+ codegen_->masm_->push(ra); |
+ codegen_->masm_->CallStub(&stub1); |
break; |
- case Safepoint::kWithRegistersAndDoubles: |
- codegen_->masm_->PushSafepointRegistersAndDoubles(); |
+ } |
+ case Safepoint::kWithRegistersAndDoubles: { |
+ StoreRegistersStateStub stub2(kSaveFPRegs); |
+ codegen_->masm_->push(ra); |
+ codegen_->masm_->CallStub(&stub2); |
break; |
+ } |
default: |
UNREACHABLE(); |
} |
@@ -437,12 +443,18 @@ class LCodeGen: public LCodeGenBase { |
Safepoint::Kind kind = codegen_->expected_safepoint_kind_; |
ASSERT((kind & Safepoint::kWithRegisters) != 0); |
switch (kind) { |
- case Safepoint::kWithRegisters: |
- codegen_->masm_->PopSafepointRegisters(); |
+ case Safepoint::kWithRegisters: { |
+ RestoreRegistersStateStub stub1(kDontSaveFPRegs); |
+ codegen_->masm_->push(ra); |
+ codegen_->masm_->CallStub(&stub1); |
break; |
- case Safepoint::kWithRegistersAndDoubles: |
- codegen_->masm_->PopSafepointRegistersAndDoubles(); |
+ } |
+ case Safepoint::kWithRegistersAndDoubles: { |
+ RestoreRegistersStateStub stub2(kSaveFPRegs); |
+ codegen_->masm_->push(ra); |
+ codegen_->masm_->CallStub(&stub2); |
break; |
+ } |
default: |
UNREACHABLE(); |
} |