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

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

Issue 2646443005: Track async causal stack traces (Closed)
Patch Set: rebase Created 3 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 962068408cf4909fd659d69a95d0e7c063c0c66d..ed873f38e9b55ac043e5473ee82d3d14a4005221 100644
--- a/runtime/observatory/lib/src/service/object.dart
+++ b/runtime/observatory/lib/src/service/object.dart
@@ -4405,11 +4405,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);
@@ -4417,14 +4419,37 @@ 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 'kRegular': return M.FrameKind.regular;
+ case 'kAsyncCausal': return M.FrameKind.asyncCausal;
+ case 'kAsyncSuspensionMarker': return M.FrameKind.asyncSuspensionMarker;
+ default:
+ throw new UnsupportedError('Unknown FrameKind: $frameKind');
+ }
+ }
+
+ String toString() {
+ if (function != null) {
+ return "Frame([$kind] ${function.qualifiedName} $location)";
+ } else if (location != null) {
+ return "Frame([$kind] $location)";
+ } else {
+ return "Frame([$kind])";
+ }
+ }
}
class ServiceMessage extends ServiceObject {

Powered by Google App Engine
This is Rietveld 408576698