Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(63)

Side by Side Diff: runtime/vm/debugger.cc

Issue 2994983002: Fix stepping in when paused in async functions. (Closed)
Patch Set: Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/debugger.h" 5 #include "vm/debugger.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 8
9 #include "platform/address_sanitizer.h" 9 #include "platform/address_sanitizer.h"
10 10
(...skipping 3251 matching lines...) Expand 10 before | Expand all | Expand 10 after
3262 top_frame_awaiter_ = stack_trace_->FrameAt(0)->GetAsyncAwaiter(); 3262 top_frame_awaiter_ = stack_trace_->FrameAt(0)->GetAsyncAwaiter();
3263 } else { 3263 } else {
3264 top_frame_awaiter_ = Object::null(); 3264 top_frame_awaiter_ = Object::null();
3265 } 3265 }
3266 } 3266 }
3267 3267
3268 void Debugger::SetAsyncSteppingFramePointer() { 3268 void Debugger::SetAsyncSteppingFramePointer() {
3269 if (!FLAG_async_debugger) { 3269 if (!FLAG_async_debugger) {
3270 return; 3270 return;
3271 } 3271 }
3272 if (stack_trace_->FrameAt(0)->function().IsAsyncClosure() || 3272 if (stack_trace_->Length() > 0 &&
rmacnak 2017/08/14 20:15:24 if ((stack_trace_->Length() > 0) &&
3273 stack_trace_->FrameAt(0)->function().IsAsyncGenClosure()) { 3273 (stack_trace_->FrameAt(0)->function().IsAsyncClosure() ||
3274 stack_trace_->FrameAt(0)->function().IsAsyncGenClosure())) {
3274 async_stepping_fp_ = stack_trace_->FrameAt(0)->fp(); 3275 async_stepping_fp_ = stack_trace_->FrameAt(0)->fp();
3275 } else { 3276 } else {
3276 async_stepping_fp_ = 0; 3277 async_stepping_fp_ = 0;
3277 } 3278 }
3278 } 3279 }
3279 3280
3280 void Debugger::HandleSteppingRequest(DebuggerStackTrace* stack_trace, 3281 void Debugger::HandleSteppingRequest(DebuggerStackTrace* stack_trace,
3281 bool skip_next_step) { 3282 bool skip_next_step) {
3282 ResetSteppingFramePointers(); 3283 ResetSteppingFramePointers();
3283 RememberTopFrameAwaiter(); 3284 RememberTopFrameAwaiter();
(...skipping 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after
4360 4361
4361 void Debugger::RegisterCodeBreakpoint(CodeBreakpoint* bpt) { 4362 void Debugger::RegisterCodeBreakpoint(CodeBreakpoint* bpt) {
4362 ASSERT(bpt->next() == NULL); 4363 ASSERT(bpt->next() == NULL);
4363 bpt->set_next(code_breakpoints_); 4364 bpt->set_next(code_breakpoints_);
4364 code_breakpoints_ = bpt; 4365 code_breakpoints_ = bpt;
4365 } 4366 }
4366 4367
4367 #endif // !PRODUCT 4368 #endif // !PRODUCT
4368 4369
4369 } // namespace dart 4370 } // namespace dart
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698