Chromium Code Reviews| Index: runtime/vm/flow_graph_builder.cc |
| =================================================================== |
| --- runtime/vm/flow_graph_builder.cc (revision 44565) |
| +++ runtime/vm/flow_graph_builder.cc (working copy) |
| @@ -3436,10 +3436,14 @@ |
| void EffectGraphVisitor::VisitStoreLocalNode(StoreLocalNode* node) { |
| // If the right hand side is an expression that does not contain |
| // a safe point for the debugger to stop, add an explicit stub |
| - // call. |
| - if (node->value()->IsLiteralNode() || |
| + // call. Exception: don't do this when assigning to internal variables, |
| + // which by convention start with ':', or for generated code that |
| + // has no source position. |
| + if ((node->value()->IsLiteralNode() || |
| node->value()->IsLoadLocalNode() || |
| - node->value()->IsClosureNode()) { |
| + node->value()->IsClosureNode()) && |
| + (node->local().name().CharAt(0) != ':') && |
| + (node->token_pos() != Scanner::kNoSourcePos)) { |
|
srdjan
2015/03/18 23:26:27
How about factoring this out into LocalVariable::I
hausner
2015/03/18 23:59:21
Done.
|
| AddInstruction(new(Z) DebugStepCheckInstr( |
| node->token_pos(), RawPcDescriptors::kRuntimeCall)); |
| } |