Index: runtime/vm/kernel_binary_flowgraph.cc |
diff --git a/runtime/vm/kernel_binary_flowgraph.cc b/runtime/vm/kernel_binary_flowgraph.cc |
index 47aab5d4a98fc32765e6c9a1023ee8347df19dc7..f0b3984379d0af31e41406d3a79417f2e47e7d8b 100644 |
--- a/runtime/vm/kernel_binary_flowgraph.cc |
+++ b/runtime/vm/kernel_binary_flowgraph.cc |
@@ -1296,7 +1296,8 @@ void StreamingScopeBuilder::VisitStatement() { |
return; |
} |
case kContinueSwitchStatement: |
- builder_->ReadUInt(); // read target_index. |
+ builder_->ReadPosition(); // read position. |
+ builder_->ReadUInt(); // read target_index. |
return; |
case kIfStatement: |
VisitExpression(); // read condition. |
@@ -4579,7 +4580,8 @@ void StreamingFlowGraphBuilder::SkipStatement() { |
return; |
} |
case kContinueSwitchStatement: |
- ReadUInt(); // read target_index. |
+ ReadPosition(); // read position. |
+ ReadUInt(); // read target_index. |
return; |
case kIfStatement: |
SkipExpression(); // read condition. |
@@ -6958,7 +6960,8 @@ Fragment StreamingFlowGraphBuilder::BuildSwitchStatement() { |
} |
Fragment StreamingFlowGraphBuilder::BuildContinueSwitchStatement() { |
- intptr_t target_index = ReadUInt(); // read target index. |
+ TokenPosition position = ReadPosition(); // read position. |
+ intptr_t target_index = ReadUInt(); // read target index. |
TryFinallyBlock* outer_finally = NULL; |
intptr_t target_context_depth = -1; |
@@ -6969,6 +6972,9 @@ Fragment StreamingFlowGraphBuilder::BuildContinueSwitchStatement() { |
instructions += |
TranslateFinallyFinalizers(outer_finally, target_context_depth); |
if (instructions.is_open()) { |
+ if (NeedsDebugStepCheck(parsed_function()->function(), position)) { |
+ instructions += DebugStepCheck(position); |
+ } |
instructions += Goto(entry); |
} |
return instructions; |