Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 Loading... | |
| 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 } |
| OLD | NEW |