| Index: src/mips/code-stubs-mips.cc
|
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc
|
| index ca765aace96c259e056e5930ebe602c85e4b91e0..61e05f8fc8da57c3b18fd7a2a105ca3fc87b0e97 100644
|
| --- a/src/mips/code-stubs-mips.cc
|
| +++ b/src/mips/code-stubs-mips.cc
|
| @@ -1234,6 +1234,31 @@ void ICCompareStub::GenerateGeneric(MacroAssembler* masm) {
|
| }
|
|
|
|
|
| +void StoreRegistersStateStub::Generate(MacroAssembler* masm) {
|
| + __ mov(t9, ra);
|
| + __ pop(ra);
|
| + if (save_doubles_ == kSaveFPRegs) {
|
| + __ PushSafepointRegistersAndDoubles();
|
| + } else {
|
| + __ PushSafepointRegisters();
|
| + }
|
| + __ Jump(t9);
|
| +}
|
| +
|
| +
|
| +void RestoreRegistersStateStub::Generate(MacroAssembler* masm) {
|
| + __ mov(t9, ra);
|
| + __ pop(ra);
|
| + __ StoreToSafepointRegisterSlot(t9, t9);
|
| + if (save_doubles_ == kSaveFPRegs) {
|
| + __ PopSafepointRegistersAndDoubles();
|
| + } else {
|
| + __ PopSafepointRegisters();
|
| + }
|
| + __ Jump(t9);
|
| +}
|
| +
|
| +
|
| void StoreBufferOverflowStub::Generate(MacroAssembler* masm) {
|
| // We don't allow a GC during a store buffer overflow so there is no need to
|
| // store the registers in any particular way, but we do have to store and
|
| @@ -1501,6 +1526,28 @@ void CodeStub::GenerateStubsAheadOfTime(Isolate* isolate) {
|
| ArrayConstructorStubBase::GenerateStubsAheadOfTime(isolate);
|
| CreateAllocationSiteStub::GenerateAheadOfTime(isolate);
|
| BinaryOpICStub::GenerateAheadOfTime(isolate);
|
| + StoreRegistersStateStub::GenerateAheadOfTime(isolate);
|
| + RestoreRegistersStateStub::GenerateAheadOfTime(isolate);
|
| +}
|
| +
|
| +
|
| +void StoreRegistersStateStub::GenerateAheadOfTime(
|
| + Isolate* isolate) {
|
| + StoreRegistersStateStub stub1(kDontSaveFPRegs);
|
| + stub1.GetCode(isolate);
|
| + // Hydrogen code stubs need stub2 at snapshot time.
|
| + StoreRegistersStateStub stub2(kSaveFPRegs);
|
| + stub2.GetCode(isolate);
|
| +}
|
| +
|
| +
|
| +void RestoreRegistersStateStub::GenerateAheadOfTime(
|
| + Isolate* isolate) {
|
| + RestoreRegistersStateStub stub1(kDontSaveFPRegs);
|
| + stub1.GetCode(isolate);
|
| + // Hydrogen code stubs need stub2 at snapshot time.
|
| + RestoreRegistersStateStub stub2(kSaveFPRegs);
|
| + stub2.GetCode(isolate);
|
| }
|
|
|
|
|
|
|