Index: runtime/vm/raw_object.h |
diff --git a/runtime/vm/raw_object.h b/runtime/vm/raw_object.h |
index 2889ff92760f8f48cdfda083de3dd53c704d9dca..d904d206af8bb55c074d18be67e26d200a16d90f 100644 |
--- a/runtime/vm/raw_object.h |
+++ b/runtime/vm/raw_object.h |
@@ -71,6 +71,7 @@ namespace dart { |
V(Uint32Array) \ |
V(Int64Array) \ |
V(Uint64Array) \ |
+ V(Float32x4Array) \ |
V(Float32Array) \ |
V(Float64Array) \ |
V(ExternalInt8Array) \ |
@@ -82,12 +83,16 @@ namespace dart { |
V(ExternalUint32Array) \ |
V(ExternalInt64Array) \ |
V(ExternalUint64Array) \ |
+ V(ExternalFloat32x4Array) \ |
V(ExternalFloat32Array) \ |
V(ExternalFloat64Array) \ |
V(Stacktrace) \ |
V(JSRegExp) \ |
V(WeakProperty) \ |
V(DartFunction) \ |
+ V(Float32x4) \ |
+ V(Uint32x4) \ |
+ |
#define CLASS_LIST_STRINGS(V) \ |
V(String) \ |
@@ -1301,6 +1306,24 @@ class RawGrowableObjectArray : public RawInstance { |
}; |
+class RawFloat32x4 : public RawInstance { |
+ RAW_HEAP_OBJECT_IMPLEMENTATION(Float32x4); |
+ |
+ float value_[4]; |
+ |
+ friend class SnapshotReader; |
+}; |
+ |
+ |
+class RawUint32x4 : public RawInstance { |
+ RAW_HEAP_OBJECT_IMPLEMENTATION(Uint32x4); |
+ |
+ uint32_t value_[4]; |
+ |
+ friend class SnapshotReader; |
+}; |
+ |
+ |
// Define an aliases for intptr_t. |
#if defined(ARCH_IS_32_BIT) |
#define RawIntPtrArray RawInt32Array |
@@ -1401,6 +1424,13 @@ class RawUint64Array : public RawByteArray { |
}; |
+class RawFloat32x4Array : public RawByteArray { |
+ RAW_HEAP_OBJECT_IMPLEMENTATION(Float32x4Array); |
+ |
+ // Variable length data follows here. |
+ simd_value_t data_[0]; |
+}; |
+ |
class RawFloat32Array : public RawByteArray { |
RAW_HEAP_OBJECT_IMPLEMENTATION(Float32Array); |
@@ -1490,6 +1520,14 @@ class RawExternalUint64Array : public RawByteArray { |
}; |
+class RawExternalFloat32x4Array : public RawByteArray { |
+ RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalFloat32x4Array); |
+ |
+ simd_value_t* data_; |
+ void* peer_; |
+}; |
+ |
+ |
class RawExternalFloat32Array : public RawByteArray { |
RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalFloat32Array); |
@@ -1670,20 +1708,22 @@ inline bool RawObject::IsByteArrayClassId(intptr_t index) { |
kUint32ArrayCid == kByteArrayCid + 7 && |
kInt64ArrayCid == kByteArrayCid + 8 && |
kUint64ArrayCid == kByteArrayCid + 9 && |
- kFloat32ArrayCid == kByteArrayCid + 10 && |
- kFloat64ArrayCid == kByteArrayCid + 11 && |
- kExternalInt8ArrayCid == kByteArrayCid + 12 && |
- kExternalUint8ArrayCid == kByteArrayCid + 13 && |
- kExternalUint8ClampedArrayCid == kByteArrayCid + 14 && |
- kExternalInt16ArrayCid == kByteArrayCid + 15 && |
- kExternalUint16ArrayCid == kByteArrayCid + 16 && |
- kExternalInt32ArrayCid == kByteArrayCid + 17 && |
- kExternalUint32ArrayCid == kByteArrayCid + 18 && |
- kExternalInt64ArrayCid == kByteArrayCid + 19 && |
- kExternalUint64ArrayCid == kByteArrayCid + 20 && |
- kExternalFloat32ArrayCid == kByteArrayCid + 21 && |
- kExternalFloat64ArrayCid == kByteArrayCid + 22 && |
- kStacktraceCid == kByteArrayCid + 23); |
+ kFloat32x4ArrayCid == kByteArrayCid + 10 && |
+ kFloat32ArrayCid == kByteArrayCid + 11 && |
+ kFloat64ArrayCid == kByteArrayCid + 12 && |
+ kExternalInt8ArrayCid == kByteArrayCid + 13 && |
+ kExternalUint8ArrayCid == kByteArrayCid + 14 && |
+ kExternalUint8ClampedArrayCid == kByteArrayCid + 15 && |
+ kExternalInt16ArrayCid == kByteArrayCid + 16 && |
+ kExternalUint16ArrayCid == kByteArrayCid + 17 && |
+ kExternalInt32ArrayCid == kByteArrayCid + 18 && |
+ kExternalUint32ArrayCid == kByteArrayCid + 19 && |
+ kExternalInt64ArrayCid == kByteArrayCid + 20 && |
+ kExternalUint64ArrayCid == kByteArrayCid + 21 && |
+ kExternalFloat32x4ArrayCid == kByteArrayCid + 22 && |
+ kExternalFloat32ArrayCid == kByteArrayCid + 23 && |
+ kExternalFloat64ArrayCid == kByteArrayCid + 24 && |
+ kStacktraceCid == kByteArrayCid + 25); |
return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid); |
} |
@@ -1697,9 +1737,10 @@ inline bool RawObject::IsExternalByteArrayClassId(intptr_t index) { |
kExternalUint32ArrayCid == kExternalInt8ArrayCid + 6 && |
kExternalInt64ArrayCid == kExternalInt8ArrayCid + 7 && |
kExternalUint64ArrayCid == kExternalInt8ArrayCid + 8 && |
- kExternalFloat32ArrayCid == kExternalInt8ArrayCid + 9 && |
- kExternalFloat64ArrayCid == kExternalInt8ArrayCid + 10 && |
- kStacktraceCid == kExternalInt8ArrayCid + 11); |
+ kExternalFloat32x4ArrayCid == kExternalInt8ArrayCid + 9 && |
+ kExternalFloat32ArrayCid == kExternalInt8ArrayCid + 10 && |
+ kExternalFloat64ArrayCid == kExternalInt8ArrayCid + 11 && |
+ kStacktraceCid == kExternalInt8ArrayCid + 12); |
return (index >= kExternalInt8ArrayCid && index <= kExternalFloat64ArrayCid); |
} |