| Index: runtime/vm/flow_graph_builder.cc
|
| diff --git a/runtime/vm/flow_graph_builder.cc b/runtime/vm/flow_graph_builder.cc
|
| index b615941fad16b51c183160cc2be077fe32b79e9e..79285e9619a9ae87be43529d3681e45fc65f9949 100644
|
| --- a/runtime/vm/flow_graph_builder.cc
|
| +++ b/runtime/vm/flow_graph_builder.cc
|
| @@ -3586,10 +3586,14 @@ void EffectGraphVisitor::VisitStoreLocalNode(StoreLocalNode* node) {
|
| // call. Exception: don't do this when assigning to or from internal
|
| // variables, or for generated code that has no source position.
|
| if (FLAG_support_debugger) {
|
| - if ((node->value()->IsLiteralNode() ||
|
| - (node->value()->IsLoadLocalNode() &&
|
| - !node->value()->AsLoadLocalNode()->local().IsInternal()) ||
|
| - node->value()->IsClosureNode()) &&
|
| + AstNode* rhs = node->value();
|
| + if (rhs->IsAssignableNode()) {
|
| + rhs = rhs->AsAssignableNode()->expr();
|
| + }
|
| + if ((rhs->IsLiteralNode() ||
|
| + (rhs->IsLoadLocalNode() &&
|
| + !rhs->AsLoadLocalNode()->local().IsInternal()) ||
|
| + rhs->IsClosureNode()) &&
|
| !node->local().IsInternal() &&
|
| node->token_pos().IsDebugPause()) {
|
| AddInstruction(new(Z) DebugStepCheckInstr(
|
| @@ -3708,13 +3712,13 @@ Definition* EffectGraphVisitor::BuildStoreStaticField(
|
| // 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.
|
| - AstNode* val = node->value();
|
| - if (val->IsAssignableNode()) {
|
| - val = val->AsAssignableNode()->expr();
|
| + AstNode* rhs = node->value();
|
| + if (rhs->IsAssignableNode()) {
|
| + rhs = rhs->AsAssignableNode()->expr();
|
| }
|
| - if ((val->IsLiteralNode() ||
|
| - val->IsLoadLocalNode() ||
|
| - val->IsClosureNode()) &&
|
| + if ((rhs->IsLiteralNode() ||
|
| + rhs->IsLoadLocalNode() ||
|
| + rhs->IsClosureNode()) &&
|
| node->token_pos().IsDebugPause()) {
|
| AddInstruction(new(Z) DebugStepCheckInstr(
|
| node->token_pos(), RawPcDescriptors::kRuntimeCall));
|
|
|