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

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 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
116 factory ServiceObject._fromMap(ServiceObjectOwner owner, 116 factory ServiceObject._fromMap(ServiceObjectOwner owner,
117 ObservableMap map) { 117 ObservableMap map) {
118 if (map == null) { 118 if (map == null) {
119 return null; 119 return null;
120 } 120 }
121 if (!_isServiceMap(map)) { 121 if (!_isServiceMap(map)) {
122 Logger.root.severe('Malformed service object: $map'); 122 Logger.root.severe('Malformed service object: $map');
123 } 123 }
124 assert(_isServiceMap(map)); 124 assert(_isServiceMap(map));
125 var type = _stripRef(map['type']); 125 var type = _stripRef(map['type']);
126 var vmType = map['_vmType'] != null ? _stripRef(map['_vmType']) : type;
126 var obj = null; 127 var obj = null;
127 assert(type != 'VM'); 128 assert(type != 'VM');
128 switch (type) { 129 switch (type) {
129 case 'Class': 130 case 'Class':
130 obj = new Class._empty(owner); 131 obj = new Class._empty(owner);
131 break; 132 break;
132 case 'Code': 133 case 'Code':
133 obj = new Code._empty(owner); 134 obj = new Code._empty(owner);
134 break; 135 break;
135 case 'Context': 136 case 'Context':
(...skipping 10 matching lines...) Expand all
146 break; 147 break;
147 case 'Gauge': 148 case 'Gauge':
148 obj = new ServiceMetric._empty(owner); 149 obj = new ServiceMetric._empty(owner);
149 break; 150 break;
150 case 'Isolate': 151 case 'Isolate':
151 obj = new Isolate._empty(owner.vm); 152 obj = new Isolate._empty(owner.vm);
152 break; 153 break;
153 case 'Library': 154 case 'Library':
154 obj = new Library._empty(owner); 155 obj = new Library._empty(owner);
155 break; 156 break;
157 case 'Object':
158 switch (vmType) {
159 case 'PcDescriptors':
160 obj = new PcDescriptors._empty(owner);
161 break;
162 case 'LocalVarDescriptors':
163 obj = new LocalVarDescriptors._empty(owner);
164 break;
165 case 'TokenStream':
166 obj = new TokenStream._empty(owner);
167 break;
168 }
169 break;
156 case 'ServiceError': 170 case 'ServiceError':
157 obj = new ServiceError._empty(owner); 171 obj = new ServiceError._empty(owner);
158 break; 172 break;
159 case 'ServiceEvent': 173 case 'ServiceEvent':
160 obj = new ServiceEvent._empty(owner); 174 obj = new ServiceEvent._empty(owner);
161 break; 175 break;
162 case 'ServiceException': 176 case 'ServiceException':
163 obj = new ServiceException._empty(owner); 177 obj = new ServiceException._empty(owner);
164 break; 178 break;
165 case 'Script': 179 case 'Script':
166 obj = new Script._empty(owner); 180 obj = new Script._empty(owner);
167 break; 181 break;
168 case 'Socket': 182 case 'Socket':
169 obj = new Socket._empty(owner); 183 obj = new Socket._empty(owner);
170 break; 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;
176 } else {
177 obj = new ServiceMap._empty(owner);
178 break;
179 } 189 }
190 break;
191 }
192 if (obj == null) {
193 obj = new ServiceMap._empty(owner);
180 } 194 }
181 obj.update(map); 195 obj.update(map);
182 return obj; 196 return obj;
183 } 197 }
184 198
185 /// If [this] was created from a reference, load the full object 199 /// If [this] was created from a reference, load the full object
186 /// from the service by calling [reload]. Else, return [this]. 200 /// from the service by calling [reload]. Else, return [this].
187 Future<ServiceObject> load() { 201 Future<ServiceObject> load() {
188 if (loaded) { 202 if (loaded) {
189 return new Future.value(this); 203 return new Future.value(this);
(...skipping 1695 matching lines...) Expand 10 before | Expand all | Expand 10 after
1885 } 1899 }
1886 } 1900 }
1887 1901
1888 class CodeTick { 1902 class CodeTick {
1889 final int address; 1903 final int address;
1890 final int exclusiveTicks; 1904 final int exclusiveTicks;
1891 final int inclusiveTicks; 1905 final int inclusiveTicks;
1892 CodeTick(this.address, this.exclusiveTicks, this.inclusiveTicks); 1906 CodeTick(this.address, this.exclusiveTicks, this.inclusiveTicks);
1893 } 1907 }
1894 1908
1895
1896 class PcDescriptor extends Observable { 1909 class PcDescriptor extends Observable {
1897 final int address; 1910 final int address;
1898 @reflectable final int deoptId; 1911 @reflectable final int deoptId;
1899 @reflectable final int tokenPos; 1912 @reflectable final int tokenPos;
1900 @reflectable final int tryIndex; 1913 @reflectable final int tryIndex;
1901 @reflectable final String kind; 1914 @reflectable final String kind;
1902 @observable Script script; 1915 @observable Script script;
1903 @observable String formattedLine; 1916 @observable String formattedLine;
1904 PcDescriptor(this.address, this.deoptId, this.tokenPos, this.tryIndex, 1917 PcDescriptor(this.address, this.deoptId, this.tokenPos, this.tryIndex,
1905 this.kind); 1918 this.kind);
(...skipping 20 matching lines...) Expand all
1926 var line = script.tokenToLine(tokenPos); 1939 var line = script.tokenToLine(tokenPos);
1927 if (line == null) { 1940 if (line == null) {
1928 return; 1941 return;
1929 } 1942 }
1930 this.script = script; 1943 this.script = script;
1931 var scriptLine = script.getLine(line); 1944 var scriptLine = script.getLine(line);
1932 formattedLine = scriptLine.text; 1945 formattedLine = scriptLine.text;
1933 } 1946 }
1934 } 1947 }
1935 1948
1949 class PcDescriptors extends ServiceObject {
1950 @observable Class clazz;
1951 @observable int size;
1952 bool get canCache => false;
1953 bool get immutable => true;
1954 @reflectable final List<PcDescriptor> descriptors =
1955 new ObservableList<PcDescriptor>();
1956
1957 PcDescriptors._empty(ServiceObjectOwner owner) : super._empty(owner) {
1958 print('created PcDescriptors.');
1959 }
1960
1961 void _update(ObservableMap m, bool mapIsRef) {
1962 if (mapIsRef) {
1963 return;
1964 }
1965 _upgradeCollection(m, isolate);
1966 clazz = m['class'];
1967 size = m['size'];
1968 descriptors.clear();
1969 for (var descriptor in m['members']) {
1970 var address = int.parse(descriptor['pc'], radix:16);
1971 var deoptId = descriptor['deoptId'];
1972 var tokenPos = descriptor['tokenPos'];
1973 var tryIndex = descriptor['tryIndex'];
1974 var kind = descriptor['kind'].trim();
1975 descriptors.add(
1976 new PcDescriptor(address, deoptId, tokenPos, tryIndex, kind));
1977 }
1978 }
1979 }
1980
1981 class LocalVarDescriptor extends Observable {
1982 @reflectable final String name;
1983 @reflectable final int index;
1984 @reflectable final int beginPos;
1985 @reflectable final int endPos;
1986 @reflectable final int scopeId;
1987 @reflectable final String kind;
1988
1989 LocalVarDescriptor(this.name, this.index, this.beginPos, this.endPos,
1990 this.scopeId, this.kind);
1991 }
1992
1993 class LocalVarDescriptors extends ServiceObject {
1994 @observable Class clazz;
1995 @observable int size;
1996 bool get canCache => false;
1997 bool get immutable => true;
1998 @reflectable final List<LocalVarDescriptor> descriptors =
1999 new ObservableList<LocalVarDescriptor>();
2000 LocalVarDescriptors._empty(ServiceObjectOwner owner) : super._empty(owner);
2001
2002 void _update(ObservableMap m, bool mapIsRef) {
2003 if (mapIsRef) {
2004 return;
2005 }
2006 _upgradeCollection(m, isolate);
2007 clazz = m['class'];
2008 size = m['size'];
2009 descriptors.clear();
2010 for (var descriptor in m['members']) {
2011 var name = descriptor['name'];
2012 var index = descriptor['index'];
2013 var beginPos = descriptor['beginPos'];
2014 var endPos = descriptor['endPos'];
2015 var scopeId = descriptor['scopeId'];
2016 var kind = descriptor['kind'].trim();
2017 descriptors.add(
2018 new LocalVarDescriptor(name, index, beginPos, endPos, scopeId, kind));
2019 }
2020 }
2021 }
2022
2023 class TokenStream extends ServiceObject {
2024 @observable Class clazz;
2025 @observable int size;
2026 bool get canCache => false;
2027 bool get immutable => true;
2028
2029 @observable String privateKey;
2030
2031 TokenStream._empty(ServiceObjectOwner owner) : super._empty(owner);
2032
2033 void _update(ObservableMap m, bool mapIsRef) {
2034 if (mapIsRef) {
2035 return;
2036 }
2037 _upgradeCollection(m, isolate);
2038 clazz = m['class'];
2039 size = m['size'];
2040 privateKey = m['privateKey'];
2041 }
2042 }
2043
1936 class CodeInstruction extends Observable { 2044 class CodeInstruction extends Observable {
1937 @observable final int address; 2045 @observable final int address;
1938 @observable final String machine; 2046 @observable final String machine;
1939 @observable final String human; 2047 @observable final String human;
1940 @observable CodeInstruction jumpTarget; 2048 @observable CodeInstruction jumpTarget;
1941 @reflectable List<PcDescriptor> descriptors = 2049 @reflectable List<PcDescriptor> descriptors =
1942 new ObservableList<PcDescriptor>(); 2050 new ObservableList<PcDescriptor>();
1943 2051
1944 static String formatPercent(num a, num total) { 2052 static String formatPercent(num a, num total) {
1945 var percent = 100.0 * (a / total); 2053 var percent = 100.0 * (a / total);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
2082 @reflectable final callers = new List<CodeCallCount>(); 2190 @reflectable final callers = new List<CodeCallCount>();
2083 @reflectable final callees = new List<CodeCallCount>(); 2191 @reflectable final callees = new List<CodeCallCount>();
2084 @reflectable final instructions = new ObservableList<CodeInstruction>(); 2192 @reflectable final instructions = new ObservableList<CodeInstruction>();
2085 @reflectable final addressTicks = new ObservableMap<int, CodeTick>(); 2193 @reflectable final addressTicks = new ObservableMap<int, CodeTick>();
2086 @observable String formattedInclusiveTicks = ''; 2194 @observable String formattedInclusiveTicks = '';
2087 @observable String formattedExclusiveTicks = ''; 2195 @observable String formattedExclusiveTicks = '';
2088 @observable Instance objectPool; 2196 @observable Instance objectPool;
2089 @observable ServiceFunction function; 2197 @observable ServiceFunction function;
2090 @observable Script script; 2198 @observable Script script;
2091 @observable bool isOptimized = false; 2199 @observable bool isOptimized = false;
2092 String name;
2093 String vmName;
2094 2200
2095 bool get canCache => true; 2201 bool get canCache => true;
2096 bool get immutable => true; 2202 bool get immutable => true;
2097 2203
2098 Code._empty(ServiceObjectOwner owner) : super._empty(owner); 2204 Code._empty(ServiceObjectOwner owner) : super._empty(owner);
2099 2205
2100 // Reset all data associated with a profile. 2206 // Reset all data associated with a profile.
2101 void resetProfileData() { 2207 void resetProfileData() {
2102 totalSamplesInProfile = 0; 2208 totalSamplesInProfile = 0;
2103 exclusiveTicks = 0; 2209 exclusiveTicks = 0;
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after
2561 var v = list[i]; 2667 var v = list[i];
2562 if ((v is ObservableMap) && _isServiceMap(v)) { 2668 if ((v is ObservableMap) && _isServiceMap(v)) {
2563 list[i] = owner.getFromMap(v); 2669 list[i] = owner.getFromMap(v);
2564 } else if (v is ObservableList) { 2670 } else if (v is ObservableList) {
2565 _upgradeObservableList(v, owner); 2671 _upgradeObservableList(v, owner);
2566 } else if (v is ObservableMap) { 2672 } else if (v is ObservableMap) {
2567 _upgradeObservableMap(v, owner); 2673 _upgradeObservableMap(v, owner);
2568 } 2674 }
2569 } 2675 }
2570 } 2676 }
OLDNEW
« no previous file with comments | « runtime/bin/vmservice/observatory/lib/src/elements/service_view.dart ('k') | runtime/vm/object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698