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

Unified Diff: runtime/vm/object.cc

Issue 12534006: Port SIMD types from dart:scalarlist to dart:typeddata. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 7484200b7257a5b0881fee51e4894218731bd255..d66e0a083ce6a8cd5b4438244f67ef83c8a63903 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -861,8 +861,6 @@ RawError* Object::Init(Isolate* isolate) {
object_store->set_##object_store_name##_class(cls); \
RegisterPrivateClass(cls, Symbols::_##name(), lib); \
- REGISTER_SCALARLIST_CLASS(Float32x4, float32x4);
- REGISTER_SCALARLIST_CLASS(Uint32x4, uint32x4);
REGISTER_SCALARLIST_CLASS(Int8Array, int8_array);
REGISTER_SCALARLIST_CLASS(Uint8Array, uint8_array);
REGISTER_SCALARLIST_CLASS(Uint8ClampedArray, uint8_clamped_array);
@@ -889,14 +887,25 @@ RawError* Object::Init(Isolate* isolate) {
REGISTER_SCALARLIST_CLASS(ExternalFloat32Array, external_float32_array);
REGISTER_SCALARLIST_CLASS(ExternalFloat64Array, external_float64_array);
#undef REGISTER_SCALARLIST_CLASS
+ // Add Float32x4 and Uint32x4 to dart:scalarlist and register them in
+ // object_store.
+ cls = Class::New<Float32x4>();
+ object_store->set_float32x4_class(cls);
+ RegisterPrivateClass(cls, Symbols::_Float32x4(), lib);
+ cls = Class::New<Uint32x4>();
+ object_store->set_uint32x4_class(cls);
+ RegisterPrivateClass(cls, Symbols::_Uint32x4(), lib);
siva 2013/03/12 11:44:22 Why are you adding these classes to the scalarlist
Cutch 2013/03/25 21:06:35 They were already available to scalarlist. What's
+
// Pre-register the typeddata library so the native class implementations
// can be hooked up before compiling it.
LOAD_LIBRARY(TypedData, typeddata);
ASSERT(!lib.IsNull());
ASSERT(lib.raw() == Library::TypedDataLibrary());
+ const intptr_t typeddata_class_array_length =
+ RawObject::NumberOfTypedDataClasses() + 2; // +2 for Float32x4 & Uint32x4
Array& typeddata_classes =
- Array::Handle(Array::New(RawObject::NumberOfTypedDataClasses()));
+ Array::Handle(Array::New(typeddata_class_array_length));
int index = 0;
#define REGISTER_TYPED_DATA_CLASS(clazz) \
cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); \
@@ -914,6 +923,14 @@ RawError* Object::Init(Isolate* isolate) {
CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS);
#undef REGISTER_EXT_TYPED_DATA_CLASS
+ // Add Float32x4 and Uint32x4 to dart:typeddata.
+ cls = object_store->float32x4_class();
+ typeddata_classes.SetAt(typeddata_class_array_length-2, cls);
+ RegisterPrivateClass(cls, Symbols::_Float32x4(), lib);
+ cls = object_store->uint32x4_class();
+ typeddata_classes.SetAt(typeddata_class_array_length-1, cls);
+ RegisterPrivateClass(cls, Symbols::_Uint32x4(), lib);
+
object_store->set_typeddata_classes(typeddata_classes);
// Set the super type of class Stacktrace to Object type so that the
@@ -12355,17 +12372,18 @@ const char* Uint32x4::ToCString() const {
const intptr_t TypedData::element_size[] = {
- 1, // kTypedDataInt8ArrayCid.
- 1, // kTypedDataUint8ArrayCid.
- 1, // kTypedDataUint8ClampedArrayCid.
- 2, // kTypedDataInt16ArrayCid.
- 2, // kTypedDataUint16ArrayCid.
- 4, // kTypedDataInt32ArrayCid.
- 4, // kTypedDataUint32ArrayCid.
- 8, // kTypedDataInt64ArrayCid.
- 8, // kTypedDataUint64ArrayCid.
- 4, // kTypedDataFloat32ArrayCid.
- 8, // kTypedDataFloat64ArrayCid.
+ 1, // kTypedDataInt8ArrayCid.
+ 1, // kTypedDataUint8ArrayCid.
+ 1, // kTypedDataUint8ClampedArrayCid.
+ 2, // kTypedDataInt16ArrayCid.
+ 2, // kTypedDataUint16ArrayCid.
+ 4, // kTypedDataInt32ArrayCid.
+ 4, // kTypedDataUint32ArrayCid.
+ 8, // kTypedDataInt64ArrayCid.
+ 8, // kTypedDataUint64ArrayCid.
+ 4, // kTypedDataFloat32ArrayCid.
+ 8, // kTypedDataFloat64ArrayCid.
+ 16, // kTypedDataFloat32x4ArrayCid.
};
« runtime/lib/typeddata.dart ('K') | « runtime/vm/object.h ('k') | runtime/vm/raw_object.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698