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 c96c03662381807578def1dcc26b71addd2bcb42..8fa3431b1ad60bfa7cab403b1d665bd0e49f8122 100644 |
--- a/runtime/vm/flow_graph_compiler_arm.cc |
+++ b/runtime/vm/flow_graph_compiler_arm.cc |
@@ -1196,9 +1196,10 @@ void FlowGraphCompiler::EmitEdgeCounter(intptr_t edge_id) { |
bool old_use_far_branches = assembler_->use_far_branches(); |
assembler_->set_use_far_branches(true); |
#endif // DEBUG |
- __ ldr(IP, FieldAddress(R0, Array::element_offset(edge_id))); |
- __ add(IP, IP, Operand(Smi::RawValue(1))); |
- __ StoreIntoSmiField(FieldAddress(R0, Array::element_offset(edge_id)), IP); |
+ __ LoadFieldFromOffset(kWord, R1, R0, Array::element_offset(edge_id)); |
+ __ add(R1, R1, Operand(Smi::RawValue(1))); |
+ __ StoreIntoObjectNoBarrierOffset( |
+ R0, Array::element_offset(edge_id), R1, Assembler::kOnlySmi); |
#if defined(DEBUG) |
assembler_->set_use_far_branches(old_use_far_branches); |
#endif // DEBUG |