Chromium Code Reviews| Index: runtime/vm/flow_graph_compiler_mips.cc |
| diff --git a/runtime/vm/flow_graph_compiler_mips.cc b/runtime/vm/flow_graph_compiler_mips.cc |
| index 0a69efafd27ddb8148dd39a2a5b9fd91f8e7bfb3..2dd63c0be420fc0cac3d89d964668c02997bc60a 100644 |
| --- a/runtime/vm/flow_graph_compiler_mips.cc |
| +++ b/runtime/vm/flow_graph_compiler_mips.cc |
| @@ -1248,6 +1248,7 @@ void FlowGraphCompiler::EmitInstanceCall(ExternalLabel* target_label, |
| LocationSummary* locs) { |
| ASSERT(Array::Handle(ic_data.arguments_descriptor()).Length() > 0); |
| __ TraceSimMsg("InstanceCall"); |
| + __ LoadImmediate(S4, 0); |
| __ LoadObject(S5, ic_data); |
| GenerateDartCall(deopt_id, |
| token_pos, |
| @@ -1256,6 +1257,9 @@ void FlowGraphCompiler::EmitInstanceCall(ExternalLabel* target_label, |
| locs); |
| __ TraceSimMsg("InstanceCall return"); |
| __ Drop(argument_count); |
| +#if defined(DEBUG) |
| + __ LoadImmediate(S4, 1); // Garbage that looks like an object. |
| +#endif |
| } |
| @@ -1337,12 +1341,16 @@ void FlowGraphCompiler::EmitUnoptimizedStaticCall( |
| UNIMPLEMENTED(); |
| } |
| ExternalLabel target_label(label_address); |
| + __ LoadImmediate(S4, 0); |
| __ LoadObject(S5, ic_data); |
| GenerateDartCall(deopt_id, |
| token_pos, |
| &target_label, |
| PcDescriptors::kUnoptStaticCall, |
| locs); |
| +#if defined(DEBUG) |
| + __ LoadImmediate(S4, 0); // Garbage that looks like an object. |
|
Ivan Posva
2014/06/12 22:55:09
1
Maybe you should define a constant for this?
rmacnak
2014/06/12 23:50:15
Changed to kInvalidObjectPointer.
|
| +#endif |
| __ Drop(argument_count); |
| } |
| @@ -1414,6 +1422,8 @@ void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left, |
| __ BranchLinkPatchable( |
| &StubCode::OptimizedIdenticalWithNumberCheckLabel()); |
| } else { |
| + __ LoadImmediate(S4, 0); |
| + __ LoadImmediate(S5, 0); |
| __ BranchLinkPatchable( |
| &StubCode::UnoptimizedIdenticalWithNumberCheckLabel()); |
| } |
| @@ -1422,6 +1432,13 @@ void FlowGraphCompiler::EmitEqualityRegRegCompare(Register left, |
| Isolate::kNoDeoptId, |
| token_pos); |
| } |
| +#if defined(DEBUG) |
| + if (!is_optimizing()) { |
| + // Do this *after* adding the pc descriptor! |
| + __ LoadImmediate(S4, 1); // Garbage that looks like an object. |
| + __ LoadImmediate(S5, 1); |
| + } |
| +#endif |
| __ TraceSimMsg("EqualityRegRegCompare return"); |
| // Stub returns result in CMPRES1. If it is 0, then left and right are |
| // equal. |