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

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

Issue 12303013: Simd128Float32, Simd128Mask, and Simd128Float32List additions for dart:scalarlist (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Incorporating Kasper's review Created 7 years, 10 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 unified diff | Download patch | Annotate | Revision Log
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/bigint_operations.h" 10 #include "vm/bigint_operations.h"
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after
807 RegisterPrivateClass(cls, Symbols::_Double(), core_lib); 807 RegisterPrivateClass(cls, Symbols::_Double(), core_lib);
808 pending_classes.Add(cls, Heap::kOld); 808 pending_classes.Add(cls, Heap::kOld);
809 809
810 cls = Class::New<WeakProperty>(); 810 cls = Class::New<WeakProperty>();
811 object_store->set_weak_property_class(cls); 811 object_store->set_weak_property_class(cls);
812 RegisterPrivateClass(cls, Symbols::_WeakProperty(), core_lib); 812 RegisterPrivateClass(cls, Symbols::_WeakProperty(), core_lib);
813 813
814 Library::InitScalarlistLibrary(isolate); 814 Library::InitScalarlistLibrary(isolate);
815 Library& scalarlist_lib = Library::Handle(Library::ScalarlistLibrary()); 815 Library& scalarlist_lib = Library::Handle(Library::ScalarlistLibrary());
816 816
817 cls = Class::New<Simd128Float32>();
818 object_store->set_simd128_float32_class(cls);
819 RegisterPrivateClass(cls, Symbols::_Simd128Float32(), scalarlist_lib);
820
821 cls = Class::New<Simd128Mask>();
822 object_store->set_simd128_mask_class(cls);
823 RegisterPrivateClass(cls, Symbols::_Simd128Mask(), scalarlist_lib);
824
817 cls = Class::New<Int8Array>(); 825 cls = Class::New<Int8Array>();
818 object_store->set_int8_array_class(cls); 826 object_store->set_int8_array_class(cls);
819 RegisterPrivateClass(cls, Symbols::_Int8Array(), scalarlist_lib); 827 RegisterPrivateClass(cls, Symbols::_Int8Array(), scalarlist_lib);
820 828
821 cls = Class::New<Uint8Array>(); 829 cls = Class::New<Uint8Array>();
822 object_store->set_uint8_array_class(cls); 830 object_store->set_uint8_array_class(cls);
823 RegisterPrivateClass(cls, Symbols::_Uint8Array(), scalarlist_lib); 831 RegisterPrivateClass(cls, Symbols::_Uint8Array(), scalarlist_lib);
824 832
825 cls = Class::New<Uint8ClampedArray>(); 833 cls = Class::New<Uint8ClampedArray>();
826 object_store->set_uint8_clamped_array_class(cls); 834 object_store->set_uint8_clamped_array_class(cls);
(...skipping 16 matching lines...) Expand all
843 RegisterPrivateClass(cls, Symbols::_Uint32Array(), scalarlist_lib); 851 RegisterPrivateClass(cls, Symbols::_Uint32Array(), scalarlist_lib);
844 852
845 cls = Class::New<Int64Array>(); 853 cls = Class::New<Int64Array>();
846 object_store->set_int64_array_class(cls); 854 object_store->set_int64_array_class(cls);
847 RegisterPrivateClass(cls, Symbols::_Int64Array(), scalarlist_lib); 855 RegisterPrivateClass(cls, Symbols::_Int64Array(), scalarlist_lib);
848 856
849 cls = Class::New<Uint64Array>(); 857 cls = Class::New<Uint64Array>();
850 object_store->set_uint64_array_class(cls); 858 object_store->set_uint64_array_class(cls);
851 RegisterPrivateClass(cls, Symbols::_Uint64Array(), scalarlist_lib); 859 RegisterPrivateClass(cls, Symbols::_Uint64Array(), scalarlist_lib);
852 860
861 cls = Class::New<Simd128Float32Array>();
862 object_store->set_simd128_float32_array_class(cls);
863 RegisterPrivateClass(cls, Symbols::_Simd128Float32Array(), scalarlist_lib);
864
853 cls = Class::New<Float32Array>(); 865 cls = Class::New<Float32Array>();
854 object_store->set_float32_array_class(cls); 866 object_store->set_float32_array_class(cls);
855 RegisterPrivateClass(cls, Symbols::_Float32Array(), scalarlist_lib); 867 RegisterPrivateClass(cls, Symbols::_Float32Array(), scalarlist_lib);
856 868
857 cls = Class::New<Float64Array>(); 869 cls = Class::New<Float64Array>();
858 object_store->set_float64_array_class(cls); 870 object_store->set_float64_array_class(cls);
859 RegisterPrivateClass(cls, Symbols::_Float64Array(), scalarlist_lib); 871 RegisterPrivateClass(cls, Symbols::_Float64Array(), scalarlist_lib);
860 872
861 cls = Class::New<ExternalInt8Array>(); 873 cls = Class::New<ExternalInt8Array>();
862 object_store->set_external_int8_array_class(cls); 874 object_store->set_external_int8_array_class(cls);
(...skipping 26 matching lines...) Expand all
889 RegisterPrivateClass(cls, Symbols::_ExternalUint32Array(), scalarlist_lib); 901 RegisterPrivateClass(cls, Symbols::_ExternalUint32Array(), scalarlist_lib);
890 902
891 cls = Class::New<ExternalInt64Array>(); 903 cls = Class::New<ExternalInt64Array>();
892 object_store->set_external_int64_array_class(cls); 904 object_store->set_external_int64_array_class(cls);
893 RegisterPrivateClass(cls, Symbols::_ExternalInt64Array(), scalarlist_lib); 905 RegisterPrivateClass(cls, Symbols::_ExternalInt64Array(), scalarlist_lib);
894 906
895 cls = Class::New<ExternalUint64Array>(); 907 cls = Class::New<ExternalUint64Array>();
896 object_store->set_external_uint64_array_class(cls); 908 object_store->set_external_uint64_array_class(cls);
897 RegisterPrivateClass(cls, Symbols::_ExternalUint64Array(), scalarlist_lib); 909 RegisterPrivateClass(cls, Symbols::_ExternalUint64Array(), scalarlist_lib);
898 910
911 cls = Class::New<ExternalSimd128Float32Array>();
912 object_store->set_external_simd128_float32_array_class(cls);
913 RegisterPrivateClass(cls, Symbols::_ExternalSimd128Float32Array(),
914 scalarlist_lib);
915
899 cls = Class::New<ExternalFloat32Array>(); 916 cls = Class::New<ExternalFloat32Array>();
900 object_store->set_external_float32_array_class(cls); 917 object_store->set_external_float32_array_class(cls);
901 RegisterPrivateClass(cls, Symbols::_ExternalFloat32Array(), scalarlist_lib); 918 RegisterPrivateClass(cls, Symbols::_ExternalFloat32Array(), scalarlist_lib);
902 919
903 cls = Class::New<ExternalFloat64Array>(); 920 cls = Class::New<ExternalFloat64Array>();
904 object_store->set_external_float64_array_class(cls); 921 object_store->set_external_float64_array_class(cls);
905 RegisterPrivateClass(cls, Symbols::_ExternalFloat64Array(), scalarlist_lib); 922 RegisterPrivateClass(cls, Symbols::_ExternalFloat64Array(), scalarlist_lib);
906 923
907 // Set the super type of class Stacktrace to Object type so that the 924 // Set the super type of class Stacktrace to Object type so that the
908 // 'toString' method is implemented. 925 // 'toString' method is implemented.
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
1121 1138
1122 cls = Class::New<Array>(); 1139 cls = Class::New<Array>();
1123 object_store->set_array_class(cls); 1140 object_store->set_array_class(cls);
1124 1141
1125 cls = Class::New<ImmutableArray>(); 1142 cls = Class::New<ImmutableArray>();
1126 object_store->set_immutable_array_class(cls); 1143 object_store->set_immutable_array_class(cls);
1127 1144
1128 cls = Class::New<GrowableObjectArray>(); 1145 cls = Class::New<GrowableObjectArray>();
1129 object_store->set_growable_object_array_class(cls); 1146 object_store->set_growable_object_array_class(cls);
1130 1147
1148 cls = Class::New<Simd128Float32>();
1149 object_store->set_simd128_float32_class(cls);
1150
1151 cls = Class::New<Simd128Mask>();
1152 object_store->set_simd128_mask_class(cls);
1153
1131 cls = Class::New<Int8Array>(); 1154 cls = Class::New<Int8Array>();
1132 object_store->set_int8_array_class(cls); 1155 object_store->set_int8_array_class(cls);
1133 1156
1134 cls = Class::New<Uint8Array>(); 1157 cls = Class::New<Uint8Array>();
1135 object_store->set_uint8_array_class(cls); 1158 object_store->set_uint8_array_class(cls);
1136 1159
1137 cls = Class::New<Uint8ClampedArray>(); 1160 cls = Class::New<Uint8ClampedArray>();
1138 object_store->set_uint8_clamped_array_class(cls); 1161 object_store->set_uint8_clamped_array_class(cls);
1139 1162
1140 cls = Class::New<Int16Array>(); 1163 cls = Class::New<Int16Array>();
1141 object_store->set_int16_array_class(cls); 1164 object_store->set_int16_array_class(cls);
1142 1165
1143 cls = Class::New<Uint16Array>(); 1166 cls = Class::New<Uint16Array>();
1144 object_store->set_uint16_array_class(cls); 1167 object_store->set_uint16_array_class(cls);
1145 1168
1146 cls = Class::New<Int32Array>(); 1169 cls = Class::New<Int32Array>();
1147 object_store->set_int32_array_class(cls); 1170 object_store->set_int32_array_class(cls);
1148 1171
1149 cls = Class::New<Uint32Array>(); 1172 cls = Class::New<Uint32Array>();
1150 object_store->set_uint32_array_class(cls); 1173 object_store->set_uint32_array_class(cls);
1151 1174
1152 cls = Class::New<Int64Array>(); 1175 cls = Class::New<Int64Array>();
1153 object_store->set_int64_array_class(cls); 1176 object_store->set_int64_array_class(cls);
1154 1177
1155 cls = Class::New<Uint64Array>(); 1178 cls = Class::New<Uint64Array>();
1156 object_store->set_uint64_array_class(cls); 1179 object_store->set_uint64_array_class(cls);
1157 1180
1181 cls = Class::New<Simd128Float32Array>();
1182 object_store->set_simd128_float32_array_class(cls);
1183
1158 cls = Class::New<Float32Array>(); 1184 cls = Class::New<Float32Array>();
1159 object_store->set_float32_array_class(cls); 1185 object_store->set_float32_array_class(cls);
1160 1186
1161 cls = Class::New<Float64Array>(); 1187 cls = Class::New<Float64Array>();
1162 object_store->set_float64_array_class(cls); 1188 object_store->set_float64_array_class(cls);
1163 1189
1164 cls = Class::New<ExternalInt8Array>(); 1190 cls = Class::New<ExternalInt8Array>();
1165 object_store->set_external_int8_array_class(cls); 1191 object_store->set_external_int8_array_class(cls);
1166 1192
1167 cls = Class::New<ExternalUint8Array>(); 1193 cls = Class::New<ExternalUint8Array>();
(...skipping 13 matching lines...) Expand all
1181 1207
1182 cls = Class::New<ExternalUint32Array>(); 1208 cls = Class::New<ExternalUint32Array>();
1183 object_store->set_external_uint32_array_class(cls); 1209 object_store->set_external_uint32_array_class(cls);
1184 1210
1185 cls = Class::New<ExternalInt64Array>(); 1211 cls = Class::New<ExternalInt64Array>();
1186 object_store->set_external_int64_array_class(cls); 1212 object_store->set_external_int64_array_class(cls);
1187 1213
1188 cls = Class::New<ExternalUint64Array>(); 1214 cls = Class::New<ExternalUint64Array>();
1189 object_store->set_external_uint64_array_class(cls); 1215 object_store->set_external_uint64_array_class(cls);
1190 1216
1217 cls = Class::New<ExternalSimd128Float32Array>();
1218 object_store->set_external_simd128_float32_array_class(cls);
1219
1191 cls = Class::New<ExternalFloat32Array>(); 1220 cls = Class::New<ExternalFloat32Array>();
1192 object_store->set_external_float32_array_class(cls); 1221 object_store->set_external_float32_array_class(cls);
1193 1222
1194 cls = Class::New<ExternalFloat64Array>(); 1223 cls = Class::New<ExternalFloat64Array>();
1195 object_store->set_external_float64_array_class(cls); 1224 object_store->set_external_float64_array_class(cls);
1196 1225
1197 cls = Class::New<Integer>(); 1226 cls = Class::New<Integer>();
1198 object_store->set_integer_implementation_class(cls); 1227 object_store->set_integer_implementation_class(cls);
1199 1228
1200 cls = Class::New<Smi>(); 1229 cls = Class::New<Smi>();
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
1383 return Symbols::Double().raw(); 1412 return Symbols::Double().raw();
1384 case kOneByteStringCid: 1413 case kOneByteStringCid:
1385 case kTwoByteStringCid: 1414 case kTwoByteStringCid:
1386 case kExternalOneByteStringCid: 1415 case kExternalOneByteStringCid:
1387 case kExternalTwoByteStringCid: 1416 case kExternalTwoByteStringCid:
1388 return Symbols::New("String"); 1417 return Symbols::New("String");
1389 case kArrayCid: 1418 case kArrayCid:
1390 case kImmutableArrayCid: 1419 case kImmutableArrayCid:
1391 case kGrowableObjectArrayCid: 1420 case kGrowableObjectArrayCid:
1392 return Symbols::List().raw(); 1421 return Symbols::List().raw();
1422 case kSimd128Float32Cid:
1423 return Symbols::Simd128Float32().raw();
1424 case kSimd128MaskCid:
1425 return Symbols::Simd128Mask().raw();
1393 case kInt8ArrayCid: 1426 case kInt8ArrayCid:
1394 case kExternalInt8ArrayCid: 1427 case kExternalInt8ArrayCid:
1395 return Symbols::Int8List().raw(); 1428 return Symbols::Int8List().raw();
1396 case kUint8ArrayCid: 1429 case kUint8ArrayCid:
1397 case kExternalUint8ArrayCid: 1430 case kExternalUint8ArrayCid:
1398 return Symbols::Uint8List().raw(); 1431 return Symbols::Uint8List().raw();
1399 case kUint8ClampedArrayCid: 1432 case kUint8ClampedArrayCid:
1400 case kExternalUint8ClampedArrayCid: 1433 case kExternalUint8ClampedArrayCid:
1401 return Symbols::Uint8ClampedList().raw(); 1434 return Symbols::Uint8ClampedList().raw();
1402 case kInt16ArrayCid: 1435 case kInt16ArrayCid:
1403 case kExternalInt16ArrayCid: 1436 case kExternalInt16ArrayCid:
1404 return Symbols::Int16List().raw(); 1437 return Symbols::Int16List().raw();
1405 case kUint16ArrayCid: 1438 case kUint16ArrayCid:
1406 case kExternalUint16ArrayCid: 1439 case kExternalUint16ArrayCid:
1407 return Symbols::Uint16List().raw(); 1440 return Symbols::Uint16List().raw();
1408 case kInt32ArrayCid: 1441 case kInt32ArrayCid:
1409 case kExternalInt32ArrayCid: 1442 case kExternalInt32ArrayCid:
1410 return Symbols::Int32List().raw(); 1443 return Symbols::Int32List().raw();
1411 case kUint32ArrayCid: 1444 case kUint32ArrayCid:
1412 case kExternalUint32ArrayCid: 1445 case kExternalUint32ArrayCid:
1413 return Symbols::Uint32List().raw(); 1446 return Symbols::Uint32List().raw();
1414 case kInt64ArrayCid: 1447 case kInt64ArrayCid:
1415 case kExternalInt64ArrayCid: 1448 case kExternalInt64ArrayCid:
1416 return Symbols::Int64List().raw(); 1449 return Symbols::Int64List().raw();
1417 case kUint64ArrayCid: 1450 case kUint64ArrayCid:
1418 case kExternalUint64ArrayCid: 1451 case kExternalUint64ArrayCid:
1419 return Symbols::Uint64List().raw(); 1452 return Symbols::Uint64List().raw();
1453 case kSimd128Float32ArrayCid:
1454 case kExternalSimd128Float32ArrayCid:
1455 return Symbols::Simd128Float32List().raw();
1420 case kFloat32ArrayCid: 1456 case kFloat32ArrayCid:
1421 case kExternalFloat32ArrayCid: 1457 case kExternalFloat32ArrayCid:
1422 return Symbols::Float32List().raw(); 1458 return Symbols::Float32List().raw();
1423 case kFloat64ArrayCid: 1459 case kFloat64ArrayCid:
1424 case kExternalFloat64ArrayCid: 1460 case kExternalFloat64ArrayCid:
1425 return Symbols::Float64List().raw(); 1461 return Symbols::Float64List().raw();
1426 default: 1462 default:
1427 if (!IsSignatureClass()) { 1463 if (!IsSignatureClass()) {
1428 const String& name = String::Handle(Name()); 1464 const String& name = String::Handle(Name());
1429 return IdentifierPrettyName(name); 1465 return IdentifierPrettyName(name);
(...skipping 10612 matching lines...) Expand 10 before | Expand all | Expand 10 after
12042 } 12078 }
12043 return result.raw(); 12079 return result.raw();
12044 } 12080 }
12045 12081
12046 12082
12047 const char* GrowableObjectArray::ToCString() const { 12083 const char* GrowableObjectArray::ToCString() const {
12048 return "GrowableObjectArray"; 12084 return "GrowableObjectArray";
12049 } 12085 }
12050 12086
12051 12087
12088 RawSimd128Float32* Simd128Float32::New(float v0, float v1, float v2, float v3,
12089 Heap::Space space) {
12090 ASSERT(Isolate::Current()->object_store()->simd128_float32_class() !=
12091 Class::null());
12092 Simd128Float32& result = Simd128Float32::Handle();
12093 {
12094 RawObject* raw = Object::Allocate(Simd128Float32::kClassId,
12095 Simd128Float32::InstanceSize(),
12096 space);
12097 NoGCScope no_gc;
12098 result ^= raw;
12099 }
12100 result.set_x(v0);
12101 result.set_y(v1);
12102 result.set_z(v2);
12103 result.set_w(v3);
12104 return result.raw();
12105 }
12106
12107
12108 RawSimd128Float32* Simd128Float32::New(simd_value_t value,
12109 Heap::Space space) {
12110 ASSERT(Isolate::Current()->object_store()->simd128_float32_class() !=
12111 Class::null());
12112 Simd128Float32& result = Simd128Float32::Handle();
12113 {
12114 RawObject* raw = Object::Allocate(Simd128Float32::kClassId,
12115 Simd128Float32::InstanceSize(),
12116 space);
12117 NoGCScope no_gc;
12118 result ^= raw;
12119 }
12120 result.set_value(value);
12121 return result.raw();
12122 }
12123
12124
12125 simd_value_t Simd128Float32::value() const {
12126 return simd_value_safe_load(&raw_ptr()->value_[0]);
12127 }
12128
12129
12130 void Simd128Float32::set_value(simd_value_t value) const {
12131 simd_value_safe_store(&raw_ptr()->value_[0], value);
12132 }
12133
12134
12135 void Simd128Float32::set_x(float value) const {
12136 raw_ptr()->value_[0] = value;
12137 }
12138
12139
12140 void Simd128Float32::set_y(float value) const {
12141 raw_ptr()->value_[1] = value;
12142 }
12143
12144
12145 void Simd128Float32::set_z(float value) const {
12146 raw_ptr()->value_[2] = value;
12147 }
12148
12149
12150 void Simd128Float32::set_w(float value) const {
12151 raw_ptr()->value_[3] = value;
12152 }
12153
12154
12155 float Simd128Float32::x() const {
12156 return raw_ptr()->value_[0];
12157 }
12158
12159
12160 float Simd128Float32::y() const {
12161 return raw_ptr()->value_[1];
12162 }
12163
12164
12165 float Simd128Float32::z() const {
12166 return raw_ptr()->value_[2];
12167 }
12168
12169
12170 float Simd128Float32::w() const {
12171 return raw_ptr()->value_[3];
12172 }
12173
12174
12175 const char* Simd128Float32::ToCString() const {
12176 const char* kFormat = "[%f, %f, %f, %f]";
12177 float _x = x();
12178 float _y = y();
12179 float _z = z();
12180 float _w = w();
12181 // Calculate the size of the string.
12182 intptr_t len = OS::SNPrint(NULL, 0, kFormat, _x, _y, _z, _w) + 1;
12183 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
12184 OS::SNPrint(chars, len, kFormat, _x, _y, _z, _w);
12185 return chars;
12186 }
12187
12188
12189 RawSimd128Mask* Simd128Mask::New(uint32_t v0, uint32_t v1, uint32_t v2,
12190 uint32_t v3, Heap::Space space) {
12191 ASSERT(Isolate::Current()->object_store()->simd128_mask_class() !=
12192 Class::null());
12193 Simd128Mask& result = Simd128Mask::Handle();
12194 {
12195 RawObject* raw = Object::Allocate(Simd128Mask::kClassId,
12196 Simd128Mask::InstanceSize(),
12197 space);
12198 NoGCScope no_gc;
12199 result ^= raw;
12200 }
12201 result.set_x(v0);
12202 result.set_y(v1);
12203 result.set_z(v2);
12204 result.set_w(v3);
12205 return result.raw();
12206 }
12207
12208
12209 void Simd128Mask::set_x(uint32_t value) const {
12210 raw_ptr()->value_[0] = value;
12211 }
12212
12213
12214 void Simd128Mask::set_y(uint32_t value) const {
12215 raw_ptr()->value_[1] = value;
12216 }
12217
12218
12219 void Simd128Mask::set_z(uint32_t value) const {
12220 raw_ptr()->value_[2] = value;
12221 }
12222
12223
12224 void Simd128Mask::set_w(uint32_t value) const {
12225 raw_ptr()->value_[3] = value;
12226 }
12227
12228
12229 uint32_t Simd128Mask::x() const {
12230 return raw_ptr()->value_[0];
12231 }
12232
12233
12234 uint32_t Simd128Mask::y() const {
12235 return raw_ptr()->value_[1];
12236 }
12237
12238
12239 uint32_t Simd128Mask::z() const {
12240 return raw_ptr()->value_[2];
12241 }
12242
12243
12244 uint32_t Simd128Mask::w() const {
12245 return raw_ptr()->value_[3];
12246 }
12247
12248
12249 const char* Simd128Mask::ToCString() const {
12250 const char* kFormat = "[%08x, %08x, %08x, %08x]";
12251 uint32_t _x = x();
12252 uint32_t _y = y();
12253 uint32_t _z = z();
12254 uint32_t _w = w();
12255 // Calculate the size of the string.
12256 intptr_t len = OS::SNPrint(NULL, 0, kFormat, _x, _y, _z, _w) + 1;
12257 char* chars = Isolate::Current()->current_zone()->Alloc<char>(len);
12258 OS::SNPrint(chars, len, kFormat, _x, _y, _z, _w);
12259 return chars;
12260 }
12261
12262
12052 void ByteArray::Copy(void* dst, 12263 void ByteArray::Copy(void* dst,
12053 const ByteArray& src, 12264 const ByteArray& src,
12054 intptr_t src_offset, 12265 intptr_t src_offset,
12055 intptr_t length) { 12266 intptr_t length) {
12056 ASSERT(Utils::RangeCheck(src_offset, length, src.ByteLength())); 12267 ASSERT(Utils::RangeCheck(src_offset, length, src.ByteLength()));
12057 { 12268 {
12058 NoGCScope no_gc; 12269 NoGCScope no_gc;
12059 if (length > 0) { 12270 if (length > 0) {
12060 memmove(dst, src.ByteAddr(src_offset), length); 12271 memmove(dst, src.ByteAddr(src_offset), length);
12061 } 12272 }
(...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after
12374 Class::null()); 12585 Class::null());
12375 return NewImpl<Uint64Array, RawUint64Array>(kClassId, data, len, space); 12586 return NewImpl<Uint64Array, RawUint64Array>(kClassId, data, len, space);
12376 } 12587 }
12377 12588
12378 12589
12379 const char* Uint64Array::ToCString() const { 12590 const char* Uint64Array::ToCString() const {
12380 return "_Uint64Array"; 12591 return "_Uint64Array";
12381 } 12592 }
12382 12593
12383 12594
12595 RawSimd128Float32Array* Simd128Float32Array::New(intptr_t len,
12596 Heap::Space space) {
12597 ASSERT(Isolate::Current()->object_store()->simd128_float32_array_class() !=
12598 Class::null());
12599 return NewImpl<Simd128Float32Array, RawSimd128Float32Array>(kClassId, len,
12600 space);
12601 }
12602
12603
12604 RawSimd128Float32Array* Simd128Float32Array::New(const simd_value_t* data,
12605 intptr_t len,
12606 Heap::Space space) {
12607 ASSERT(Isolate::Current()->object_store()->float32_array_class() !=
12608 Class::null());
12609 return NewImpl<Simd128Float32Array, RawSimd128Float32Array>(kClassId, data,
12610 len, space);
12611 }
12612
12613
12614 const char* Simd128Float32Array::ToCString() const {
12615 return "_Simd128Float32Array";
12616 }
12617
12618
12384 RawFloat32Array* Float32Array::New(intptr_t len, Heap::Space space) { 12619 RawFloat32Array* Float32Array::New(intptr_t len, Heap::Space space) {
12385 ASSERT(Isolate::Current()->object_store()->float32_array_class() != 12620 ASSERT(Isolate::Current()->object_store()->float32_array_class() !=
12386 Class::null()); 12621 Class::null());
12387 return NewImpl<Float32Array, RawFloat32Array>(kClassId, len, space); 12622 return NewImpl<Float32Array, RawFloat32Array>(kClassId, len, space);
12388 } 12623 }
12389 12624
12390 12625
12391 RawFloat32Array* Float32Array::New(const float* data, 12626 RawFloat32Array* Float32Array::New(const float* data,
12392 intptr_t len, 12627 intptr_t len,
12393 Heap::Space space) { 12628 Heap::Space space) {
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
12554 return NewExternalImpl<ExternalUint64Array, 12789 return NewExternalImpl<ExternalUint64Array,
12555 RawExternalUint64Array>(kClassId, data, len, space); 12790 RawExternalUint64Array>(kClassId, data, len, space);
12556 } 12791 }
12557 12792
12558 12793
12559 const char* ExternalUint64Array::ToCString() const { 12794 const char* ExternalUint64Array::ToCString() const {
12560 return "_ExternalUint64Array"; 12795 return "_ExternalUint64Array";
12561 } 12796 }
12562 12797
12563 12798
12799 RawExternalSimd128Float32Array* ExternalSimd128Float32Array::New(
12800 simd_value_t* data,
12801 intptr_t len,
12802 Heap::Space space) {
12803 RawClass* cls =
12804 Isolate::Current()->object_store()->external_simd128_float32_array_class();
12805 ASSERT(cls != Class::null());
12806 return NewExternalImpl<ExternalSimd128Float32Array,
12807 RawExternalSimd128Float32Array>(kClassId, data, len,
12808 space);
12809 }
12810
12811
12812 const char* ExternalSimd128Float32Array::ToCString() const {
12813 return "_ExternalSimd128Float32Array";
12814 }
12815
12816
12564 RawExternalFloat32Array* ExternalFloat32Array::New(float* data, 12817 RawExternalFloat32Array* ExternalFloat32Array::New(float* data,
12565 intptr_t len, 12818 intptr_t len,
12566 Heap::Space space) { 12819 Heap::Space space) {
12567 ASSERT(Isolate::Current()->object_store()->external_float32_array_class() != 12820 ASSERT(Isolate::Current()->object_store()->external_float32_array_class() !=
12568 Class::null()); 12821 Class::null());
12569 return NewExternalImpl<ExternalFloat32Array, 12822 return NewExternalImpl<ExternalFloat32Array,
12570 RawExternalFloat32Array>(kClassId, data, len, space); 12823 RawExternalFloat32Array>(kClassId, data, len, space);
12571 } 12824 }
12572 12825
12573 12826
(...skipping 318 matching lines...) Expand 10 before | Expand all | Expand 10 after
12892 } 13145 }
12893 return result.raw(); 13146 return result.raw();
12894 } 13147 }
12895 13148
12896 13149
12897 const char* WeakProperty::ToCString() const { 13150 const char* WeakProperty::ToCString() const {
12898 return "_WeakProperty"; 13151 return "_WeakProperty";
12899 } 13152 }
12900 13153
12901 } // namespace dart 13154 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698