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

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

Issue 560503002: Add support for TokenStream, LocalVarDescriptors, and PcDescriptors to service lib and generic obje… (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 3 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/bin/vmservice/observatory/lib/src/service/object.dart
diff --git a/runtime/bin/vmservice/observatory/lib/src/service/object.dart b/runtime/bin/vmservice/observatory/lib/src/service/object.dart
index 7d5ab83f51562efb2109a46bb8e6fa85616709fd..930e31a0de5e7f22b58f0fe46f3b92af2a760ba5 100644
--- a/runtime/bin/vmservice/observatory/lib/src/service/object.dart
+++ b/runtime/bin/vmservice/observatory/lib/src/service/object.dart
@@ -81,6 +81,11 @@ abstract class ServiceObject extends Observable {
bool get isSentinel => type == 'Sentinel';
bool get isString => type == 'String';
+ bool get isObject => type == 'Object';
turnidge 2014/09/09 19:30:25 Technically all responses are an Object, if you wa
Cutch 2014/09/10 19:59:20 I don't need this anymore- killing.
+ bool get isPcDescriptors => isObject && vmType == 'PcDescriptors';
+ bool get isTokenStream => isObject && vmType == 'TokenStream';
+ bool get isLocalVarDescriptors => isObject && vmType == 'LocalVarDescriptors';
+
// Kinds of Instance.
bool get isMirrorReference => vmType == 'MirrorReference';
bool get isWeakProperty => vmType == 'WeakProperty';
@@ -153,6 +158,12 @@ abstract class ServiceObject extends Observable {
case 'Library':
obj = new Library._empty(owner);
break;
+ case 'LocalVarDescriptors':
+ obj = new LocalVarDescriptors._empty(owner);
+ break;
+ case 'PcDescriptors':
+ obj = new PcDescriptors._empty(owner);
+ break;
case 'ServiceError':
obj = new ServiceError._empty(owner);
break;
@@ -168,6 +179,9 @@ abstract class ServiceObject extends Observable {
case 'Socket':
obj = new Socket._empty(owner);
break;
+ case 'TokenStream':
+ obj = new TokenStream._empty(owner);
+ break;
default:
if (_isInstanceType(type) ||
type == 'Sentinel') { // TODO(rmacnak): Separate this out.
@@ -1889,7 +1903,6 @@ class CodeTick {
CodeTick(this.address, this.exclusiveTicks, this.inclusiveTicks);
}
-
class PcDescriptor extends Observable {
final int address;
@reflectable final int deoptId;
@@ -1930,6 +1943,85 @@ class PcDescriptor extends Observable {
}
}
+class PcDescriptors extends ServiceObject {
+ bool get canCache => false;
+ bool get immutable => true;
+ @reflectable final List<PcDescriptor> descriptors =
+ new ObservableList<PcDescriptor>();
+
+ PcDescriptors._empty(ServiceObjectOwner owner) : super._empty(owner);
+
+ void _update(ObservableMap m, bool mapIsRef) {
+ if (mapIsRef) {
+ return;
+ }
+
+ descriptors.clear();
+ for (var descriptor in m['members']) {
+ var address = int.parse(descriptor['pc'], radix:16);
+ var deoptId = descriptor['deoptId'];
+ var tokenPos = descriptor['tokenPos'];
+ var tryIndex = descriptor['tryIndex'];
+ var kind = descriptor['kind'].trim();
+ descriptors.add(
+ new PcDescriptor(address, deoptId, tokenPos, tryIndex, kind));
+ }
+ }
+}
+
+class LocalVarDescriptor extends Observable {
+ @reflectable final String name;
+ @reflectable final int index;
+ @reflectable final int beginPos;
+ @reflectable final int endPos;
+ @reflectable final int scopeId;
+ @reflectable final String kind;
+
+ LocalVarDescriptor(this.name, this.index, this.beginPos, this.endPos,
+ this.scopeId, this.kind);
+}
+
+class LocalVarDescriptors extends ServiceObject {
+ bool get canCache => false;
+ bool get immutable => true;
+ @reflectable final List<LocalVarDescriptor> descriptors =
+ new ObservableList<LocalVarDescriptor>();
+ LocalVarDescriptors._empty(ServiceObjectOwner owner) : super._empty(owner);
+
+ void _update(ObservableMap m, bool mapIsRef) {
+ if (mapIsRef) {
+ return;
+ }
+ descriptors.clear();
+ for (var descriptor in m['members']) {
+ var name = descriptor['name'];
+ var index = descriptor['index'];
+ var beginPos = descriptor['beginPos'];
+ var endPos = descriptor['endPos'];
+ var scopeId = descriptor['scopeId'];
+ var kind = descriptor['kind'].trim();
+ descriptors.add(
+ new LocalVarDescriptor(name, index, beginPos, endPos, scopeId, kind));
+ }
+ }
+}
+
+class TokenStream extends ServiceObject {
+ bool get canCache => false;
+ bool get immutable => true;
+
+ @observable String privateKey;
+
+ TokenStream._empty(ServiceObjectOwner owner) : super._empty(owner);
+
+ void _update(ObservableMap m, bool mapIsRef) {
+ if (mapIsRef) {
+ return;
+ }
+ privateKey = m['privateKey'];
+ }
+}
+
class CodeInstruction extends Observable {
@observable final int address;
@observable final String machine;
@@ -2086,8 +2178,6 @@ class Code extends ServiceObject {
@observable ServiceFunction function;
@observable Script script;
@observable bool isOptimized = false;
- String name;
- String vmName;
bool get canCache => true;
bool get immutable => true;

Powered by Google App Engine
This is Rietveld 408576698