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

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

Issue 2603383004: Sane asynchronous debugging and stack traces (Closed)
Patch Set: rebase Created 3 years, 11 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 ccc9054597b92b533b9fa16d6c53f5a9fdc20d47..b99cf538c37e2b4005374b1e01a7a92e1e9436bb 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -217,6 +217,7 @@ abstract class ServiceObject {
case 'Field':
obj = new Field._empty(owner);
break;
+ case 'AsyncFrame':
case 'Frame':
obj = new Frame._empty(owner);
break;
@@ -4390,11 +4391,13 @@ class ServiceMetric extends ServiceObject implements M.Metric {
}
class Frame extends ServiceObject implements M.Frame {
+ M.FrameKind kind = M.FrameKind.regular;
int index;
ServiceFunction function;
SourceLocation location;
Code code;
List<ServiceMap> variables = <ServiceMap>[];
+ String marker;
Frame._empty(ServiceObject owner) : super._empty(owner);
@@ -4402,14 +4405,30 @@ class Frame extends ServiceObject implements M.Frame {
assert(!mapIsRef);
_loaded = true;
_upgradeCollection(map, owner);
+ this.kind = _fromString(map['kind']);
+ this.marker = map['marker'];
this.index = map['index'];
this.function = map['function'];
this.location = map['location'];
this.code = map['code'];
- this.variables = map['vars'];
+ this.variables = map['vars'] ?? [];
}
- String toString() => "Frame(${function.qualifiedName} $location)";
+ M.FrameKind _fromString(String frameKind) {
+ if (frameKind == null) {
+ return M.FrameKind.regular;
+ }
+ switch (frameKind) {
+ case 'kMarker': return M.FrameKind.marker;
+ case 'kRegular': return M.FrameKind.regular;
+ case 'kAsyncLive': return M.FrameKind.asyncLive;
+ case 'kAsyncHistorical': return M.FrameKind.asyncHistorical;
+ default:
+ throw new UnsupportedError('Unknown FrameKind: $frameKind');
+ }
+
+ }
+ String toString() => "Frame([$kind] ${function.qualifiedName} $location)";
}
class ServiceMessage extends ServiceObject {

Powered by Google App Engine
This is Rietveld 408576698