Index: runtime/vm/flow_graph_compiler_dbc.cc |
diff --git a/runtime/vm/flow_graph_compiler_dbc.cc b/runtime/vm/flow_graph_compiler_dbc.cc |
index eae97e28972bb29ceacca4dd182ffd970cd70563..5a60cb7d9b5a86c7e4056462ccfb305fdfbc53f7 100644 |
--- a/runtime/vm/flow_graph_compiler_dbc.cc |
+++ b/runtime/vm/flow_graph_compiler_dbc.cc |
@@ -237,11 +237,9 @@ void FlowGraphCompiler::GenerateAssertAssignable(TokenPosition token_pos, |
AddCurrentDescriptor(RawPcDescriptors::kOther, deopt_id, token_pos); |
if (is_optimizing()) { |
// Assert assignable keeps the instance on the stack as the result, |
- // all other arguments are popped. |
- // In optimized code we need to drop it because optimized code |
- // expects the result in the register and it is already there |
- // because locs()->in(0).reg() == locs()->out(0).reg(). |
- __ Drop1(); |
+ // all other arguments are popped. Since there may have been a GC during |
+ // the runtime call, we have to reload the instance. |
+ __ PopLocal(locs->out(0).reg()); |
Vyacheslav Egorov (Google)
2016/06/16 08:31:53
I don't get this comment. GC can't have anything t
|
} |
} |