Chromium Code Reviews| 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. |
| }; |