Index: runtime/observatory/lib/src/service/object.dart |
diff --git a/runtime/observatory/lib/src/service/object.dart b/runtime/observatory/lib/src/service/object.dart |
index 75c09182de503bbd483c0b534dea51e712d0472b..84460bb4ca900616a628e577d603c50388280265 100644 |
--- a/runtime/observatory/lib/src/service/object.dart |
+++ b/runtime/observatory/lib/src/service/object.dart |
@@ -117,6 +117,7 @@ abstract class ServiceObject extends Observable { |
bool get isInt => false; |
bool get isList => false; |
bool get isMap => false; |
+ bool get isTypedData => false; |
bool get isMirrorReference => false; |
bool get isWeakProperty => false; |
bool get isClosure => false; |
@@ -1854,13 +1855,14 @@ class Instance extends ServiceObject { |
@observable ServiceFunction function; // If a closure. |
@observable Context context; // If a closure. |
@observable String name; // If a Type. |
- @observable int length; // If a List or Map. |
+ @observable int length; // If a List, Map or TypedData. |
@observable var typeClass; |
@observable var fields; |
@observable var nativeFields; |
@observable var elements; // If a List. |
@observable var associations; // If a Map. |
+ @observable var typedElements; // If a TypedData. |
@observable var referent; // If a MirrorReference. |
@observable Instance key; // If a WeakProperty. |
@observable Instance value; // If a WeakProperty. |
@@ -1876,6 +1878,7 @@ class Instance extends ServiceObject { |
bool get isInt => kind == 'Int'; |
bool get isList => kind == 'List'; |
bool get isMap => kind == 'Map'; |
+ bool get isTypedData => kind == 'TypedData'; |
bool get isMirrorReference => kind == 'MirrorReference'; |
bool get isWeakProperty => kind == 'WeakProperty'; |
bool get isClosure => kind == 'Closure'; |
@@ -1909,6 +1912,41 @@ class Instance extends ServiceObject { |
fields = map['fields']; |
elements = map['elements']; |
associations = map['associations']; |
+ if (map['bytes'] != null) { |
+ var bytes = new Uint8List.fromList(map['bytes']); |
+ switch (map['elementType']) { |
+ case "Uint8ClampedArray": |
+ typedElements = bytes.buffer.asUint8ClampedList(); break; |
+ case "Uint8Array": |
+ typedElements = bytes.buffer.asUint8List(); break; |
+ case "Uint16Array": |
+ typedElements = bytes.buffer.asUint16List(); break; |
+ case "Uint32Array": |
+ typedElements = bytes.buffer.asUint32List(); break; |
+ case "Uint64Array": |
+ typedElements = bytes.buffer.asUint64List(); break; |
+ case "Int8Array": |
+ typedElements = bytes.buffer.asInt8List(); break; |
+ case "Int16Array": |
+ typedElements = bytes.buffer.asInt16List(); break; |
+ case "Int32Array": |
+ typedElements = bytes.buffer.asInt32List(); break; |
+ case "Int64Array": |
+ typedElements = bytes.buffer.asInt64List(); break; |
+ case "Float32Array": |
+ typedElements = bytes.buffer.asFloat32List(); break; |
+ case "Float64Array": |
+ typedElements = bytes.buffer.asFloat64List(); break; |
+ case "Int32x4Array": |
+ typedElements = bytes.buffer.asInt32x4List(); break; |
+ case "Float32x4Array": |
+ typedElements = bytes.buffer.asFloat32x4List(); break; |
+ case "Float64x2Array": |
+ typedElements = bytes.buffer.asFloat64x2List(); break; |
+ default: |
+ typedElements = null; |
+ } |
+ } |
typeClass = map['typeClass']; |
referent = map['mirrorReferent']; |
key = map['propertyKey']; |