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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of service; 5 part of service;
6 6
7 /// A [ServiceObject] is an object known to the VM service and is tied 7 /// A [ServiceObject] is an object known to the VM service and is tied
8 /// to an owning [Isolate]. 8 /// to an owning [Isolate].
9 abstract class ServiceObject extends Observable { 9 abstract class ServiceObject extends Observable {
10 static int LexicalSortName(ServiceObject o1, ServiceObject o2) { 10 static int LexicalSortName(ServiceObject o1, ServiceObject o2) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
74 bool get isContext => type == 'Context'; 74 bool get isContext => type == 'Context';
75 bool get isDouble => type == 'double'; 75 bool get isDouble => type == 'double';
76 bool get isError => type == 'Error'; 76 bool get isError => type == 'Error';
77 bool get isInstance => _isInstanceType(type); 77 bool get isInstance => _isInstanceType(type);
78 bool get isInt => type == 'int'; 78 bool get isInt => type == 'int';
79 bool get isList => type == 'List'; 79 bool get isList => type == 'List';
80 bool get isNull => type == 'null'; 80 bool get isNull => type == 'null';
81 bool get isSentinel => type == 'Sentinel'; 81 bool get isSentinel => type == 'Sentinel';
82 bool get isString => type == 'String'; 82 bool get isString => type == 'String';
83 83
84 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.
85 bool get isPcDescriptors => isObject && vmType == 'PcDescriptors';
86 bool get isTokenStream => isObject && vmType == 'TokenStream';
87 bool get isLocalVarDescriptors => isObject && vmType == 'LocalVarDescriptors';
88
84 // Kinds of Instance. 89 // Kinds of Instance.
85 bool get isMirrorReference => vmType == 'MirrorReference'; 90 bool get isMirrorReference => vmType == 'MirrorReference';
86 bool get isWeakProperty => vmType == 'WeakProperty'; 91 bool get isWeakProperty => vmType == 'WeakProperty';
87 bool get isClosure => false; 92 bool get isClosure => false;
88 bool get isPlainInstance { 93 bool get isPlainInstance {
89 return (type == 'Instance' && 94 return (type == 'Instance' &&
90 !isMirrorReference && !isWeakProperty && !isClosure); 95 !isMirrorReference && !isWeakProperty && !isClosure);
91 } 96 }
92 97
93 /// The complete service url of this object. 98 /// The complete service url of this object.
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 break; 151 break;
147 case 'Gauge': 152 case 'Gauge':
148 obj = new ServiceMetric._empty(owner); 153 obj = new ServiceMetric._empty(owner);
149 break; 154 break;
150 case 'Isolate': 155 case 'Isolate':
151 obj = new Isolate._empty(owner.vm); 156 obj = new Isolate._empty(owner.vm);
152 break; 157 break;
153 case 'Library': 158 case 'Library':
154 obj = new Library._empty(owner); 159 obj = new Library._empty(owner);
155 break; 160 break;
161 case 'LocalVarDescriptors':
162 obj = new LocalVarDescriptors._empty(owner);
163 break;
164 case 'PcDescriptors':
165 obj = new PcDescriptors._empty(owner);
166 break;
156 case 'ServiceError': 167 case 'ServiceError':
157 obj = new ServiceError._empty(owner); 168 obj = new ServiceError._empty(owner);
158 break; 169 break;
159 case 'ServiceEvent': 170 case 'ServiceEvent':
160 obj = new ServiceEvent._empty(owner); 171 obj = new ServiceEvent._empty(owner);
161 break; 172 break;
162 case 'ServiceException': 173 case 'ServiceException':
163 obj = new ServiceException._empty(owner); 174 obj = new ServiceException._empty(owner);
164 break; 175 break;
165 case 'Script': 176 case 'Script':
166 obj = new Script._empty(owner); 177 obj = new Script._empty(owner);
167 break; 178 break;
168 case 'Socket': 179 case 'Socket':
169 obj = new Socket._empty(owner); 180 obj = new Socket._empty(owner);
170 break; 181 break;
182 case 'TokenStream':
183 obj = new TokenStream._empty(owner);
184 break;
171 default: 185 default:
172 if (_isInstanceType(type) || 186 if (_isInstanceType(type) ||
173 type == 'Sentinel') { // TODO(rmacnak): Separate this out. 187 type == 'Sentinel') { // TODO(rmacnak): Separate this out.
174 obj = new Instance._empty(owner); 188 obj = new Instance._empty(owner);
175 break; 189 break;
176 } else { 190 } else {
177 obj = new ServiceMap._empty(owner); 191 obj = new ServiceMap._empty(owner);
178 break; 192 break;
179 } 193 }
180 } 194 }
(...skipping 1701 matching lines...) Expand 10 before | Expand all | Expand 10 after
1882 } 1896 }
1883 } 1897 }
1884 1898
1885 class CodeTick { 1899 class CodeTick {
1886 final int address; 1900 final int address;
1887 final int exclusiveTicks; 1901 final int exclusiveTicks;
1888 final int inclusiveTicks; 1902 final int inclusiveTicks;
1889 CodeTick(this.address, this.exclusiveTicks, this.inclusiveTicks); 1903 CodeTick(this.address, this.exclusiveTicks, this.inclusiveTicks);
1890 } 1904 }
1891 1905
1892
1893 class PcDescriptor extends Observable { 1906 class PcDescriptor extends Observable {
1894 final int address; 1907 final int address;
1895 @reflectable final int deoptId; 1908 @reflectable final int deoptId;
1896 @reflectable final int tokenPos; 1909 @reflectable final int tokenPos;
1897 @reflectable final int tryIndex; 1910 @reflectable final int tryIndex;
1898 @reflectable final String kind; 1911 @reflectable final String kind;
1899 @observable Script script; 1912 @observable Script script;
1900 @observable String formattedLine; 1913 @observable String formattedLine;
1901 PcDescriptor(this.address, this.deoptId, this.tokenPos, this.tryIndex, 1914 PcDescriptor(this.address, this.deoptId, this.tokenPos, this.tryIndex,
1902 this.kind); 1915 this.kind);
(...skipping 20 matching lines...) Expand all
1923 var line = script.tokenToLine(tokenPos); 1936 var line = script.tokenToLine(tokenPos);
1924 if (line == null) { 1937 if (line == null) {
1925 return; 1938 return;
1926 } 1939 }
1927 this.script = script; 1940 this.script = script;
1928 var scriptLine = script.getLine(line); 1941 var scriptLine = script.getLine(line);
1929 formattedLine = scriptLine.text; 1942 formattedLine = scriptLine.text;
1930 } 1943 }
1931 } 1944 }
1932 1945
1946 class PcDescriptors extends ServiceObject {
1947 bool get canCache => false;
1948 bool get immutable => true;
1949 @reflectable final List<PcDescriptor> descriptors =
1950 new ObservableList<PcDescriptor>();
1951
1952 PcDescriptors._empty(ServiceObjectOwner owner) : super._empty(owner);
1953
1954 void _update(ObservableMap m, bool mapIsRef) {
1955 if (mapIsRef) {
1956 return;
1957 }
1958
1959 descriptors.clear();
1960 for (var descriptor in m['members']) {
1961 var address = int.parse(descriptor['pc'], radix:16);
1962 var deoptId = descriptor['deoptId'];
1963 var tokenPos = descriptor['tokenPos'];
1964 var tryIndex = descriptor['tryIndex'];
1965 var kind = descriptor['kind'].trim();
1966 descriptors.add(
1967 new PcDescriptor(address, deoptId, tokenPos, tryIndex, kind));
1968 }
1969 }
1970 }
1971
1972 class LocalVarDescriptor extends Observable {
1973 @reflectable final String name;
1974 @reflectable final int index;
1975 @reflectable final int beginPos;
1976 @reflectable final int endPos;
1977 @reflectable final int scopeId;
1978 @reflectable final String kind;
1979
1980 LocalVarDescriptor(this.name, this.index, this.beginPos, this.endPos,
1981 this.scopeId, this.kind);
1982 }
1983
1984 class LocalVarDescriptors extends ServiceObject {
1985 bool get canCache => false;
1986 bool get immutable => true;
1987 @reflectable final List<LocalVarDescriptor> descriptors =
1988 new ObservableList<LocalVarDescriptor>();
1989 LocalVarDescriptors._empty(ServiceObjectOwner owner) : super._empty(owner);
1990
1991 void _update(ObservableMap m, bool mapIsRef) {
1992 if (mapIsRef) {
1993 return;
1994 }
1995 descriptors.clear();
1996 for (var descriptor in m['members']) {
1997 var name = descriptor['name'];
1998 var index = descriptor['index'];
1999 var beginPos = descriptor['beginPos'];
2000 var endPos = descriptor['endPos'];
2001 var scopeId = descriptor['scopeId'];
2002 var kind = descriptor['kind'].trim();
2003 descriptors.add(
2004 new LocalVarDescriptor(name, index, beginPos, endPos, scopeId, kind));
2005 }
2006 }
2007 }
2008
2009 class TokenStream extends ServiceObject {
2010 bool get canCache => false;
2011 bool get immutable => true;
2012
2013 @observable String privateKey;
2014
2015 TokenStream._empty(ServiceObjectOwner owner) : super._empty(owner);
2016
2017 void _update(ObservableMap m, bool mapIsRef) {
2018 if (mapIsRef) {
2019 return;
2020 }
2021 privateKey = m['privateKey'];
2022 }
2023 }
2024
1933 class CodeInstruction extends Observable { 2025 class CodeInstruction extends Observable {
1934 @observable final int address; 2026 @observable final int address;
1935 @observable final String machine; 2027 @observable final String machine;
1936 @observable final String human; 2028 @observable final String human;
1937 @observable CodeInstruction jumpTarget; 2029 @observable CodeInstruction jumpTarget;
1938 @reflectable List<PcDescriptor> descriptors = 2030 @reflectable List<PcDescriptor> descriptors =
1939 new ObservableList<PcDescriptor>(); 2031 new ObservableList<PcDescriptor>();
1940 2032
1941 static String formatPercent(num a, num total) { 2033 static String formatPercent(num a, num total) {
1942 var percent = 100.0 * (a / total); 2034 var percent = 100.0 * (a / total);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
2079 @reflectable final callers = new List<CodeCallCount>(); 2171 @reflectable final callers = new List<CodeCallCount>();
2080 @reflectable final callees = new List<CodeCallCount>(); 2172 @reflectable final callees = new List<CodeCallCount>();
2081 @reflectable final instructions = new ObservableList<CodeInstruction>(); 2173 @reflectable final instructions = new ObservableList<CodeInstruction>();
2082 @reflectable final addressTicks = new ObservableMap<int, CodeTick>(); 2174 @reflectable final addressTicks = new ObservableMap<int, CodeTick>();
2083 @observable String formattedInclusiveTicks = ''; 2175 @observable String formattedInclusiveTicks = '';
2084 @observable String formattedExclusiveTicks = ''; 2176 @observable String formattedExclusiveTicks = '';
2085 @observable Instance objectPool; 2177 @observable Instance objectPool;
2086 @observable ServiceFunction function; 2178 @observable ServiceFunction function;
2087 @observable Script script; 2179 @observable Script script;
2088 @observable bool isOptimized = false; 2180 @observable bool isOptimized = false;
2089 String name;
2090 String vmName;
2091 2181
2092 bool get canCache => true; 2182 bool get canCache => true;
2093 bool get immutable => true; 2183 bool get immutable => true;
2094 2184
2095 Code._empty(ServiceObjectOwner owner) : super._empty(owner); 2185 Code._empty(ServiceObjectOwner owner) : super._empty(owner);
2096 2186
2097 // Reset all data associated with a profile. 2187 // Reset all data associated with a profile.
2098 void resetProfileData() { 2188 void resetProfileData() {
2099 totalSamplesInProfile = 0; 2189 totalSamplesInProfile = 0;
2100 exclusiveTicks = 0; 2190 exclusiveTicks = 0;
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
2558 var v = list[i]; 2648 var v = list[i];
2559 if ((v is ObservableMap) && _isServiceMap(v)) { 2649 if ((v is ObservableMap) && _isServiceMap(v)) {
2560 list[i] = owner.getFromMap(v); 2650 list[i] = owner.getFromMap(v);
2561 } else if (v is ObservableList) { 2651 } else if (v is ObservableList) {
2562 _upgradeObservableList(v, owner); 2652 _upgradeObservableList(v, owner);
2563 } else if (v is ObservableMap) { 2653 } else if (v is ObservableMap) {
2564 _upgradeObservableMap(v, owner); 2654 _upgradeObservableMap(v, owner);
2565 } 2655 }
2566 } 2656 }
2567 } 2657 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698