Index: runtime/vm/kernel_to_il.cc |
diff --git a/runtime/vm/kernel_to_il.cc b/runtime/vm/kernel_to_il.cc |
index 5c2da64386508f519533c888b9a1b2bbeda37f15..11a84e2ffe6f9bbc55a57a82685f8b6ff037a375 100644 |
--- a/runtime/vm/kernel_to_il.cc |
+++ b/runtime/vm/kernel_to_il.cc |
@@ -366,20 +366,6 @@ ScopeBuildingResult* ScopeBuilder::BuildScopes() { |
// will forward the call to the real function. |
// -> see BuildGraphOfImplicitClosureFunction |
if (!function.IsImplicitClosureFunction()) { |
- // TODO(jensj): HACK: Push the begin token to after any parameters to |
- // avoid crash when breaking on definition line of async method in |
- // debugger. It seems that another scope needs to be added |
- // in which captures are made, but I can't make that work. |
- // This 'solution' doesn't crash, but I cannot see the parameters at |
- // that particular breakpoint either. |
- // Also push the end token to after the "}" to avoid crashing on |
- // stepping past the last line (to the "}" character). |
- if (node->body() != NULL && node->body()->position().IsReal()) { |
- scope_->set_begin_token_pos(node->body()->position()); |
- } |
- if (scope_->end_token_pos().IsReal()) { |
- scope_->set_end_token_pos(scope_->end_token_pos().Next()); |
- } |
node_->AcceptVisitor(this); |
} |
break; |
@@ -2549,20 +2535,10 @@ Fragment FlowGraphBuilder::PushArgument() { |
Fragment FlowGraphBuilder::Return(TokenPosition position) { |
Value* value = Pop(); |
ASSERT(stack_ == NULL); |
- |
- Fragment fragment; |
- |
- const Function& function = parsed_function_->function(); |
- if (FLAG_support_debugger && position.IsDebugPause() && |
- !function.is_native()) { |
- fragment <<= |
- new (Z) DebugStepCheckInstr(position, RawPcDescriptors::kRuntimeCall); |
- } |
- |
- ReturnInstr* return_instr = new (Z) ReturnInstr(position, value); |
+ ReturnInstr* return_instr = |
+ new (Z) ReturnInstr(TokenPosition::kNoSource, value); |
if (exit_collector_ != NULL) exit_collector_->AddExit(return_instr); |
- fragment <<= return_instr; |
- return fragment.closed(); |
+ return Fragment(return_instr).closed(); |
} |
@@ -2686,17 +2662,6 @@ Fragment FlowGraphBuilder::StoreLocal(TokenPosition position, |
StoreInstanceField(Context::variable_offset(variable->index())); |
} else { |
Value* value = Pop(); |
- if (FLAG_support_debugger && position.IsDebugPause() && |
- !variable->IsInternal()) { |
- if (value->definition()->IsConstant() || |
- value->definition()->IsAllocateObject() || |
- (value->definition()->IsLoadLocal() && |
- !value->definition()->AsLoadLocal()->local().IsInternal())) { |
- instructions <<= new (Z) |
- DebugStepCheckInstr(position, RawPcDescriptors::kRuntimeCall); |
- } |
- } |
- |
StoreLocalInstr* store = |
new (Z) StoreLocalInstr(*variable, value, position); |
instructions <<= store; |
@@ -3210,32 +3175,6 @@ FlowGraph* FlowGraphBuilder::BuildGraphOfFunction(FunctionNode* function, |
context_depth_ = current_context_depth; |
} |
- if (FLAG_support_debugger && function->position().IsDebugPause() && |
- !dart_function.is_native() && dart_function.is_debuggable()) { |
- // If a switch was added above: Start the switch by injecting a debugable |
- // safepoint so stepping over an await works. |
- // If not, still start the body with a debugable safepoint to ensure |
- // breaking on a method always happens, even if there are no |
- // assignments/calls/runtimecalls in the first basic block. |
- // Place this check at the last parameter to ensure parameters |
- // are in scope in the debugger at method entry. |
- const int num_params = dart_function.NumParameters(); |
- TokenPosition check_pos = TokenPosition::kNoSource; |
- if (num_params > 0) { |
- LocalScope* scope = parsed_function_->node_sequence()->scope(); |
- const LocalVariable& parameter = *scope->VariableAt(num_params - 1); |
- check_pos = parameter.token_pos(); |
- } |
- if (!check_pos.IsDebugPause()) { |
- // No parameters or synthetic parameters. |
- check_pos = function->position(); |
- ASSERT(check_pos.IsDebugPause()); |
- } |
- Fragment check( |
- new (Z) DebugStepCheckInstr(check_pos, RawPcDescriptors::kRuntimeCall)); |
- body = check + body; |
- } |
- |
normal_entry->LinkTo(body.entry); |
// When compiling for OSR, use a depth first search to prune instructions |