Index: runtime/vm/debugger.h |
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h |
index bf932feb31e18e883c1f587416453068f129b081..206616ab707890e430dae5ec9451db599e6ae2af 100644 |
--- a/runtime/vm/debugger.h |
+++ b/runtime/vm/debugger.h |
@@ -260,6 +260,7 @@ class ActivationFrame : public ZoneAllocated { |
kRegular, |
kAsyncSuspensionMarker, |
kAsyncCausal, |
+ kAsyncActivation, |
}; |
ActivationFrame(uword pc, |
@@ -274,6 +275,8 @@ class ActivationFrame : public ZoneAllocated { |
explicit ActivationFrame(Kind kind); |
+ explicit ActivationFrame(const Closure& async_activation); |
+ |
uword pc() const { return pc_; } |
uword fp() const { return fp_; } |
uword sp() const { return sp_; } |
@@ -332,6 +335,10 @@ class ActivationFrame : public ZoneAllocated { |
// the complete script, function, and, local variable objects are included. |
void PrintToJSONObject(JSONObject* jsobj, bool full = false); |
+ RawObject* GetAsyncAwaiter(); |
+ |
+ bool HandlesException(const Instance& exc_obj); |
+ |
private: |
void PrintToJSONObjectRegular(JSONObject* jsobj, bool full); |
void PrintToJSONObjectAsyncCausal(JSONObject* jsobj, bool full); |
@@ -346,6 +353,12 @@ class ActivationFrame : public ZoneAllocated { |
void GetVarDescriptors(); |
void GetDescIndices(); |
+ RawObject* GetAsyncStreamControllerStreamAwaiter(const Object& stream); |
+ RawObject* GetAsyncStreamControllerStream(); |
+ RawObject* GetAsyncCompleterAwaiter(const Object& completer); |
+ RawObject* GetAsyncCompleter(); |
+ void ExtractTokenPositionFromAsyncClosure(); |
+ |
static const char* KindToCString(Kind kind) { |
switch (kind) { |
case kRegular: |
@@ -627,12 +640,14 @@ class Debugger { |
void SyncBreakpointLocation(BreakpointLocation* loc); |
ActivationFrame* TopDartFrame() const; |
- static ActivationFrame* CollectDartFrame(Isolate* isolate, |
- uword pc, |
- StackFrame* frame, |
- const Code& code, |
- const Array& deopt_frame, |
- intptr_t deopt_frame_offset); |
+ static ActivationFrame* CollectDartFrame( |
+ Isolate* isolate, |
+ uword pc, |
+ StackFrame* frame, |
+ const Code& code, |
+ const Array& deopt_frame, |
+ intptr_t deopt_frame_offset, |
+ ActivationFrame::Kind kind = ActivationFrame::kRegular); |
static RawArray* DeoptimizeToArray(Thread* thread, |
StackFrame* frame, |
const Code& code); |
@@ -648,10 +663,14 @@ class Debugger { |
Array* deopt_frame); |
static DebuggerStackTrace* CollectStackTrace(); |
static DebuggerStackTrace* CollectAsyncCausalStackTrace(); |
+ static DebuggerStackTrace* CollectAwaiterReturnStackTrace(); |
void SignalPausedEvent(ActivationFrame* top_frame, Breakpoint* bpt); |
intptr_t nextId() { return next_id_++; } |
+ bool ShouldPauseOnAsyncException(DebuggerStackTrace* stack_trace, |
+ const Instance& exc); |
+ |
bool ShouldPauseOnException(DebuggerStackTrace* stack_trace, |
const Instance& exc); |