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

Unified Diff: runtime/vm/debugger.h

Issue 271153002: Add pause/resume for isolates in vmservice/observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: gen js Created 6 years, 7 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/debugger.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/debugger.h
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 72a1218f077b9f2aed92751f2a6e61b5e3c4b614..dc176a811d0fa2a2f9fcb8af12f20a5aba26b2ff 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -37,7 +37,7 @@ class SourceBreakpoint {
intptr_t end_token_pos() const { return end_token_pos_; }
intptr_t id() const { return id_; }
- RawScript* script() { return script_; }
+ RawScript* script() const { return script_; }
RawString* SourceUrl();
intptr_t LineNumber();
@@ -46,7 +46,7 @@ class SourceBreakpoint {
void Enable();
void Disable();
bool IsEnabled() const { return is_enabled_; }
- bool IsResolved() { return is_resolved_; }
+ bool IsResolved() const { return is_resolved_; }
void PrintJSON(JSONStream* stream);
@@ -262,7 +262,9 @@ typedef void BreakpointHandler(Dart_Port isolate_id,
DebuggerStackTrace* stack);
-class Debugger {
+// TODO(turnidge): At some point we may want to turn this into a class
+// hierarchy.
+class DebuggerEvent {
public:
enum EventType {
kBreakpointReached = 1,
@@ -272,24 +274,71 @@ class Debugger {
kIsolateShutdown = 5,
kIsolateInterrupted = 6,
};
- struct DebuggerEvent {
- explicit DebuggerEvent(EventType event_type)
- : type(event_type) {
- top_frame = NULL;
- breakpoint = NULL;
- exception = NULL;
- isolate_id = 0;
- }
- EventType type;
- // type == kBreakpointReached.
- ActivationFrame* top_frame;
- // type == kBreakpointResolved, kBreakpointReached.
- SourceBreakpoint* breakpoint;
- // type == kExceptionThrown.
- const Object* exception;
- // type == kIsolate(Created|Shutdown|Interrupted).
- Dart_Port isolate_id;
- };
+
+ explicit DebuggerEvent(EventType event_type)
+ : type_(event_type),
+ top_frame_(NULL),
+ breakpoint_(NULL),
+ exception_(NULL),
+ isolate_id_(0) {}
+
+ EventType type() const { return type_; }
+
+ ActivationFrame* top_frame() const {
+ ASSERT(type_ == kBreakpointReached);
+ return top_frame_;
+ }
+ void set_top_frame(ActivationFrame* frame) {
+ ASSERT(type_ == kBreakpointReached);
+ top_frame_ = frame;
+ }
+
+ SourceBreakpoint* breakpoint() const {
+ ASSERT(type_ == kBreakpointReached || type_ == kBreakpointResolved);
+ return breakpoint_;
+ }
+ void set_breakpoint(SourceBreakpoint* bpt) {
+ ASSERT(type_ == kBreakpointReached || type_ == kBreakpointResolved);
+ breakpoint_ = bpt;
+ }
+
+ const Object* exception() const {
+ ASSERT(type_ == kExceptionThrown);
+ return exception_;
+ }
+ void set_exception(const Object* exception) {
+ ASSERT(type_ == kExceptionThrown);
+ exception_ = exception;
+ }
+
+ Dart_Port isolate_id() const {
+ ASSERT(type_ == kIsolateCreated ||
+ type_ == kIsolateShutdown ||
+ type_ == kIsolateInterrupted);
+ return isolate_id_;
+ }
+ void set_isolate_id(Dart_Port isolate_id) {
+ ASSERT(type_ == kIsolateCreated ||
+ type_ == kIsolateShutdown ||
+ type_ == kIsolateInterrupted);
+ isolate_id_ = isolate_id;
+ }
+
+ void PrintJSON(JSONStream* js) const;
+
+ static const char* EventTypeToCString(EventType type);
+
+ private:
+ EventType type_;
+ ActivationFrame* top_frame_;
+ SourceBreakpoint* breakpoint_;
+ const Object* exception_;
+ Dart_Port isolate_id_;
+};
+
+
+class Debugger {
+ public:
typedef void EventHandler(DebuggerEvent *event);
Debugger();
@@ -381,7 +430,7 @@ class Debugger {
void DebuggerStepCallback();
void SignalExceptionThrown(const Instance& exc);
- void SignalIsolateEvent(EventType type);
+ void SignalIsolateEvent(DebuggerEvent::EventType type);
static void SignalIsolateInterrupted();
uword GetPatchedStubAddress(uword breakpoint_address);
« no previous file with comments | « runtime/vm/dart_api_impl.cc ('k') | runtime/vm/debugger.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698