| Index: src/mips/macro-assembler-mips.cc
|
| diff --git a/src/mips/macro-assembler-mips.cc b/src/mips/macro-assembler-mips.cc
|
| index cb336f3b0b9262b3c2d12628bec9ec9679a43799..cdfbae39c2a27242f7745cc9cd5d039d11060428 100644
|
| --- a/src/mips/macro-assembler-mips.cc
|
| +++ b/src/mips/macro-assembler-mips.cc
|
| @@ -4526,15 +4526,15 @@ void MacroAssembler::Prologue(PrologueFrameMode frame_mode) {
|
| // Pre-age the code.
|
| Code* stub = Code::GetPreAgedCodeAgeStub(isolate());
|
| nop(Assembler::CODE_AGE_MARKER_NOP);
|
| - // Save the function's original return address
|
| - // (it will be clobbered by Call(t9)).
|
| - mov(at, ra);
|
| - // Load the stub address to t9 and call it.
|
| + // Load the stub address to t9 and call it,
|
| + // GetCodeAgeAndParity() extracts the stub address from this instruction.
|
| li(t9,
|
| - Operand(reinterpret_cast<uint32_t>(stub->instruction_start())));
|
| - Call(t9);
|
| - // Record the stub address in the empty space for GetCodeAgeAndParity().
|
| - emit_code_stub_address(stub);
|
| + Operand(reinterpret_cast<uint32_t>(stub->instruction_start())),
|
| + CONSTANT_SIZE);
|
| + nop(); // Prevent jalr to jal optimization.
|
| + jalr(t9, a0);
|
| + nop(); // Branch delay slot nop.
|
| + nop(); // Pad the empty space.
|
| } else {
|
| Push(ra, fp, cp, a1);
|
| nop(Assembler::CODE_AGE_SEQUENCE_NOP);
|
|
|