Chromium Code Reviews| 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; |