| Index: runtime/vm/stub_code_arm.cc
|
| diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
|
| index c94edc5249fa79ae805a431735a3ddf0870948e8..a17cb80ec6b069d801c95a98f989aedb10efd6d0 100644
|
| --- a/runtime/vm/stub_code_arm.cc
|
| +++ b/runtime/vm/stub_code_arm.cc
|
| @@ -286,7 +286,7 @@ void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) {
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| // Setup space on stack for return value and preserve arguments descriptor.
|
| - __ LoadObject(R0, Object::null_object());
|
| + __ LoadImmediate(R0, 0);
|
| __ PushList((1 << R0) | (1 << R4));
|
| __ CallRuntime(kPatchStaticCallRuntimeEntry, 0);
|
| // Get Code object result and restore arguments descriptor array.
|
| @@ -312,7 +312,7 @@ void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| // Setup space on stack for return value and preserve arguments descriptor.
|
| - __ LoadObject(R0, Object::null_object());
|
| + __ LoadImmediate(R0, 0);
|
| __ PushList((1 << R0) | (1 << R4));
|
| __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
|
| // Get Code object result and restore arguments descriptor array.
|
| @@ -335,7 +335,7 @@ void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
|
| __ ldr(CODE_REG, Address(THR, Thread::fix_allocation_stub_code_offset()));
|
| __ EnterStubFrame();
|
| // Setup space on stack for return value.
|
| - __ LoadObject(R0, Object::null_object());
|
| + __ LoadImmediate(R0, 0);
|
| __ Push(R0);
|
| __ CallRuntime(kFixAllocationStubTargetRuntimeEntry, 0);
|
| // Get Code object result.
|
| @@ -542,7 +542,8 @@ static void GenerateDispatcherCode(Assembler* assembler,
|
| __ ldr(R2, FieldAddress(R4, ArgumentsDescriptor::count_offset()));
|
| __ add(IP, FP, Operand(R2, LSL, 1)); // R2 is Smi.
|
| __ ldr(R8, Address(IP, kParamEndSlotFromFp * kWordSize));
|
| - __ PushObject(Object::null_object());
|
| + __ LoadImmediate(IP, 0);
|
| + __ Push(IP); // Result slot.
|
| __ Push(R8); // Receiver.
|
| __ Push(R9); // ICData/MegamorphicCache.
|
| __ Push(R4); // Arguments descriptor.
|
| @@ -568,8 +569,8 @@ void StubCode::GenerateMegamorphicMissStub(Assembler* assembler) {
|
| // Preserve IC data and arguments descriptor.
|
| __ PushList((1 << R4) | (1 << R9));
|
|
|
| - __ LoadObject(IP, Object::null_object());
|
| - __ Push(IP); // result
|
| + __ LoadImmediate(IP, 0);
|
| + __ Push(IP); // result slot
|
| __ Push(R8); // receiver
|
| __ Push(R9); // ICData
|
| __ Push(R4); // arguments descriptor
|
| @@ -710,7 +711,7 @@ void StubCode::GenerateAllocateArrayStub(Assembler* assembler) {
|
| // Create a stub frame as we are pushing some objects on the stack before
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| - __ LoadObject(IP, Object::null_object());
|
| + __ LoadImmediate(IP, 0);
|
| // Setup space on stack for return value.
|
| // Push array length as Smi and element type.
|
| __ PushList((1 << R1) | (1 << R2) | (1 << IP));
|
| @@ -952,7 +953,7 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| // Setup space on stack for return value.
|
| - __ LoadObject(R2, Object::null_object());
|
| + __ LoadImmediate(R2, 0);
|
| __ SmiTag(R1);
|
| __ PushList((1 << R1) | (1 << R2));
|
| __ CallRuntime(kAllocateContextRuntimeEntry, 1); // Allocate context.
|
| @@ -1193,7 +1194,7 @@ void StubCode::GenerateCallClosureNoSuchMethodStub(Assembler* assembler) {
|
| // Push space for the return value.
|
| // Push the receiver.
|
| // Push arguments descriptor array.
|
| - __ LoadObject(IP, Object::null_object());
|
| + __ LoadImmediate(IP, 0);
|
| __ PushList((1 << R4) | (1 << R8) | (1 << IP));
|
|
|
| // R2: Smi-tagged arguments array length.
|
| @@ -1422,7 +1423,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
|
| // Create a stub frame as we are pushing some objects on the stack before
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| - __ LoadObject(R0, Object::null_object());
|
| + __ LoadImmediate(R0, 0);
|
| // Preserve IC data object and arguments descriptor array and
|
| // setup space on stack for result (target code object).
|
| __ PushList((1 << R0) | (1 << R4) | (1 << R9));
|
| @@ -1655,7 +1656,7 @@ void StubCode::GenerateLazyCompileStub(Assembler* assembler) {
|
| // R9: Contains an ICData.
|
| void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| - __ LoadObject(R0, Object::null_object());
|
| + __ LoadImmediate(R0, 0);
|
| // Preserve arguments descriptor and make room for result.
|
| __ PushList((1 << R0) | (1 << R9));
|
| __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
|
| @@ -1669,7 +1670,7 @@ void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) {
|
|
|
| void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| - __ LoadObject(R0, Object::null_object());
|
| + __ LoadImmediate(R0, 0);
|
| // Make room for result.
|
| __ PushList((1 << R0));
|
| __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
|
| @@ -1851,7 +1852,7 @@ void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) {
|
| void StubCode::GenerateOptimizeFunctionStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| __ Push(R4);
|
| - __ LoadObject(IP, Object::null_object());
|
| + __ LoadImmediate(IP, 0);
|
| __ Push(IP); // Setup space on stack for return value.
|
| __ Push(R8);
|
| __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
|
| @@ -2132,9 +2133,10 @@ void StubCode::GenerateUnlinkedCallStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| __ Push(R0); // Preserve receiver.
|
|
|
| - __ PushObject(Object::null_object()); // Result.
|
| - __ Push(R0); // Arg0: Receiver
|
| - __ Push(R9); // Arg1: UnlinkedCall
|
| + __ LoadImmediate(IP, 0);
|
| + __ Push(IP); // Result slot
|
| + __ Push(R0); // Arg0: Receiver
|
| + __ Push(R9); // Arg1: UnlinkedCall
|
| __ CallRuntime(kUnlinkedCallRuntimeEntry, 2);
|
| __ Drop(2);
|
| __ Pop(R9); // result = IC
|
| @@ -2175,8 +2177,9 @@ void StubCode::GenerateSingleTargetCallStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| __ Push(R0); // Preserve receiver.
|
|
|
| - __ PushObject(Object::null_object()); // Result.
|
| - __ Push(R0); // Arg0: Receiver
|
| + __ LoadImmediate(IP, 0);
|
| + __ Push(IP); // Result slot
|
| + __ Push(R0); // Arg0: Receiver
|
| __ CallRuntime(kSingleTargetMissRuntimeEntry, 1);
|
| __ Drop(1);
|
| __ Pop(R9); // result = IC
|
| @@ -2196,8 +2199,9 @@ void StubCode::GenerateMonomorphicMissStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| __ Push(R0); // Preserve receiver.
|
|
|
| - __ PushObject(Object::null_object()); // Result.
|
| - __ Push(R0); // Arg0: Receiver
|
| + __ LoadImmediate(IP, 0);
|
| + __ Push(IP); // Result slot
|
| + __ Push(R0); // Arg0: Receiver
|
| __ CallRuntime(kMonomorphicMissRuntimeEntry, 1);
|
| __ Drop(1);
|
| __ Pop(R9); // result = IC
|
|
|