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

Unified Diff: runtime/vm/stub_code_mips.cc

Issue 2371983002: Prefer loading Smi 0 instead of null into a runtime call result slot. (Closed)
Patch Set: Created 4 years, 3 months 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
« no previous file with comments | « runtime/vm/stub_code_ia32.cc ('k') | runtime/vm/stub_code_x64.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/stub_code_mips.cc
diff --git a/runtime/vm/stub_code_mips.cc b/runtime/vm/stub_code_mips.cc
index f62ef15a5d394d1f34b8e4e0a635b58d825d139e..2172d405734adc8eefc5b02a384d9c6bdc7d2c46 100644
--- a/runtime/vm/stub_code_mips.cc
+++ b/runtime/vm/stub_code_mips.cc
@@ -299,8 +299,7 @@ void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) {
__ addiu(SP, SP, Immediate(-2 * kWordSize));
__ sw(S4, Address(SP, 1 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 0 * kWordSize));
+ __ sw(ZR, Address(SP, 0 * kWordSize));
__ CallRuntime(kPatchStaticCallRuntimeEntry, 0);
__ Comment("CallStaticFunctionStub return");
@@ -331,8 +330,7 @@ void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
// Setup space on stack for return value and preserve arguments descriptor.
__ addiu(SP, SP, Immediate(-2 * kWordSize));
__ sw(S4, Address(SP, 1 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 0 * kWordSize));
+ __ sw(ZR, Address(SP, 0 * kWordSize));
__ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
// Get Code object result and restore arguments descriptor array.
__ lw(CODE_REG, Address(SP, 0 * kWordSize));
@@ -357,8 +355,7 @@ void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
__ EnterStubFrame();
// Setup space on stack for return value.
__ addiu(SP, SP, Immediate(-1 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 0 * kWordSize));
+ __ sw(ZR, Address(SP, 0 * kWordSize));
__ CallRuntime(kFixAllocationStubTargetRuntimeEntry, 0);
// Get Code object result.
__ lw(CODE_REG, Address(SP, 0 * kWordSize));
@@ -564,8 +561,7 @@ static void GenerateDispatcherCode(Assembler* assembler,
// Push arguments descriptor array.
// Push original arguments array.
__ addiu(SP, SP, Immediate(-4 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 3 * kWordSize));
+ __ sw(ZR, Address(SP, 3 * kWordSize));
__ sw(T6, Address(SP, 2 * kWordSize));
__ sw(S5, Address(SP, 1 * kWordSize));
__ sw(S4, Address(SP, 0 * kWordSize));
@@ -598,8 +594,7 @@ void StubCode::GenerateMegamorphicMissStub(Assembler* assembler) {
// Push the receiver.
// Push IC data object.
// Push arguments descriptor array.
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 3 * kWordSize));
+ __ sw(ZR, Address(SP, 3 * kWordSize));
__ sw(T6, Address(SP, 2 * kWordSize));
__ sw(S5, Address(SP, 1 * kWordSize));
__ sw(S4, Address(SP, 0 * kWordSize));
@@ -757,8 +752,7 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) {
// Setup space on stack for return value.
// Push array length as Smi and element type.
__ addiu(SP, SP, Immediate(-3 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 2 * kWordSize));
+ __ sw(ZR, Address(SP, 2 * kWordSize));
__ sw(A1, Address(SP, 1 * kWordSize));
__ sw(A0, Address(SP, 0 * kWordSize));
__ CallRuntime(kAllocateArrayRuntimeEntry, 2);
@@ -1260,8 +1254,7 @@ void StubCode::GenerateCallClosureNoSuchMethodStub(Assembler* assembler) {
// Push arguments descriptor array.
const intptr_t kNumArgs = 3;
__ addiu(SP, SP, Immediate(-kNumArgs * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 2 * kWordSize));
+ __ sw(ZR, Address(SP, 2 * kWordSize));
__ sw(T6, Address(SP, 1 * kWordSize));
__ sw(S4, Address(SP, 0 * kWordSize));
@@ -1524,8 +1517,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
__ addiu(SP, SP, Immediate(-num_slots * kWordSize));
__ sw(S5, Address(SP, (num_slots - 1) * kWordSize));
__ sw(S4, Address(SP, (num_slots - 2) * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, (num_slots - 3) * kWordSize));
+ __ sw(ZR, Address(SP, (num_slots - 3) * kWordSize));
// Push call arguments.
for (intptr_t i = 0; i < num_args; i++) {
__ lw(TMP, Address(T1, -i * kWordSize));
@@ -1777,8 +1769,7 @@ void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) {
__ EnterStubFrame();
__ addiu(SP, SP, Immediate(-2 * kWordSize));
__ sw(S5, Address(SP, 1 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 0 * kWordSize));
+ __ sw(ZR, Address(SP, 0 * kWordSize));
__ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
@@ -1795,8 +1786,7 @@ void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) {
__ Comment("RuntimeCallBreakpoint stub");
__ EnterStubFrame();
__ addiu(SP, SP, Immediate(-1 * kWordSize));
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 0 * kWordSize));
+ __ sw(ZR, Address(SP, 0 * kWordSize));
__ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
@@ -1992,8 +1982,7 @@ void StubCode::GenerateOptimizeFunctionStub(Assembler* assembler) {
__ addiu(SP, SP, Immediate(-3 * kWordSize));
__ sw(S4, Address(SP, 2 * kWordSize));
// Setup space on stack for return value.
- __ LoadObject(TMP, Object::null_object());
- __ sw(TMP, Address(SP, 1 * kWordSize));
+ __ sw(ZR, Address(SP, 1 * kWordSize));
__ sw(T0, Address(SP, 0 * kWordSize));
__ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
__ Comment("OptimizeFunctionStub return");
@@ -2286,9 +2275,9 @@ void StubCode::GenerateUnlinkedCallStub(Assembler* assembler) {
__ EnterStubFrame();
__ Push(T0); // Preserve receiver.
- __ PushObject(Object::null_object()); // Result.
- __ Push(T0); // Arg0: Receiver
- __ Push(S5); // Arg1: UnlinkedCall
+ __ Push(ZR); // Result slot.
+ __ Push(T0); // Arg0: Receiver
+ __ Push(S5); // Arg1: UnlinkedCall
__ CallRuntime(kUnlinkedCallRuntimeEntry, 2);
__ Drop(2);
__ Pop(S5); // result = IC
@@ -2327,8 +2316,8 @@ void StubCode::GenerateSingleTargetCallStub(Assembler* assembler) {
__ EnterStubFrame();
__ Push(T0); // Preserve receiver.
- __ PushObject(Object::null_object()); // Result.
- __ Push(T0); // Arg0: Receiver
+ __ Push(ZR); // Result slot.
+ __ Push(T0); // Arg0: Receiver
__ CallRuntime(kSingleTargetMissRuntimeEntry, 1);
__ Drop(1);
__ Pop(S5); // result = IC
@@ -2348,8 +2337,8 @@ void StubCode::GenerateMonomorphicMissStub(Assembler* assembler) {
__ EnterStubFrame();
__ Push(T0); // Preserve receiver.
- __ PushObject(Object::null_object()); // Result.
- __ Push(T0); // Arg0: Receiver
+ __ Push(ZR); // Result slot.
+ __ Push(T0); // Arg0: Receiver
__ CallRuntime(kMonomorphicMissRuntimeEntry, 1);
__ Drop(1);
__ Pop(S5); // result = IC
« no previous file with comments | « runtime/vm/stub_code_ia32.cc ('k') | runtime/vm/stub_code_x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698