Chromium Code Reviews| Index: src/mips/code-stubs-mips.cc |
| diff --git a/src/mips/code-stubs-mips.cc b/src/mips/code-stubs-mips.cc |
| index 966214be8cadc73e2309d7775a40e4d94bf9d9e3..56ca9d55faa30fb1c0e24e98b77ae9c456192888 100644 |
| --- a/src/mips/code-stubs-mips.cc |
| +++ b/src/mips/code-stubs-mips.cc |
| @@ -1115,9 +1115,14 @@ void CEntryStub::Generate(MacroAssembler* masm) { |
| __ lw(a1, MemOperand(a1)); |
| __ li(a2, Operand(pending_handler_offset_address)); |
| __ lw(a2, MemOperand(a2)); |
| - __ Addu(a1, a1, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| - __ Addu(t9, a1, a2); |
| - __ Jump(t9); |
| + if (IsMipsArchVariant(kMips32r6)) { |
| + __ Addu(t9, a1, a2); |
|
ivica.bogosavljevic
2016/12/05 10:48:47
Can we move these common fragments of code with if
miran.karic
2016/12/05 12:44:48
Yes, as I commented in MacroAssembler, perhaps I c
|
| + __ Jump(t9, Code::kHeaderSize - kHeapObjectTag); |
| + } else { |
| + __ Addu(a1, a1, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| + __ Addu(t9, a1, a2); |
| + __ Jump(t9); |
| + } |
| } |
| @@ -1250,8 +1255,12 @@ void JSEntryStub::Generate(MacroAssembler* masm) { |
| __ lw(t9, MemOperand(t0)); // Deref address. |
| // Call JSEntryTrampoline. |
| - __ addiu(t9, t9, Code::kHeaderSize - kHeapObjectTag); |
| - __ Call(t9); |
| + if (IsMipsArchVariant(kMips32r6)) { |
| + __ Call(t9, Code::kHeaderSize - kHeapObjectTag); |
|
ivica.bogosavljevic
2016/12/05 10:48:47
Same as above
|
| + } else { |
| + __ addiu(t9, t9, Code::kHeaderSize - kHeapObjectTag); |
| + __ Call(t9); |
| + } |
| // Unlink this frame from the handler chain. |
| __ PopStackHandler(); |
| @@ -1887,8 +1896,12 @@ void CallConstructStub::Generate(MacroAssembler* masm) { |
| // context at this point). |
| __ lw(t0, FieldMemOperand(a1, JSFunction::kSharedFunctionInfoOffset)); |
| __ lw(t0, FieldMemOperand(t0, SharedFunctionInfo::kConstructStubOffset)); |
| - __ Addu(at, t0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| - __ Jump(at); |
| + if (IsMipsArchVariant(kMips32r6)) { |
| + __ Jump(t0, Code::kHeaderSize - kHeapObjectTag); |
| + } else { |
| + __ Addu(at, t0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| + __ Jump(at); |
| + } |
| __ bind(&non_function); |
| __ mov(a3, a1); |
| @@ -2771,11 +2784,17 @@ void CompareICStub::GenerateMiss(MacroAssembler* masm) { |
| USE_DELAY_SLOT); |
| __ sw(t0, MemOperand(sp)); // In the delay slot. |
| // Compute the entry point of the rewritten stub. |
| - __ Addu(a2, v0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| + if (!IsMipsArchVariant(kMips32r6)) { |
|
ivica.bogosavljevic
2016/12/05 10:48:47
same as above
|
| + __ Addu(a2, v0, Operand(Code::kHeaderSize - kHeapObjectTag)); |
| + } |
| // Restore registers. |
| __ Pop(a1, a0, ra); |
| } |
| - __ Jump(a2); |
| + if (IsMipsArchVariant(kMips32r6)) { |
| + __ Jump(v0, Code::kHeaderSize - kHeapObjectTag); |
| + } else { |
| + __ Jump(a2); |
| + } |
| } |