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

Side by Side Diff: runtime/vm/object.cc

Issue 56023004: Replace Uint32x4/Uint32x4List with Int32x4/Int32x4List (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 #include "vm/object.h" 5 #include "vm/object.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/assembler.h" 9 #include "vm/assembler.h"
10 #include "vm/cpu.h" 10 #include "vm/cpu.h"
(...skipping 1130 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 pending_classes.Add(cls); 1141 pending_classes.Add(cls);
1142 #undef REGISTER_TYPED_DATA_VIEW_CLASS 1142 #undef REGISTER_TYPED_DATA_VIEW_CLASS
1143 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \ 1143 #define REGISTER_EXT_TYPED_DATA_CLASS(clazz) \
1144 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \ 1144 cls = Class::NewExternalTypedDataClass(kExternalTypedData##clazz##Cid); \
1145 index = kExternalTypedData##clazz##Cid - kTypedDataInt8ArrayCid; \ 1145 index = kExternalTypedData##clazz##Cid - kTypedDataInt8ArrayCid; \
1146 typed_data_classes.SetAt(index, cls); \ 1146 typed_data_classes.SetAt(index, cls); \
1147 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); \ 1147 RegisterPrivateClass(cls, Symbols::_External##clazz(), lib); \
1148 1148
1149 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS); 1149 CLASS_LIST_TYPED_DATA(REGISTER_EXT_TYPED_DATA_CLASS);
1150 #undef REGISTER_EXT_TYPED_DATA_CLASS 1150 #undef REGISTER_EXT_TYPED_DATA_CLASS
1151 // Register Float32x4 and Uint32x4 in the object store. 1151 // Register Float32x4 and Int32x4 in the object store.
1152 cls = Class::New<Float32x4>(); 1152 cls = Class::New<Float32x4>();
1153 object_store->set_float32x4_class(cls); 1153 object_store->set_float32x4_class(cls);
1154 RegisterPrivateClass(cls, Symbols::_Float32x4(), lib); 1154 RegisterPrivateClass(cls, Symbols::_Float32x4(), lib);
1155 cls = Class::New<Uint32x4>(); 1155 cls = Class::New<Int32x4>();
1156 object_store->set_uint32x4_class(cls); 1156 object_store->set_int32x4_class(cls);
1157 RegisterPrivateClass(cls, Symbols::_Uint32x4(), lib); 1157 RegisterPrivateClass(cls, Symbols::_Int32x4(), lib);
1158 1158
1159 cls = Class::New<Instance>(kIllegalCid); 1159 cls = Class::New<Instance>(kIllegalCid);
1160 RegisterClass(cls, Symbols::Float32x4(), lib); 1160 RegisterClass(cls, Symbols::Float32x4(), lib);
1161 cls.set_num_type_arguments(0); 1161 cls.set_num_type_arguments(0);
1162 cls.set_num_own_type_arguments(0); 1162 cls.set_num_own_type_arguments(0);
1163 cls.set_is_prefinalized(); 1163 cls.set_is_prefinalized();
1164 pending_classes.Add(cls); 1164 pending_classes.Add(cls);
1165 type = Type::NewNonParameterizedType(cls); 1165 type = Type::NewNonParameterizedType(cls);
1166 object_store->set_float32x4_type(type); 1166 object_store->set_float32x4_type(type);
1167 1167
1168 cls = Class::New<Instance>(kIllegalCid); 1168 cls = Class::New<Instance>(kIllegalCid);
1169 RegisterClass(cls, Symbols::Uint32x4(), lib); 1169 RegisterClass(cls, Symbols::Int32x4(), lib);
1170 cls.set_num_type_arguments(0); 1170 cls.set_num_type_arguments(0);
1171 cls.set_num_own_type_arguments(0); 1171 cls.set_num_own_type_arguments(0);
1172 cls.set_is_prefinalized(); 1172 cls.set_is_prefinalized();
1173 pending_classes.Add(cls); 1173 pending_classes.Add(cls);
1174 type = Type::NewNonParameterizedType(cls); 1174 type = Type::NewNonParameterizedType(cls);
1175 object_store->set_uint32x4_type(type); 1175 object_store->set_int32x4_type(type);
1176 1176
1177 object_store->set_typed_data_classes(typed_data_classes); 1177 object_store->set_typed_data_classes(typed_data_classes);
1178 1178
1179 // Set the super type of class Stacktrace to Object type so that the 1179 // Set the super type of class Stacktrace to Object type so that the
1180 // 'toString' method is implemented. 1180 // 'toString' method is implemented.
1181 cls = object_store->stacktrace_class(); 1181 cls = object_store->stacktrace_class();
1182 type = object_store->object_type(); 1182 type = object_store->object_type();
1183 cls.set_super_type(type); 1183 cls.set_super_type(type);
1184 1184
1185 // Abstract class that represents the Dart class Function. 1185 // Abstract class that represents the Dart class Function.
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 1301
1302 cls = Class::New<Array>(kImmutableArrayCid); 1302 cls = Class::New<Array>(kImmutableArrayCid);
1303 object_store->set_immutable_array_class(cls); 1303 object_store->set_immutable_array_class(cls);
1304 1304
1305 cls = Class::New<GrowableObjectArray>(); 1305 cls = Class::New<GrowableObjectArray>();
1306 object_store->set_growable_object_array_class(cls); 1306 object_store->set_growable_object_array_class(cls);
1307 1307
1308 cls = Class::New<Float32x4>(); 1308 cls = Class::New<Float32x4>();
1309 object_store->set_float32x4_class(cls); 1309 object_store->set_float32x4_class(cls);
1310 1310
1311 cls = Class::New<Uint32x4>(); 1311 cls = Class::New<Int32x4>();
1312 object_store->set_uint32x4_class(cls); 1312 object_store->set_int32x4_class(cls);
1313 1313
1314 #define REGISTER_TYPED_DATA_CLASS(clazz) \ 1314 #define REGISTER_TYPED_DATA_CLASS(clazz) \
1315 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid); 1315 cls = Class::NewTypedDataClass(kTypedData##clazz##Cid);
1316 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS); 1316 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_CLASS);
1317 #undef REGISTER_TYPED_DATA_CLASS 1317 #undef REGISTER_TYPED_DATA_CLASS
1318 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \ 1318 #define REGISTER_TYPED_DATA_VIEW_CLASS(clazz) \
1319 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid); 1319 cls = Class::NewTypedDataViewClass(kTypedData##clazz##ViewCid);
1320 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS); 1320 CLASS_LIST_TYPED_DATA(REGISTER_TYPED_DATA_VIEW_CLASS);
1321 cls = Class::NewTypedDataViewClass(kByteDataViewCid); 1321 cls = Class::NewTypedDataViewClass(kByteDataViewCid);
1322 #undef REGISTER_TYPED_DATA_VIEW_CLASS 1322 #undef REGISTER_TYPED_DATA_VIEW_CLASS
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 case kTwoByteStringCid: 1527 case kTwoByteStringCid:
1528 case kExternalOneByteStringCid: 1528 case kExternalOneByteStringCid:
1529 case kExternalTwoByteStringCid: 1529 case kExternalTwoByteStringCid:
1530 return Symbols::New("String"); 1530 return Symbols::New("String");
1531 case kArrayCid: 1531 case kArrayCid:
1532 case kImmutableArrayCid: 1532 case kImmutableArrayCid:
1533 case kGrowableObjectArrayCid: 1533 case kGrowableObjectArrayCid:
1534 return Symbols::List().raw(); 1534 return Symbols::List().raw();
1535 case kFloat32x4Cid: 1535 case kFloat32x4Cid:
1536 return Symbols::Float32x4().raw(); 1536 return Symbols::Float32x4().raw();
1537 case kUint32x4Cid: 1537 case kInt32x4Cid:
1538 return Symbols::Uint32x4().raw(); 1538 return Symbols::Int32x4().raw();
1539 case kTypedDataInt8ArrayCid: 1539 case kTypedDataInt8ArrayCid:
1540 case kExternalTypedDataInt8ArrayCid: 1540 case kExternalTypedDataInt8ArrayCid:
1541 return Symbols::Int8List().raw(); 1541 return Symbols::Int8List().raw();
1542 case kTypedDataUint8ArrayCid: 1542 case kTypedDataUint8ArrayCid:
1543 case kExternalTypedDataUint8ArrayCid: 1543 case kExternalTypedDataUint8ArrayCid:
1544 return Symbols::Uint8List().raw(); 1544 return Symbols::Uint8List().raw();
1545 case kTypedDataUint8ClampedArrayCid: 1545 case kTypedDataUint8ClampedArrayCid:
1546 case kExternalTypedDataUint8ClampedArrayCid: 1546 case kExternalTypedDataUint8ClampedArrayCid:
1547 return Symbols::Uint8ClampedList().raw(); 1547 return Symbols::Uint8ClampedList().raw();
1548 case kTypedDataInt16ArrayCid: 1548 case kTypedDataInt16ArrayCid:
(...skipping 9854 matching lines...) Expand 10 before | Expand all | Expand 10 after
11403 (type_class() == Type::Handle(Type::Double()).type_class()); 11403 (type_class() == Type::Handle(Type::Double()).type_class());
11404 } 11404 }
11405 11405
11406 11406
11407 bool AbstractType::IsFloat32x4Type() const { 11407 bool AbstractType::IsFloat32x4Type() const {
11408 return HasResolvedTypeClass() && 11408 return HasResolvedTypeClass() &&
11409 (type_class() == Type::Handle(Type::Float32x4()).type_class()); 11409 (type_class() == Type::Handle(Type::Float32x4()).type_class());
11410 } 11410 }
11411 11411
11412 11412
11413 bool AbstractType::IsUint32x4Type() const { 11413 bool AbstractType::IsInt32x4Type() const {
11414 return HasResolvedTypeClass() && 11414 return HasResolvedTypeClass() &&
11415 (type_class() == Type::Handle(Type::Uint32x4()).type_class()); 11415 (type_class() == Type::Handle(Type::Int32x4()).type_class());
11416 } 11416 }
11417 11417
11418 11418
11419 bool AbstractType::IsNumberType() const { 11419 bool AbstractType::IsNumberType() const {
11420 return HasResolvedTypeClass() && 11420 return HasResolvedTypeClass() &&
11421 (type_class() == Type::Handle(Type::Number()).type_class()); 11421 (type_class() == Type::Handle(Type::Number()).type_class());
11422 } 11422 }
11423 11423
11424 11424
11425 bool AbstractType::IsStringType() const { 11425 bool AbstractType::IsStringType() const {
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
11568 RawType* Type::Double() { 11568 RawType* Type::Double() {
11569 return Isolate::Current()->object_store()->double_type(); 11569 return Isolate::Current()->object_store()->double_type();
11570 } 11570 }
11571 11571
11572 11572
11573 RawType* Type::Float32x4() { 11573 RawType* Type::Float32x4() {
11574 return Isolate::Current()->object_store()->float32x4_type(); 11574 return Isolate::Current()->object_store()->float32x4_type();
11575 } 11575 }
11576 11576
11577 11577
11578 RawType* Type::Uint32x4() { 11578 RawType* Type::Int32x4() {
11579 return Isolate::Current()->object_store()->uint32x4_type(); 11579 return Isolate::Current()->object_store()->int32x4_type();
11580 } 11580 }
11581 11581
11582 11582
11583 RawType* Type::Number() { 11583 RawType* Type::Number() {
11584 return Isolate::Current()->object_store()->number_type(); 11584 return Isolate::Current()->object_store()->number_type();
11585 } 11585 }
11586 11586
11587 11587
11588 RawType* Type::StringType() { 11588 RawType* Type::StringType() {
11589 return Isolate::Current()->object_store()->string_type(); 11589 return Isolate::Current()->object_store()->string_type();
(...skipping 3456 matching lines...) Expand 10 before | Expand all | Expand 10 after
15046 OS::SNPrint(chars, len, kFormat, _x, _y, _z, _w); 15046 OS::SNPrint(chars, len, kFormat, _x, _y, _z, _w);
15047 return chars; 15047 return chars;
15048 } 15048 }
15049 15049
15050 15050
15051 void Float32x4::PrintToJSONStream(JSONStream* stream, bool ref) const { 15051 void Float32x4::PrintToJSONStream(JSONStream* stream, bool ref) const {
15052 JSONObject jsobj(stream); 15052 JSONObject jsobj(stream);
15053 } 15053 }
15054 15054
15055 15055
15056 RawUint32x4* Uint32x4::New(uint32_t v0, uint32_t v1, uint32_t v2, uint32_t v3, 15056 RawInt32x4* Int32x4::New(int32_t v0, int32_t v1, int32_t v2, int32_t v3,
15057 Heap::Space space) { 15057 Heap::Space space) {
15058 ASSERT(Isolate::Current()->object_store()->uint32x4_class() != 15058 ASSERT(Isolate::Current()->object_store()->int32x4_class() !=
15059 Class::null()); 15059 Class::null());
15060 Uint32x4& result = Uint32x4::Handle(); 15060 Int32x4& result = Int32x4::Handle();
15061 { 15061 {
15062 RawObject* raw = Object::Allocate(Uint32x4::kClassId, 15062 RawObject* raw = Object::Allocate(Int32x4::kClassId,
15063 Uint32x4::InstanceSize(), 15063 Int32x4::InstanceSize(),
15064 space); 15064 space);
15065 NoGCScope no_gc; 15065 NoGCScope no_gc;
15066 result ^= raw; 15066 result ^= raw;
15067 } 15067 }
15068 result.set_x(v0); 15068 result.set_x(v0);
15069 result.set_y(v1); 15069 result.set_y(v1);
15070 result.set_z(v2); 15070 result.set_z(v2);
15071 result.set_w(v3); 15071 result.set_w(v3);
15072 return result.raw(); 15072 return result.raw();
15073 } 15073 }
15074 15074
15075 15075
15076 RawUint32x4* Uint32x4::New(simd128_value_t value, Heap::Space space) { 15076 RawInt32x4* Int32x4::New(simd128_value_t value, Heap::Space space) {
15077 ASSERT(Isolate::Current()->object_store()->float32x4_class() != 15077 ASSERT(Isolate::Current()->object_store()->int32x4_class() !=
15078 Class::null()); 15078 Class::null());
15079 Uint32x4& result = Uint32x4::Handle(); 15079 Int32x4& result = Int32x4::Handle();
15080 { 15080 {
15081 RawObject* raw = Object::Allocate(Uint32x4::kClassId, 15081 RawObject* raw = Object::Allocate(Int32x4::kClassId,
15082 Uint32x4::InstanceSize(), 15082 Int32x4::InstanceSize(),
15083 space); 15083 space);
15084 NoGCScope no_gc; 15084 NoGCScope no_gc;
15085 result ^= raw; 15085 result ^= raw;
15086 } 15086 }
15087 result.set_value(value); 15087 result.set_value(value);
15088 return result.raw(); 15088 return result.raw();
15089 } 15089 }
15090 15090
15091 15091
15092 void Uint32x4::set_x(uint32_t value) const { 15092 void Int32x4::set_x(int32_t value) const {
15093 raw_ptr()->value_[0] = value; 15093 raw_ptr()->value_[0] = value;
15094 } 15094 }
15095 15095
15096 15096
15097 void Uint32x4::set_y(uint32_t value) const { 15097 void Int32x4::set_y(int32_t value) const {
15098 raw_ptr()->value_[1] = value; 15098 raw_ptr()->value_[1] = value;
15099 } 15099 }
15100 15100
15101 15101
15102 void Uint32x4::set_z(uint32_t value) const { 15102 void Int32x4::set_z(int32_t value) const {
15103 raw_ptr()->value_[2] = value; 15103 raw_ptr()->value_[2] = value;
15104 } 15104 }
15105 15105
15106 15106
15107 void Uint32x4::set_w(uint32_t value) const { 15107 void Int32x4::set_w(int32_t value) const {
15108 raw_ptr()->value_[3] = value; 15108 raw_ptr()->value_[3] = value;
15109 } 15109 }
15110 15110
15111 15111
15112 uint32_t Uint32x4::x() const { 15112 int32_t Int32x4::x() const {
15113 return raw_ptr()->value_[0]; 15113 return raw_ptr()->value_[0];
15114 } 15114 }
15115 15115
15116 15116
15117 uint32_t Uint32x4::y() const { 15117 int32_t Int32x4::y() const {
15118 return raw_ptr()->value_[1]; 15118 return raw_ptr()->value_[1];
15119 } 15119 }
15120 15120
15121 15121
15122 uint32_t Uint32x4::z() const { 15122 int32_t Int32x4::z() const {
15123 return raw_ptr()->value_[2]; 15123 return raw_ptr()->value_[2];
15124 } 15124 }
15125 15125
15126 15126
15127 uint32_t Uint32x4::w() const { 15127 int32_t Int32x4::w() const {
15128 return raw_ptr()->value_[3]; 15128 return raw_ptr()->value_[3];
15129 } 15129 }
15130 15130
15131 15131
15132 simd128_value_t Uint32x4::value() const { 15132 simd128_value_t Int32x4::value() const {
15133 return simd128_value_t().readFrom(&raw_ptr()->value_[0]); 15133 return simd128_value_t().readFrom(&raw_ptr()->value_[0]);
15134 } 15134 }
15135 15135
15136 15136
15137 void Uint32x4::set_value(simd128_value_t value) const { 15137 void Int32x4::set_value(simd128_value_t value) const {
15138 value.writeTo(&raw_ptr()->value_[0]); 15138 value.writeTo(&raw_ptr()->value_[0]);
15139 } 15139 }
15140 15140
15141 15141
15142 const char* Uint32x4::ToCString() const { 15142 const char* Int32x4::ToCString() const {
15143 const char* kFormat = "[%08x, %08x, %08x, %08x]"; 15143 const char* kFormat = "[%08x, %08x, %08x, %08x]";
15144 uint32_t _x = x(); 15144 int32_t _x = x();
15145 uint32_t _y = y(); 15145 int32_t _y = y();
15146 uint32_t _z = z(); 15146 int32_t _z = z();
15147 uint32_t _w = w(); 15147 int32_t _w = w();
15148 // Calculate the size of the string. 15148 // Calculate the size of the string.
15149 intptr_t len = OS::SNPrint(NULL, 0, kFormat, _x, _y, _z, _w) + 1; 15149 intptr_t len = OS::SNPrint(NULL, 0, kFormat, _x, _y, _z, _w) + 1;
15150 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len); 15150 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
15151 OS::SNPrint(chars, len, kFormat, _x, _y, _z, _w); 15151 OS::SNPrint(chars, len, kFormat, _x, _y, _z, _w);
15152 return chars; 15152 return chars;
15153 } 15153 }
15154 15154
15155 15155
15156 void Uint32x4::PrintToJSONStream(JSONStream* stream, bool ref) const { 15156 void Int32x4::PrintToJSONStream(JSONStream* stream, bool ref) const {
15157 JSONObject jsobj(stream); 15157 JSONObject jsobj(stream);
15158 } 15158 }
15159 15159
15160 15160
15161 const intptr_t TypedData::element_size[] = { 15161 const intptr_t TypedData::element_size[] = {
15162 1, // kTypedDataInt8ArrayCid. 15162 1, // kTypedDataInt8ArrayCid.
15163 1, // kTypedDataUint8ArrayCid. 15163 1, // kTypedDataUint8ArrayCid.
15164 1, // kTypedDataUint8ClampedArrayCid. 15164 1, // kTypedDataUint8ClampedArrayCid.
15165 2, // kTypedDataInt16ArrayCid. 15165 2, // kTypedDataInt16ArrayCid.
15166 2, // kTypedDataUint16ArrayCid. 15166 2, // kTypedDataUint16ArrayCid.
15167 4, // kTypedDataInt32ArrayCid. 15167 4, // kTypedDataInt32ArrayCid.
15168 4, // kTypedDataUint32ArrayCid. 15168 4, // kTypedDataUint32ArrayCid.
15169 8, // kTypedDataInt64ArrayCid. 15169 8, // kTypedDataInt64ArrayCid.
15170 8, // kTypedDataUint64ArrayCid. 15170 8, // kTypedDataUint64ArrayCid.
15171 4, // kTypedDataFloat32ArrayCid. 15171 4, // kTypedDataFloat32ArrayCid.
15172 8, // kTypedDataFloat64ArrayCid. 15172 8, // kTypedDataFloat64ArrayCid.
15173 16, // kTypedDataFloat32x4ArrayCid. 15173 16, // kTypedDataFloat32x4ArrayCid.
15174 16, // kTypedDataUint32x4ArrayCid. 15174 16, // kTypedDataInt32x4ArrayCid.
15175 }; 15175 };
15176 15176
15177 15177
15178 RawTypedData* TypedData::New(intptr_t class_id, 15178 RawTypedData* TypedData::New(intptr_t class_id,
15179 intptr_t len, 15179 intptr_t len,
15180 Heap::Space space) { 15180 Heap::Space space) {
15181 if (len < 0 || len > TypedData::MaxElements(class_id)) { 15181 if (len < 0 || len > TypedData::MaxElements(class_id)) {
15182 FATAL1("Fatal error in TypedData::New: invalid len %" Pd "\n", len); 15182 FATAL1("Fatal error in TypedData::New: invalid len %" Pd "\n", len);
15183 } 15183 }
15184 TypedData& result = TypedData::Handle(); 15184 TypedData& result = TypedData::Handle();
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after
15717 return "_MirrorReference"; 15717 return "_MirrorReference";
15718 } 15718 }
15719 15719
15720 15720
15721 void MirrorReference::PrintToJSONStream(JSONStream* stream, bool ref) const { 15721 void MirrorReference::PrintToJSONStream(JSONStream* stream, bool ref) const {
15722 JSONObject jsobj(stream); 15722 JSONObject jsobj(stream);
15723 } 15723 }
15724 15724
15725 15725
15726 } // namespace dart 15726 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698