| Index: src/mips/lithium-codegen-mips.cc
|
| diff --git a/src/mips/lithium-codegen-mips.cc b/src/mips/lithium-codegen-mips.cc
|
| index 77949313e129d4155277f55a5c193b8523b1677c..8488a3cc6679f6fc5caacf3ec521ee80f7f516d9 100644
|
| --- a/src/mips/lithium-codegen-mips.cc
|
| +++ b/src/mips/lithium-codegen-mips.cc
|
| @@ -36,6 +36,14 @@ namespace v8 {
|
| namespace internal {
|
|
|
|
|
| +static SaveFPRegsMode GetSaveFPRegsMode() {
|
| + // We don't need to save floating point regs when generating the snapshot
|
| + return CpuFeatures::IsSafeForSnapshot(FPU)
|
| + ? kSaveFPRegs
|
| + : kDontSaveFPRegs;
|
| +}
|
| +
|
| +
|
| class SafepointGenerator : public CallWrapper {
|
| public:
|
| SafepointGenerator(LCodeGen* codegen,
|
| @@ -235,7 +243,12 @@ bool LCodeGen::GeneratePrologue() {
|
| __ sw(a0, target);
|
| // Update the write barrier. This clobbers a3 and a0.
|
| __ RecordWriteContextSlot(
|
| - cp, target.offset(), a0, a3, GetRAState(), kSaveFPRegs);
|
| + cp,
|
| + target.offset(),
|
| + a0,
|
| + a3,
|
| + GetRAState(),
|
| + GetSaveFPRegsMode());
|
| }
|
| }
|
| Comment(";;; End allocate local context");
|
| @@ -2679,7 +2692,7 @@ void LCodeGen::DoStoreContextSlot(LStoreContextSlot* instr) {
|
| value,
|
| scratch0(),
|
| GetRAState(),
|
| - kSaveFPRegs,
|
| + GetSaveFPRegsMode(),
|
| EMIT_REMEMBERED_SET,
|
| check_needed);
|
| }
|
| @@ -3917,7 +3930,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| scratch,
|
| temp,
|
| GetRAState(),
|
| - kSaveFPRegs,
|
| + GetSaveFPRegsMode(),
|
| OMIT_REMEMBERED_SET,
|
| OMIT_SMI_CHECK);
|
| }
|
| @@ -3936,7 +3949,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| value,
|
| scratch,
|
| GetRAState(),
|
| - kSaveFPRegs,
|
| + GetSaveFPRegsMode(),
|
| EMIT_REMEMBERED_SET,
|
| check_needed);
|
| }
|
| @@ -3951,7 +3964,7 @@ void LCodeGen::DoStoreNamedField(LStoreNamedField* instr) {
|
| value,
|
| object,
|
| GetRAState(),
|
| - kSaveFPRegs,
|
| + GetSaveFPRegsMode(),
|
| EMIT_REMEMBERED_SET,
|
| check_needed);
|
| }
|
| @@ -4160,7 +4173,7 @@ void LCodeGen::DoStoreKeyedFixedArray(LStoreKeyed* instr) {
|
| key,
|
| value,
|
| GetRAState(),
|
| - kSaveFPRegs,
|
| + GetSaveFPRegsMode(),
|
| EMIT_REMEMBERED_SET,
|
| check_needed);
|
| }
|
|
|