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 /// An RpcException represents an exceptional event that happened | 7 /// An RpcException represents an exceptional event that happened |
| 8 /// while invoking an rpc. | 8 /// while invoking an rpc. |
| 9 abstract class RpcException implements Exception { | 9 abstract class RpcException implements Exception { |
| 10 RpcException(this.message); | 10 RpcException(this.message); |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 | 110 |
| 111 // Kinds of Instance. | 111 // Kinds of Instance. |
| 112 bool get isAbstractType => false; | 112 bool get isAbstractType => false; |
| 113 bool get isNull => false; | 113 bool get isNull => false; |
| 114 bool get isBool => false; | 114 bool get isBool => false; |
| 115 bool get isDouble => false; | 115 bool get isDouble => false; |
| 116 bool get isString => false; | 116 bool get isString => false; |
| 117 bool get isInt => false; | 117 bool get isInt => false; |
| 118 bool get isList => false; | 118 bool get isList => false; |
| 119 bool get isMap => false; | 119 bool get isMap => false; |
| 120 bool get isTypedData => false; | |
| 120 bool get isMirrorReference => false; | 121 bool get isMirrorReference => false; |
| 121 bool get isWeakProperty => false; | 122 bool get isWeakProperty => false; |
| 122 bool get isClosure => false; | 123 bool get isClosure => false; |
| 123 bool get isPlainInstance => false; | 124 bool get isPlainInstance => false; |
| 124 | 125 |
| 125 /// Has this object been fully loaded? | 126 /// Has this object been fully loaded? |
| 126 bool get loaded => _loaded; | 127 bool get loaded => _loaded; |
| 127 bool _loaded = false; | 128 bool _loaded = false; |
| 128 // TODO(turnidge): Make loaded observable and get rid of loading | 129 // TODO(turnidge): Make loaded observable and get rid of loading |
| 129 // from Isolate. | 130 // from Isolate. |
| (...skipping 1707 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1837 subclasses.sort(ServiceObject.LexicalSortName); | 1838 subclasses.sort(ServiceObject.LexicalSortName); |
| 1838 } | 1839 } |
| 1839 | 1840 |
| 1840 Future<ServiceObject> evaluate(String expression) { | 1841 Future<ServiceObject> evaluate(String expression) { |
| 1841 return isolate._eval(this, expression); | 1842 return isolate._eval(this, expression); |
| 1842 } | 1843 } |
| 1843 | 1844 |
| 1844 String toString() => 'Class($vmName)'; | 1845 String toString() => 'Class($vmName)'; |
| 1845 } | 1846 } |
| 1846 | 1847 |
| 1848 const _decodeTable = | |
|
Cutch
2015/06/08 23:10:19
Move this to lib/base64.dart
rmacnak
2015/06/09 00:29:47
Done.
| |
| 1849 const [null, null, null, null, null, null, null, null, | |
| 1850 null, null, null, null, null, null, null, null, | |
| 1851 null, null, null, null, null, null, null, null, | |
| 1852 null, null, null, null, null, null, null, null, | |
| 1853 null, null, null, null, null, null, null, null, | |
| 1854 null, null, null, 62, null, null, null, 63, | |
| 1855 52, 53, 54, 55, 56, 57, 58, 59, | |
| 1856 60, 61, null, null, null, 0, null, null, | |
| 1857 null, 0, 1, 2, 3, 4, 5, 6, | |
| 1858 7, 8, 9, 10, 11, 12, 13, 14, | |
| 1859 15, 16, 17, 18, 19, 20, 21, 22, | |
| 1860 23, 24, 25, null, null, null, null, null, | |
| 1861 null, 26, 27, 28, 29, 30, 31, 32, | |
| 1862 33, 34, 35, 36, 37, 38, 39, 40, | |
| 1863 41, 42, 43, 44, 45, 46, 47, 48, | |
| 1864 49, 50, 51]; | |
| 1865 | |
| 1866 Uint8List _decodeBase64(String s) { | |
| 1867 if (s.length % 4 != 0) throw "Malformed Base64: $s"; | |
| 1868 | |
| 1869 var odd_bits = 0; | |
| 1870 if (s[s.length - 1] == '=') { | |
| 1871 if (s[s.length - 2] == '=') { | |
| 1872 odd_bits = 2; | |
| 1873 } else { | |
| 1874 odd_bits = 1; | |
| 1875 } | |
| 1876 } | |
| 1877 | |
| 1878 var result = new Uint8List(s.length ~/ 4 * 3 - odd_bits); | |
|
Cutch
2015/06/08 23:10:19
var decodedByteLength = ((s.length ~/ 4) * 3) - od
rmacnak
2015/06/09 00:29:47
Done.
| |
| 1879 var limit = s.length; | |
| 1880 if (odd_bits != 0) { | |
| 1881 limit = limit - 4; | |
| 1882 } | |
| 1883 | |
| 1884 var i = 0, j = 0; | |
| 1885 while (i < limit) { | |
| 1886 var triple = _decodeTable[s.codeUnitAt(i++)]; | |
| 1887 triple = (triple << 6) | _decodeTable[s.codeUnitAt(i++)]; | |
| 1888 triple = (triple << 6) | _decodeTable[s.codeUnitAt(i++)]; | |
| 1889 triple = (triple << 6) | _decodeTable[s.codeUnitAt(i++)]; | |
| 1890 result[j++] = triple >> 16; | |
| 1891 result[j++] = (triple >> 8) & 255; | |
| 1892 result[j++] = triple & 255; | |
| 1893 } | |
| 1894 | |
| 1895 if (odd_bits != 0) { | |
| 1896 var triple = _decodeTable[s.codeUnitAt(i++)]; | |
| 1897 triple = (triple << 6) | _decodeTable[s.codeUnitAt(i++)]; | |
| 1898 triple = (triple << 6) | _decodeTable[s.codeUnitAt(i++)]; | |
| 1899 triple = (triple << 6) | _decodeTable[s.codeUnitAt(i++)]; | |
| 1900 result[j++] = triple >> 16; | |
| 1901 if (odd_bits == 1) { | |
| 1902 result[j++] = (triple >> 8) & 255; | |
| 1903 } | |
| 1904 } | |
| 1905 | |
| 1906 return result; | |
|
Cutch
2015/06/08 23:10:19
assert(j == decodedByteLength);
return result;
rmacnak
2015/06/09 00:29:47
Done.
| |
| 1907 } | |
| 1908 | |
| 1847 class Instance extends ServiceObject { | 1909 class Instance extends ServiceObject { |
| 1848 @observable String kind; | 1910 @observable String kind; |
| 1849 @observable Class clazz; | 1911 @observable Class clazz; |
| 1850 @observable int size; | 1912 @observable int size; |
| 1851 @observable int retainedSize; | 1913 @observable int retainedSize; |
| 1852 @observable String valueAsString; // If primitive. | 1914 @observable String valueAsString; // If primitive. |
| 1853 @observable bool valueAsStringIsTruncated; | 1915 @observable bool valueAsStringIsTruncated; |
| 1854 @observable ServiceFunction function; // If a closure. | 1916 @observable ServiceFunction function; // If a closure. |
| 1855 @observable Context context; // If a closure. | 1917 @observable Context context; // If a closure. |
| 1856 @observable String name; // If a Type. | 1918 @observable String name; // If a Type. |
| 1857 @observable int length; // If a List or Map. | 1919 @observable int length; // If a List, Map or TypedData. |
| 1858 | 1920 |
| 1859 @observable var typeClass; | 1921 @observable var typeClass; |
| 1860 @observable var fields; | 1922 @observable var fields; |
| 1861 @observable var nativeFields; | 1923 @observable var nativeFields; |
| 1862 @observable var elements; // If a List. | 1924 @observable var elements; // If a List. |
| 1863 @observable var associations; // If a Map. | 1925 @observable var associations; // If a Map. |
| 1926 @observable var typedElements; // If a TypedData. | |
| 1864 @observable var referent; // If a MirrorReference. | 1927 @observable var referent; // If a MirrorReference. |
| 1865 @observable Instance key; // If a WeakProperty. | 1928 @observable Instance key; // If a WeakProperty. |
| 1866 @observable Instance value; // If a WeakProperty. | 1929 @observable Instance value; // If a WeakProperty. |
| 1867 | 1930 |
| 1868 bool get isAbstractType { | 1931 bool get isAbstractType { |
| 1869 return (kind == 'Type' || kind == 'TypeRef' || | 1932 return (kind == 'Type' || kind == 'TypeRef' || |
| 1870 kind == 'TypeParameter' || kind == 'BoundedType'); | 1933 kind == 'TypeParameter' || kind == 'BoundedType'); |
| 1871 } | 1934 } |
| 1872 bool get isNull => kind == 'Null'; | 1935 bool get isNull => kind == 'Null'; |
| 1873 bool get isBool => kind == 'Bool'; | 1936 bool get isBool => kind == 'Bool'; |
| 1874 bool get isDouble => kind == 'Double'; | 1937 bool get isDouble => kind == 'Double'; |
| 1875 bool get isString => kind == 'String'; | 1938 bool get isString => kind == 'String'; |
| 1876 bool get isInt => kind == 'Int'; | 1939 bool get isInt => kind == 'Int'; |
| 1877 bool get isList => kind == 'List'; | 1940 bool get isList => kind == 'List'; |
| 1878 bool get isMap => kind == 'Map'; | 1941 bool get isMap => kind == 'Map'; |
| 1942 bool get isTypedData { | |
| 1943 return kind == 'Uint8ClampedList' | |
| 1944 || kind == 'Uint8List' | |
| 1945 || kind == 'Uint16List' | |
| 1946 || kind == 'Uint32List' | |
| 1947 || kind == 'Uint64List' | |
| 1948 || kind == 'Int8List' | |
| 1949 || kind == 'Int16List' | |
| 1950 || kind == 'Int32List' | |
| 1951 || kind == 'Int64List' | |
| 1952 || kind == 'Float32List' | |
| 1953 || kind == 'Float64List' | |
| 1954 || kind == 'Int32x4List' | |
| 1955 || kind == 'Float32x4List' | |
| 1956 || kind == 'Float64x2List'; | |
| 1957 } | |
| 1879 bool get isMirrorReference => kind == 'MirrorReference'; | 1958 bool get isMirrorReference => kind == 'MirrorReference'; |
| 1880 bool get isWeakProperty => kind == 'WeakProperty'; | 1959 bool get isWeakProperty => kind == 'WeakProperty'; |
| 1881 bool get isClosure => kind == 'Closure'; | 1960 bool get isClosure => kind == 'Closure'; |
| 1882 | 1961 |
| 1883 // TODO(turnidge): Is this properly backwards compatible when new | 1962 // TODO(turnidge): Is this properly backwards compatible when new |
| 1884 // instance kinds are added? | 1963 // instance kinds are added? |
| 1885 bool get isPlainInstance => kind == 'PlainInstance'; | 1964 bool get isPlainInstance => kind == 'PlainInstance'; |
| 1886 | 1965 |
| 1887 Instance._empty(ServiceObjectOwner owner) : super._empty(owner); | 1966 Instance._empty(ServiceObjectOwner owner) : super._empty(owner); |
| 1888 | 1967 |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 1902 length = map['length']; | 1981 length = map['length']; |
| 1903 | 1982 |
| 1904 if (mapIsRef) { | 1983 if (mapIsRef) { |
| 1905 return; | 1984 return; |
| 1906 } | 1985 } |
| 1907 | 1986 |
| 1908 nativeFields = map['_nativeFields']; | 1987 nativeFields = map['_nativeFields']; |
| 1909 fields = map['fields']; | 1988 fields = map['fields']; |
| 1910 elements = map['elements']; | 1989 elements = map['elements']; |
| 1911 associations = map['associations']; | 1990 associations = map['associations']; |
| 1991 if (map['bytes'] != null) { | |
| 1992 var bytes = _decodeBase64(map['bytes']); | |
| 1993 switch (map['kind']) { | |
| 1994 case "Uint8ClampedList": | |
| 1995 typedElements = bytes.buffer.asUint8ClampedList(); break; | |
| 1996 case "Uint8List": | |
| 1997 typedElements = bytes.buffer.asUint8List(); break; | |
| 1998 case "Uint16List": | |
| 1999 typedElements = bytes.buffer.asUint16List(); break; | |
| 2000 case "Uint32List": | |
| 2001 typedElements = bytes.buffer.asUint32List(); break; | |
| 2002 case "Uint64List": | |
| 2003 typedElements = bytes.buffer.asUint64List(); break; | |
| 2004 case "Int8List": | |
| 2005 typedElements = bytes.buffer.asInt8List(); break; | |
| 2006 case "Int16List": | |
| 2007 typedElements = bytes.buffer.asInt16List(); break; | |
| 2008 case "Int32List": | |
| 2009 typedElements = bytes.buffer.asInt32List(); break; | |
| 2010 case "Int64List": | |
| 2011 typedElements = bytes.buffer.asInt64List(); break; | |
| 2012 case "Float32List": | |
| 2013 typedElements = bytes.buffer.asFloat32List(); break; | |
| 2014 case "Float64List": | |
| 2015 typedElements = bytes.buffer.asFloat64List(); break; | |
| 2016 case "Int32x4List": | |
| 2017 typedElements = bytes.buffer.asInt32x4List(); break; | |
| 2018 case "Float32x4List": | |
| 2019 typedElements = bytes.buffer.asFloat32x4List(); break; | |
| 2020 case "Float64x2List": | |
| 2021 typedElements = bytes.buffer.asFloat64x2List(); break; | |
| 2022 } | |
| 2023 } | |
| 1912 typeClass = map['typeClass']; | 2024 typeClass = map['typeClass']; |
| 1913 referent = map['mirrorReferent']; | 2025 referent = map['mirrorReferent']; |
| 1914 key = map['propertyKey']; | 2026 key = map['propertyKey']; |
| 1915 value = map['propertyValue']; | 2027 value = map['propertyValue']; |
| 1916 | 2028 |
| 1917 // We are fully loaded. | 2029 // We are fully loaded. |
| 1918 _loaded = true; | 2030 _loaded = true; |
| 1919 } | 2031 } |
| 1920 | 2032 |
| 1921 String get shortName { | 2033 String get shortName { |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2094 @observable Library library; | 2206 @observable Library library; |
| 2095 @observable Instance declaredType; | 2207 @observable Instance declaredType; |
| 2096 @observable bool isStatic; | 2208 @observable bool isStatic; |
| 2097 @observable bool isFinal; | 2209 @observable bool isFinal; |
| 2098 @observable bool isConst; | 2210 @observable bool isConst; |
| 2099 @observable Instance staticValue; | 2211 @observable Instance staticValue; |
| 2100 @observable String name; | 2212 @observable String name; |
| 2101 @observable String vmName; | 2213 @observable String vmName; |
| 2102 | 2214 |
| 2103 @observable bool guardNullable; | 2215 @observable bool guardNullable; |
| 2104 @observable String guardClass; | 2216 @observable var /* Class | String */ guardClass; |
| 2105 @observable String guardLength; | 2217 @observable String guardLength; |
| 2106 @observable SourceLocation location; | 2218 @observable SourceLocation location; |
| 2107 | 2219 |
| 2108 Field._empty(ServiceObjectOwner owner) : super._empty(owner); | 2220 Field._empty(ServiceObjectOwner owner) : super._empty(owner); |
| 2109 | 2221 |
| 2110 void _update(ObservableMap map, bool mapIsRef) { | 2222 void _update(ObservableMap map, bool mapIsRef) { |
| 2111 // Extract full properties. | 2223 // Extract full properties. |
| 2112 _upgradeCollection(map, isolate); | 2224 _upgradeCollection(map, isolate); |
| 2113 | 2225 |
| 2114 name = map['name']; | 2226 name = map['name']; |
| (...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3267 var v = list[i]; | 3379 var v = list[i]; |
| 3268 if ((v is ObservableMap) && _isServiceMap(v)) { | 3380 if ((v is ObservableMap) && _isServiceMap(v)) { |
| 3269 list[i] = owner.getFromMap(v); | 3381 list[i] = owner.getFromMap(v); |
| 3270 } else if (v is ObservableList) { | 3382 } else if (v is ObservableList) { |
| 3271 _upgradeObservableList(v, owner); | 3383 _upgradeObservableList(v, owner); |
| 3272 } else if (v is ObservableMap) { | 3384 } else if (v is ObservableMap) { |
| 3273 _upgradeObservableMap(v, owner); | 3385 _upgradeObservableMap(v, owner); |
| 3274 } | 3386 } |
| 3275 } | 3387 } |
| 3276 } | 3388 } |
| OLD | NEW |