Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(685)

Unified Diff: src/mips/code-stubs-mips.cc

Issue 2542403002: MIPS: Use JIC/JIALC offset when possible (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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);
+ }
}

Powered by Google App Engine
This is Rietveld 408576698