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); |
+ } |
} |