Index: runtime/vm/flow_graph_compiler_arm.cc |
diff --git a/runtime/vm/flow_graph_compiler_arm.cc b/runtime/vm/flow_graph_compiler_arm.cc |
index 17f61aced5cf0166c9ce7c83a9143aa03121d514..bf3e26ee4d56df2f0b595f59da501f61b1cca4be 100644 |
--- a/runtime/vm/flow_graph_compiler_arm.cc |
+++ b/runtime/vm/flow_graph_compiler_arm.cc |
@@ -210,8 +210,7 @@ void FlowGraphCompiler::GenerateBoolToJump(Register bool_register, |
Label* is_true, |
Label* is_false) { |
Label fall_through; |
- __ CompareImmediate(bool_register, |
- reinterpret_cast<intptr_t>(Object::null())); |
+ __ CompareObject(bool_register, Object::null_object()); |
__ b(&fall_through, EQ); |
__ CompareObject(bool_register, Bool::True()); |
__ b(is_true, EQ); |
@@ -236,11 +235,11 @@ RawSubtypeTestCache* FlowGraphCompiler::GenerateCallSubtypeTestStub( |
__ LoadUniqueObject(R2, type_test_cache); |
if (test_kind == kTestTypeOneArg) { |
ASSERT(type_arguments_reg == kNoRegister); |
- __ LoadImmediate(R1, reinterpret_cast<intptr_t>(Object::null())); |
+ __ LoadObject(R1, Object::null_object()); |
__ BranchLink(*StubCode::Subtype1TestCache_entry()); |
} else if (test_kind == kTestTypeTwoArgs) { |
ASSERT(type_arguments_reg == kNoRegister); |
- __ LoadImmediate(R1, reinterpret_cast<intptr_t>(Object::null())); |
+ __ LoadObject(R1, Object::null_object()); |
__ BranchLink(*StubCode::Subtype2TestCache_entry()); |
} else if (test_kind == kTestTypeThreeArgs) { |
ASSERT(type_arguments_reg == R1); |
@@ -390,7 +389,7 @@ bool FlowGraphCompiler::GenerateInstantiatedTypeNoArgumentsTest( |
// Check if instance is a closure. |
__ LoadClassById(R3, kClassIdReg); |
__ ldr(R3, FieldAddress(R3, Class::signature_function_offset())); |
- __ CompareImmediate(R3, reinterpret_cast<int32_t>(Object::null())); |
+ __ CompareObject(R3, Object::null_object()); |
__ b(is_instance_lbl, NE); |
} |
// Custom checking for numbers (Smi, Mint, Bigint and Double). |
@@ -458,7 +457,7 @@ RawSubtypeTestCache* FlowGraphCompiler::GenerateUninstantiatedTypeTest( |
__ ldr(R1, Address(SP, 0)); // Get instantiator type arguments. |
// R1: instantiator type arguments. |
// Check if type arguments are null, i.e. equivalent to vector of dynamic. |
- __ CompareImmediate(R1, reinterpret_cast<intptr_t>(Object::null())); |
+ __ CompareObject(R1, Object::null_object()); |
__ b(is_instance_lbl, EQ); |
__ ldr(R2, |
FieldAddress(R1, TypeArguments::type_at_offset(type_param.index()))); |
@@ -603,7 +602,7 @@ void FlowGraphCompiler::GenerateInstanceOf(intptr_t token_pos, |
// We can only inline this null check if the type is instantiated at compile |
// time, since an uninstantiated type at compile time could be Object or |
// dynamic at run time. |
- __ CompareImmediate(R0, reinterpret_cast<int32_t>(Object::null())); |
+ __ CompareObject(R0, Object::null_object()); |
__ b(type.IsNullType() ? &is_instance : &is_not_instance, EQ); |
} |
@@ -679,7 +678,7 @@ void FlowGraphCompiler::GenerateAssertAssignable(intptr_t token_pos, |
__ PushList((1 << R1) | (1 << R2)); |
// A null object is always assignable and is returned as result. |
Label is_assignable, runtime_call; |
- __ CompareImmediate(R0, reinterpret_cast<int32_t>(Object::null())); |
+ __ CompareObject(R0, Object::null_object()); |
__ b(&is_assignable, EQ); |
// Generate throw new TypeError() if the type is malformed or malbounded. |
@@ -877,7 +876,7 @@ void FlowGraphCompiler::CopyParameters() { |
// Check that R6 now points to the null terminator in the arguments |
// descriptor. |
__ ldr(R5, Address(R6, 0)); |
- __ CompareImmediate(R5, reinterpret_cast<int32_t>(Object::null())); |
+ __ CompareObject(R5, Object::null_object()); |
__ b(&all_arguments_processed, EQ); |
} |
} else { |
@@ -939,7 +938,7 @@ void FlowGraphCompiler::CopyParameters() { |
__ SmiUntag(R9); |
__ add(R7, FP, Operand((kParamEndSlotFromFp + 1) * kWordSize)); |
const Address original_argument_addr(R7, R9, LSL, 2); |
- __ LoadImmediate(IP, reinterpret_cast<intptr_t>(Object::null())); |
+ __ LoadObject(IP, Object::null_object()); |
Label null_args_loop, null_args_loop_condition; |
__ b(&null_args_loop_condition); |
__ Bind(&null_args_loop); |
@@ -970,7 +969,7 @@ void FlowGraphCompiler::GenerateInlinedSetter(intptr_t offset) { |
__ ldr(R0, Address(SP, 1 * kWordSize)); // Receiver. |
__ ldr(R1, Address(SP, 0 * kWordSize)); // Value. |
__ StoreIntoObjectOffset(R0, offset, R1); |
- __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null())); |
+ __ LoadObject(R0, Object::null_object()); |
__ Ret(); |
} |
@@ -1104,7 +1103,7 @@ void FlowGraphCompiler::CompileGraph() { |
const intptr_t context_index = |
parsed_function().current_context_var()->index(); |
if (num_locals > 1) { |
- __ LoadImmediate(R0, reinterpret_cast<intptr_t>(Object::null())); |
+ __ LoadObject(R0, Object::null_object()); |
} |
for (intptr_t i = 0; i < num_locals; ++i) { |
// Subtract index i (locals lie at lower addresses than FP). |