| Index: runtime/vm/stub_code_ia32.cc
|
| diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
|
| index ee29ed5b72ec22df940b6a154101c5f688826387..cb805c6d96ac5703cab49b76c6e101fcbc211232 100644
|
| --- a/runtime/vm/stub_code_ia32.cc
|
| +++ b/runtime/vm/stub_code_ia32.cc
|
| @@ -248,11 +248,9 @@ void StubCode::GenerateCallBootstrapCFunctionStub(Assembler* assembler) {
|
| // Input parameters:
|
| // EDX: arguments descriptor array.
|
| void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) {
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| __ EnterStubFrame();
|
| __ pushl(EDX); // Preserve arguments descriptor array.
|
| - __ pushl(raw_null); // Setup space on stack for return value.
|
| + __ pushl(Immediate(0)); // Setup space on stack for return value.
|
| __ CallRuntime(kPatchStaticCallRuntimeEntry, 0);
|
| __ popl(EAX); // Get Code object result.
|
| __ popl(EDX); // Restore arguments descriptor array.
|
| @@ -268,13 +266,11 @@ void StubCode::GenerateCallStaticFunctionStub(Assembler* assembler) {
|
| // (invalid because its function was optimized or deoptimized).
|
| // EDX: arguments descriptor array.
|
| void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| // Create a stub frame as we are pushing some objects on the stack before
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| __ pushl(EDX); // Preserve arguments descriptor array.
|
| - __ pushl(raw_null); // Setup space on stack for return value.
|
| + __ pushl(Immediate(0)); // Setup space on stack for return value.
|
| __ CallRuntime(kFixCallersTargetRuntimeEntry, 0);
|
| __ popl(EAX); // Get Code object.
|
| __ popl(EDX); // Restore arguments descriptor array.
|
| @@ -288,10 +284,8 @@ void StubCode::GenerateFixCallersTargetStub(Assembler* assembler) {
|
| // Called from object allocate instruction when the allocation stub has been
|
| // disabled.
|
| void StubCode::GenerateFixAllocationStubTargetStub(Assembler* assembler) {
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| __ EnterStubFrame();
|
| - __ pushl(raw_null); // Setup space on stack for return value.
|
| + __ pushl(Immediate(0)); // Setup space on stack for return value.
|
| __ CallRuntime(kFixAllocationStubTargetRuntimeEntry, 0);
|
| __ popl(EAX); // Get Code object.
|
| __ movl(EAX, FieldAddress(EAX, Code::entry_point_offset()));
|
| @@ -476,7 +470,7 @@ static void GenerateDispatcherCode(Assembler* assembler,
|
| __ movl(EDI, FieldAddress(EDX, ArgumentsDescriptor::count_offset()));
|
| __ movl(EAX, Address(
|
| EBP, EDI, TIMES_HALF_WORD_SIZE, kParamEndSlotFromFp * kWordSize));
|
| - __ pushl(raw_null); // Setup space on stack for result.
|
| + __ pushl(Immediate(0)); // Setup space on stack for result.
|
| __ pushl(EAX); // Receiver.
|
| __ pushl(ECX); // ICData/MegamorphicCache.
|
| __ pushl(EDX); // Arguments descriptor array.
|
| @@ -504,9 +498,7 @@ void StubCode::GenerateMegamorphicMissStub(Assembler* assembler) {
|
| __ pushl(ECX);
|
| __ pushl(EDX);
|
|
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Instructions::null()));
|
| - __ pushl(raw_null); // Space for the result of the runtime call.
|
| + __ pushl(Immediate(0)); // Space for the result of the runtime call.
|
| __ pushl(EAX); // Pass receiver.
|
| __ pushl(ECX); // Pass IC data.
|
| __ pushl(EDX); // Pass arguments descriptor.
|
| @@ -539,8 +531,6 @@ void StubCode::GenerateMegamorphicMissStub(Assembler* assembler) {
|
| // The newly allocated object is returned in EAX.
|
| void StubCode::GenerateAllocateArrayStub(Assembler* assembler) {
|
| Label slow_case;
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| // Compute the size to be allocated, it is based on the array length
|
| // and is computed as:
|
| // RoundedAllocationSize((array_length * kwordSize) + sizeof(RawArray)).
|
| @@ -661,7 +651,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();
|
| - __ pushl(raw_null); // Setup space on stack for return value.
|
| + __ pushl(Immediate(0)); // Setup space on stack for return value.
|
| __ pushl(EDX); // Array length as Smi.
|
| __ pushl(ECX); // Element type.
|
| __ CallRuntime(kAllocateArrayRuntimeEntry, 2);
|
| @@ -789,8 +779,6 @@ void StubCode::GenerateInvokeDartCodeStub(Assembler* assembler) {
|
| // EAX: new allocated RawContext object.
|
| // EBX and EDX are destroyed.
|
| void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| if (FLAG_inline_alloc) {
|
| Label slow_case;
|
| // First compute the rounded instance size.
|
| @@ -905,7 +893,7 @@ void StubCode::GenerateAllocateContextStub(Assembler* assembler) {
|
| // Create a stub frame as we are pushing some objects on the stack before
|
| // calling into the runtime.
|
| __ EnterStubFrame();
|
| - __ pushl(raw_null); // Setup space on stack for return value.
|
| + __ pushl(Immediate(0)); // Setup space on stack for return value.
|
| __ SmiTag(EDX);
|
| __ pushl(EDX);
|
| __ CallRuntime(kAllocateContextRuntimeEntry, 1); // Allocate context.
|
| @@ -1133,9 +1121,7 @@ void StubCode::GenerateCallClosureNoSuchMethodStub(Assembler* assembler) {
|
| __ movl(EDI, FieldAddress(EDX, ArgumentsDescriptor::count_offset()));
|
| __ movl(EAX, Address(EBP, EDI, TIMES_2, kParamEndSlotFromFp * kWordSize));
|
|
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| - __ pushl(raw_null); // Setup space on stack for result from noSuchMethod.
|
| + __ pushl(Immediate(0)); // Setup space on stack for result from noSuchMethod.
|
| __ pushl(EAX); // Receiver.
|
| __ pushl(EDX); // Arguments descriptor array.
|
|
|
| @@ -1368,8 +1354,6 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
|
| __ j(NOT_EQUAL, &loop, Assembler::kNearJump);
|
|
|
| __ Comment("IC miss");
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| // Compute address of arguments (first read number of arguments from
|
| // arguments descriptor array and then compute address on the stack).
|
| __ movl(EAX, FieldAddress(EDX, ArgumentsDescriptor::count_offset()));
|
| @@ -1379,7 +1363,7 @@ void StubCode::GenerateNArgsCheckInlineCacheStub(
|
| __ EnterStubFrame();
|
| __ pushl(EDX); // Preserve arguments descriptor array.
|
| __ pushl(ECX); // Preserve IC data object.
|
| - __ pushl(raw_null); // Setup space on stack for result (target code object).
|
| + __ pushl(Immediate(0)); // Result slot.
|
| // Push call arguments.
|
| for (intptr_t i = 0; i < num_args; i++) {
|
| __ movl(EBX, Address(EAX, -kWordSize * i));
|
| @@ -1624,9 +1608,7 @@ void StubCode::GenerateICCallBreakpointStub(Assembler* assembler) {
|
| __ pushl(ECX);
|
| // Room for result. Debugger stub returns address of the
|
| // unpatched runtime stub.
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| - __ pushl(raw_null); // Room for result.
|
| + __ pushl(Immediate(0)); // Room for result.
|
| __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
|
| __ popl(EAX); // Code of original stub.
|
| __ popl(ECX); // Restore IC data.
|
| @@ -1641,9 +1623,7 @@ void StubCode::GenerateRuntimeCallBreakpointStub(Assembler* assembler) {
|
| __ EnterStubFrame();
|
| // Room for result. Debugger stub returns address of the
|
| // unpatched runtime stub.
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| - __ pushl(raw_null); // Room for result.
|
| + __ pushl(Immediate(0)); // Room for result.
|
| __ CallRuntime(kBreakpointRuntimeHandlerRuntimeEntry, 0);
|
| __ popl(EAX); // Code of the original stub
|
| __ LeaveFrame();
|
| @@ -1827,11 +1807,9 @@ void StubCode::GenerateJumpToExceptionHandlerStub(Assembler* assembler) {
|
| // EBX: function to be reoptimized.
|
| // EDX: argument descriptor (preserved).
|
| void StubCode::GenerateOptimizeFunctionStub(Assembler* assembler) {
|
| - const Immediate& raw_null =
|
| - Immediate(reinterpret_cast<intptr_t>(Object::null()));
|
| __ EnterStubFrame();
|
| __ pushl(EDX);
|
| - __ pushl(raw_null); // Setup space on stack for return value.
|
| + __ pushl(Immediate(0)); // Setup space on stack for return value.
|
| __ pushl(EBX);
|
| __ CallRuntime(kOptimizeInvokedFunctionRuntimeEntry, 1);
|
| __ popl(EAX); // Discard argument.
|
|
|