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

Unified Diff: runtime/observatory/lib/src/service/object.dart

Issue 866663003: Add a working command line debugger to Observatory. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 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
Index: runtime/observatory/lib/src/service/object.dart
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart
index f4ec057dd8637c9db7649e179c194b4e17ef074f..47e45becbbfc9cceca209f29591c35153129718c 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -1021,8 +1021,7 @@ class Isolate extends ServiceObjectOwner with Coverage {
return node;
}
- // TODO(turnidge): Make this an ObservableList instead.
- ServiceMap breakpoints;
+ ObservableList breakpoints = new ObservableList();
void _removeBreakpoint(ServiceMap bpt) {
var script = bpt['location']['script'];
@@ -1058,7 +1057,7 @@ class Isolate extends ServiceObjectOwner with Coverage {
void _updateBreakpoints(ServiceMap newBreakpoints) {
// Remove all of the old breakpoints from the Script lines.
if (breakpoints != null) {
- for (var bpt in breakpoints['breakpoints']) {
+ for (var bpt in breakpoints) {
_removeBreakpoint(bpt);
}
}
@@ -1066,7 +1065,11 @@ class Isolate extends ServiceObjectOwner with Coverage {
for (var bpt in newBreakpoints['breakpoints']) {
_addBreakpoint(bpt);
}
- breakpoints = newBreakpoints;
+ breakpoints.clear();
+ breakpoints.addAll(newBreakpoints['breakpoints']);
+
+ // Sort the breakpoints by breakpointNumber.
+ breakpoints.sort((a, b) => (a['breakpointNumber'] - b['breakpointNumber']));
}
Future<ServiceObject> _inProgressReloadBpts;
@@ -1122,6 +1125,9 @@ class Isolate extends ServiceObjectOwner with Coverage {
});
}
+ // TODO(turnidge): If the user invokes pause (or other rpcs) twice,
+ // they could get a race. Consider returning an "in progress"
+ // future to avoid this.
Future pause() {
return invokeRpc('pause', {}).then((result) {
if (result is DartError) {
@@ -1938,7 +1944,7 @@ class ScriptLine extends Observable {
possibleBpt = !_isTrivialLine(text);
// TODO(turnidge): This is not so efficient. Consider improving.
- for (var bpt in this.script.isolate.breakpoints['breakpoints']) {
+ for (var bpt in this.script.isolate.breakpoints) {
var bptScript = bpt['location']['script'];
var bptTokenPos = bpt['location']['tokenPos'];
if (bptScript == this.script &&
« no previous file with comments | « runtime/observatory/lib/src/elements/service_view.dart ('k') | runtime/observatory/test/debugging_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698