OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 30 matching lines...) Loading... |
41 // - ElementsAccessorBase (abstract) | 41 // - ElementsAccessorBase (abstract) |
42 // - FastElementsAccessor (abstract) | 42 // - FastElementsAccessor (abstract) |
43 // - FastSmiOrObjectElementsAccessor | 43 // - FastSmiOrObjectElementsAccessor |
44 // - FastPackedSmiElementsAccessor | 44 // - FastPackedSmiElementsAccessor |
45 // - FastHoleySmiElementsAccessor | 45 // - FastHoleySmiElementsAccessor |
46 // - FastPackedObjectElementsAccessor | 46 // - FastPackedObjectElementsAccessor |
47 // - FastHoleyObjectElementsAccessor | 47 // - FastHoleyObjectElementsAccessor |
48 // - FastDoubleElementsAccessor | 48 // - FastDoubleElementsAccessor |
49 // - FastPackedDoubleElementsAccessor | 49 // - FastPackedDoubleElementsAccessor |
50 // - FastHoleyDoubleElementsAccessor | 50 // - FastHoleyDoubleElementsAccessor |
51 // - ExternalElementsAccessor (abstract) | 51 // - TypedElementsAccessor (abstract) |
52 // - ExternalByteElementsAccessor | 52 // - ExternalByteElementsAccessor |
53 // - ExternalUnsignedByteElementsAccessor | 53 // - ExternalUnsignedByteElementsAccessor |
54 // - ExternalShortElementsAccessor | 54 // - ExternalShortElementsAccessor |
55 // - ExternalUnsignedShortElementsAccessor | 55 // - ExternalUnsignedShortElementsAccessor |
56 // - ExternalIntElementsAccessor | 56 // - ExternalIntElementsAccessor |
57 // - ExternalUnsignedIntElementsAccessor | 57 // - ExternalUnsignedIntElementsAccessor |
58 // - ExternalFloatElementsAccessor | 58 // - ExternalFloatElementsAccessor |
59 // - ExternalDoubleElementsAccessor | 59 // - ExternalDoubleElementsAccessor |
60 // - PixelElementsAccessor | 60 // - PixelElementsAccessor |
| 61 // - FixedUint8ArrayAccessor |
| 62 // - FixedInt8ArrayAccessor |
| 63 // - FixedUint16ArrayAccessor |
| 64 // - FixedInt16ArrayAccessor |
| 65 // - FixedUint32ArrayAccessor |
| 66 // - FixedInt32ArrayAccessor |
| 67 // - FixedFloat32ArrayAccessor |
| 68 // - FixedFloat64ArrayAccessor |
| 69 // - FixedUint8ClampedArrayAccessor |
61 // - DictionaryElementsAccessor | 70 // - DictionaryElementsAccessor |
62 // - NonStrictArgumentsElementsAccessor | 71 // - NonStrictArgumentsElementsAccessor |
63 | 72 |
64 | 73 |
65 namespace v8 { | 74 namespace v8 { |
66 namespace internal { | 75 namespace internal { |
67 | 76 |
68 | 77 |
69 static const int kPackedSizeNotKnown = -1; | 78 static const int kPackedSizeNotKnown = -1; |
70 | 79 |
(...skipping 26 matching lines...) Loading... |
97 V(ExternalUnsignedShortElementsAccessor, \ | 106 V(ExternalUnsignedShortElementsAccessor, \ |
98 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, ExternalUnsignedShortArray) \ | 107 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, ExternalUnsignedShortArray) \ |
99 V(ExternalIntElementsAccessor, EXTERNAL_INT_ELEMENTS, \ | 108 V(ExternalIntElementsAccessor, EXTERNAL_INT_ELEMENTS, \ |
100 ExternalIntArray) \ | 109 ExternalIntArray) \ |
101 V(ExternalUnsignedIntElementsAccessor, \ | 110 V(ExternalUnsignedIntElementsAccessor, \ |
102 EXTERNAL_UNSIGNED_INT_ELEMENTS, ExternalUnsignedIntArray) \ | 111 EXTERNAL_UNSIGNED_INT_ELEMENTS, ExternalUnsignedIntArray) \ |
103 V(ExternalFloatElementsAccessor, \ | 112 V(ExternalFloatElementsAccessor, \ |
104 EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \ | 113 EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \ |
105 V(ExternalDoubleElementsAccessor, \ | 114 V(ExternalDoubleElementsAccessor, \ |
106 EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \ | 115 EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \ |
107 V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) | 116 V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) \ |
| 117 V(FixedUint8ArrayAccessor, UINT8_ELEMENTS, FixedUint8Array) \ |
| 118 V(FixedInt8ArrayAccessor, INT8_ELEMENTS, FixedInt8Array) \ |
| 119 V(FixedUint16ArrayAccessor, UINT16_ELEMENTS, FixedUint16Array) \ |
| 120 V(FixedInt16ArrayAccessor, INT16_ELEMENTS, FixedInt16Array) \ |
| 121 V(FixedUint32ArrayAccessor, UINT32_ELEMENTS, FixedUint32Array) \ |
| 122 V(FixedInt32ArrayAccessor, INT32_ELEMENTS, FixedInt32Array) \ |
| 123 V(FixedFloat32ArrayAccessor, FLOAT32_ELEMENTS, FixedFloat32Array) \ |
| 124 V(FixedFloat64ArrayAccessor, FLOAT64_ELEMENTS, FixedFloat64Array) \ |
| 125 V(FixedUint8ClampedArrayAccessor, UINT8_CLAMPED_ELEMENTS, \ |
| 126 FixedUint8ClampedArray) |
108 | 127 |
109 | 128 |
110 template<ElementsKind Kind> class ElementsKindTraits { | 129 template<ElementsKind Kind> class ElementsKindTraits { |
111 public: | 130 public: |
112 typedef FixedArrayBase BackingStore; | 131 typedef FixedArrayBase BackingStore; |
113 }; | 132 }; |
114 | 133 |
115 #define ELEMENTS_TRAITS(Class, KindParam, Store) \ | 134 #define ELEMENTS_TRAITS(Class, KindParam, Store) \ |
116 template<> class ElementsKindTraits<KindParam> { \ | 135 template<> class ElementsKindTraits<KindParam> { \ |
117 public: \ | 136 public: \ |
(...skipping 971 matching lines...) Loading... |
1089 case EXTERNAL_INT_ARRAY_TYPE: | 1108 case EXTERNAL_INT_ARRAY_TYPE: |
1090 return EXTERNAL_INT_ELEMENTS; | 1109 return EXTERNAL_INT_ELEMENTS; |
1091 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: | 1110 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
1092 return EXTERNAL_UNSIGNED_INT_ELEMENTS; | 1111 return EXTERNAL_UNSIGNED_INT_ELEMENTS; |
1093 case EXTERNAL_FLOAT_ARRAY_TYPE: | 1112 case EXTERNAL_FLOAT_ARRAY_TYPE: |
1094 return EXTERNAL_FLOAT_ELEMENTS; | 1113 return EXTERNAL_FLOAT_ELEMENTS; |
1095 case EXTERNAL_DOUBLE_ARRAY_TYPE: | 1114 case EXTERNAL_DOUBLE_ARRAY_TYPE: |
1096 return EXTERNAL_DOUBLE_ELEMENTS; | 1115 return EXTERNAL_DOUBLE_ELEMENTS; |
1097 case EXTERNAL_PIXEL_ARRAY_TYPE: | 1116 case EXTERNAL_PIXEL_ARRAY_TYPE: |
1098 return EXTERNAL_PIXEL_ELEMENTS; | 1117 return EXTERNAL_PIXEL_ELEMENTS; |
| 1118 |
| 1119 case FIXED_UINT8_ARRAY_TYPE: |
| 1120 return UINT8_ELEMENTS; |
| 1121 case FIXED_INT8_ARRAY_TYPE: |
| 1122 return INT8_ELEMENTS; |
| 1123 case FIXED_UINT16_ARRAY_TYPE: |
| 1124 return UINT16_ELEMENTS; |
| 1125 case FIXED_INT16_ARRAY_TYPE: |
| 1126 return INT16_ELEMENTS; |
| 1127 case FIXED_UINT32_ARRAY_TYPE: |
| 1128 return UINT32_ELEMENTS; |
| 1129 case FIXED_INT32_ARRAY_TYPE: |
| 1130 return INT32_ELEMENTS; |
| 1131 case FIXED_FLOAT32_ARRAY_TYPE: |
| 1132 return FLOAT32_ELEMENTS; |
| 1133 case FIXED_FLOAT64_ARRAY_TYPE: |
| 1134 return FLOAT64_ELEMENTS; |
| 1135 case FIXED_UINT8_CLAMPED_ARRAY_TYPE: |
| 1136 return UINT8_CLAMPED_ELEMENTS; |
| 1137 |
1099 default: | 1138 default: |
1100 UNREACHABLE(); | 1139 UNREACHABLE(); |
1101 } | 1140 } |
1102 return FAST_HOLEY_ELEMENTS; | 1141 return FAST_HOLEY_ELEMENTS; |
1103 } | 1142 } |
1104 | 1143 |
1105 | 1144 |
1106 template<typename FastElementsAccessorSubclass, | 1145 template<typename FastElementsAccessorSubclass, |
1107 typename KindTraits> | 1146 typename KindTraits> |
1108 class FastSmiOrObjectElementsAccessor | 1147 class FastSmiOrObjectElementsAccessor |
(...skipping 42 matching lines...) Loading... |
1151 } | 1190 } |
1152 case EXTERNAL_BYTE_ELEMENTS: | 1191 case EXTERNAL_BYTE_ELEMENTS: |
1153 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 1192 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
1154 case EXTERNAL_SHORT_ELEMENTS: | 1193 case EXTERNAL_SHORT_ELEMENTS: |
1155 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 1194 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
1156 case EXTERNAL_INT_ELEMENTS: | 1195 case EXTERNAL_INT_ELEMENTS: |
1157 case EXTERNAL_UNSIGNED_INT_ELEMENTS: | 1196 case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
1158 case EXTERNAL_FLOAT_ELEMENTS: | 1197 case EXTERNAL_FLOAT_ELEMENTS: |
1159 case EXTERNAL_DOUBLE_ELEMENTS: | 1198 case EXTERNAL_DOUBLE_ELEMENTS: |
1160 case EXTERNAL_PIXEL_ELEMENTS: | 1199 case EXTERNAL_PIXEL_ELEMENTS: |
| 1200 case UINT8_ELEMENTS: |
| 1201 case INT8_ELEMENTS: |
| 1202 case UINT16_ELEMENTS: |
| 1203 case INT16_ELEMENTS: |
| 1204 case UINT32_ELEMENTS: |
| 1205 case INT32_ELEMENTS: |
| 1206 case FLOAT32_ELEMENTS: |
| 1207 case FLOAT64_ELEMENTS: |
| 1208 case UINT8_CLAMPED_ELEMENTS: |
1161 UNREACHABLE(); | 1209 UNREACHABLE(); |
1162 } | 1210 } |
1163 return NULL; | 1211 return NULL; |
1164 } | 1212 } |
1165 | 1213 |
1166 | 1214 |
1167 static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, | 1215 static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, |
1168 uint32_t capacity, | 1216 uint32_t capacity, |
1169 uint32_t length) { | 1217 uint32_t length) { |
1170 JSObject::SetFastElementsCapacitySmiMode set_capacity_mode = | 1218 JSObject::SetFastElementsCapacitySmiMode set_capacity_mode = |
(...skipping 105 matching lines...) Loading... |
1276 case NON_STRICT_ARGUMENTS_ELEMENTS: | 1324 case NON_STRICT_ARGUMENTS_ELEMENTS: |
1277 case EXTERNAL_BYTE_ELEMENTS: | 1325 case EXTERNAL_BYTE_ELEMENTS: |
1278 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 1326 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
1279 case EXTERNAL_SHORT_ELEMENTS: | 1327 case EXTERNAL_SHORT_ELEMENTS: |
1280 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 1328 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
1281 case EXTERNAL_INT_ELEMENTS: | 1329 case EXTERNAL_INT_ELEMENTS: |
1282 case EXTERNAL_UNSIGNED_INT_ELEMENTS: | 1330 case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
1283 case EXTERNAL_FLOAT_ELEMENTS: | 1331 case EXTERNAL_FLOAT_ELEMENTS: |
1284 case EXTERNAL_DOUBLE_ELEMENTS: | 1332 case EXTERNAL_DOUBLE_ELEMENTS: |
1285 case EXTERNAL_PIXEL_ELEMENTS: | 1333 case EXTERNAL_PIXEL_ELEMENTS: |
| 1334 case UINT8_ELEMENTS: |
| 1335 case INT8_ELEMENTS: |
| 1336 case UINT16_ELEMENTS: |
| 1337 case INT16_ELEMENTS: |
| 1338 case UINT32_ELEMENTS: |
| 1339 case INT32_ELEMENTS: |
| 1340 case FLOAT32_ELEMENTS: |
| 1341 case FLOAT64_ELEMENTS: |
| 1342 case UINT8_CLAMPED_ELEMENTS: |
1286 UNREACHABLE(); | 1343 UNREACHABLE(); |
1287 } | 1344 } |
1288 return to->GetHeap()->undefined_value(); | 1345 return to->GetHeap()->undefined_value(); |
1289 } | 1346 } |
1290 }; | 1347 }; |
1291 | 1348 |
1292 | 1349 |
1293 class FastPackedDoubleElementsAccessor | 1350 class FastPackedDoubleElementsAccessor |
1294 : public FastDoubleElementsAccessor< | 1351 : public FastDoubleElementsAccessor< |
1295 FastPackedDoubleElementsAccessor, | 1352 FastPackedDoubleElementsAccessor, |
(...skipping 17 matching lines...) Loading... |
1313 FastHoleyDoubleElementsAccessor, | 1370 FastHoleyDoubleElementsAccessor, |
1314 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >; | 1371 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >; |
1315 explicit FastHoleyDoubleElementsAccessor(const char* name) | 1372 explicit FastHoleyDoubleElementsAccessor(const char* name) |
1316 : FastDoubleElementsAccessor< | 1373 : FastDoubleElementsAccessor< |
1317 FastHoleyDoubleElementsAccessor, | 1374 FastHoleyDoubleElementsAccessor, |
1318 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >(name) {} | 1375 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >(name) {} |
1319 }; | 1376 }; |
1320 | 1377 |
1321 | 1378 |
1322 // Super class for all external element arrays. | 1379 // Super class for all external element arrays. |
1323 template<typename ExternalElementsAccessorSubclass, | 1380 template<typename AccessorSubclass, |
1324 ElementsKind Kind> | 1381 ElementsKind Kind> |
1325 class ExternalElementsAccessor | 1382 class TypedElementsAccessor |
1326 : public ElementsAccessorBase<ExternalElementsAccessorSubclass, | 1383 : public ElementsAccessorBase<AccessorSubclass, |
1327 ElementsKindTraits<Kind> > { | 1384 ElementsKindTraits<Kind> > { |
1328 public: | 1385 public: |
1329 explicit ExternalElementsAccessor(const char* name) | 1386 explicit TypedElementsAccessor(const char* name) |
1330 : ElementsAccessorBase<ExternalElementsAccessorSubclass, | 1387 : ElementsAccessorBase<AccessorSubclass, |
1331 ElementsKindTraits<Kind> >(name) {} | 1388 ElementsKindTraits<Kind> >(name) {} |
1332 | 1389 |
1333 protected: | 1390 protected: |
1334 typedef typename ElementsKindTraits<Kind>::BackingStore BackingStore; | 1391 typedef typename ElementsKindTraits<Kind>::BackingStore BackingStore; |
1335 | 1392 |
1336 friend class ElementsAccessorBase<ExternalElementsAccessorSubclass, | 1393 friend class ElementsAccessorBase<AccessorSubclass, |
1337 ElementsKindTraits<Kind> >; | 1394 ElementsKindTraits<Kind> >; |
1338 | 1395 |
1339 MUST_USE_RESULT static MaybeObject* GetImpl(Object* receiver, | 1396 MUST_USE_RESULT static MaybeObject* GetImpl(Object* receiver, |
1340 JSObject* obj, | 1397 JSObject* obj, |
1341 uint32_t key, | 1398 uint32_t key, |
1342 FixedArrayBase* backing_store) { | 1399 FixedArrayBase* backing_store) { |
1343 return | 1400 return |
1344 key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store) | 1401 key < AccessorSubclass::GetCapacityImpl(backing_store) |
1345 ? BackingStore::cast(backing_store)->get(key) | 1402 ? BackingStore::cast(backing_store)->get(key) |
1346 : backing_store->GetHeap()->undefined_value(); | 1403 : backing_store->GetHeap()->undefined_value(); |
1347 } | 1404 } |
1348 | 1405 |
1349 MUST_USE_RESULT static PropertyAttributes GetAttributesImpl( | 1406 MUST_USE_RESULT static PropertyAttributes GetAttributesImpl( |
1350 Object* receiver, | 1407 Object* receiver, |
1351 JSObject* obj, | 1408 JSObject* obj, |
1352 uint32_t key, | 1409 uint32_t key, |
1353 FixedArrayBase* backing_store) { | 1410 FixedArrayBase* backing_store) { |
1354 return | 1411 return |
1355 key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store) | 1412 key < AccessorSubclass::GetCapacityImpl(backing_store) |
1356 ? NONE : ABSENT; | 1413 ? NONE : ABSENT; |
1357 } | 1414 } |
1358 | 1415 |
1359 MUST_USE_RESULT static PropertyType GetTypeImpl( | 1416 MUST_USE_RESULT static PropertyType GetTypeImpl( |
1360 Object* receiver, | 1417 Object* receiver, |
1361 JSObject* obj, | 1418 JSObject* obj, |
1362 uint32_t key, | 1419 uint32_t key, |
1363 FixedArrayBase* backing_store) { | 1420 FixedArrayBase* backing_store) { |
1364 return | 1421 return |
1365 key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store) | 1422 key < AccessorSubclass::GetCapacityImpl(backing_store) |
1366 ? FIELD : NONEXISTENT; | 1423 ? FIELD : NONEXISTENT; |
1367 } | 1424 } |
1368 | 1425 |
1369 MUST_USE_RESULT static MaybeObject* SetLengthImpl( | 1426 MUST_USE_RESULT static MaybeObject* SetLengthImpl( |
1370 JSObject* obj, | 1427 JSObject* obj, |
1371 Object* length, | 1428 Object* length, |
1372 FixedArrayBase* backing_store) { | 1429 FixedArrayBase* backing_store) { |
1373 // External arrays do not support changing their length. | 1430 // External arrays do not support changing their length. |
1374 UNREACHABLE(); | 1431 UNREACHABLE(); |
1375 return obj; | 1432 return obj; |
1376 } | 1433 } |
1377 | 1434 |
1378 MUST_USE_RESULT virtual MaybeObject* Delete(JSObject* obj, | 1435 MUST_USE_RESULT virtual MaybeObject* Delete(JSObject* obj, |
1379 uint32_t key, | 1436 uint32_t key, |
1380 JSReceiver::DeleteMode mode) { | 1437 JSReceiver::DeleteMode mode) { |
1381 // External arrays always ignore deletes. | 1438 // External arrays always ignore deletes. |
1382 return obj->GetHeap()->true_value(); | 1439 return obj->GetHeap()->true_value(); |
1383 } | 1440 } |
1384 | 1441 |
1385 static bool HasElementImpl(Object* receiver, | 1442 static bool HasElementImpl(Object* receiver, |
1386 JSObject* holder, | 1443 JSObject* holder, |
1387 uint32_t key, | 1444 uint32_t key, |
1388 FixedArrayBase* backing_store) { | 1445 FixedArrayBase* backing_store) { |
1389 uint32_t capacity = | 1446 uint32_t capacity = |
1390 ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store); | 1447 AccessorSubclass::GetCapacityImpl(backing_store); |
1391 return key < capacity; | 1448 return key < capacity; |
1392 } | 1449 } |
1393 }; | 1450 }; |
1394 | 1451 |
1395 | 1452 |
1396 class ExternalByteElementsAccessor | 1453 class ExternalByteElementsAccessor |
1397 : public ExternalElementsAccessor<ExternalByteElementsAccessor, | 1454 : public TypedElementsAccessor<ExternalByteElementsAccessor, |
1398 EXTERNAL_BYTE_ELEMENTS> { | 1455 EXTERNAL_BYTE_ELEMENTS> { |
1399 public: | 1456 public: |
1400 explicit ExternalByteElementsAccessor(const char* name) | 1457 explicit ExternalByteElementsAccessor(const char* name) |
1401 : ExternalElementsAccessor<ExternalByteElementsAccessor, | 1458 : TypedElementsAccessor<ExternalByteElementsAccessor, |
1402 EXTERNAL_BYTE_ELEMENTS>(name) {} | 1459 EXTERNAL_BYTE_ELEMENTS>(name) {} |
1403 }; | 1460 }; |
1404 | 1461 |
1405 | 1462 |
1406 class ExternalUnsignedByteElementsAccessor | 1463 class ExternalUnsignedByteElementsAccessor |
1407 : public ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, | 1464 : public TypedElementsAccessor<ExternalUnsignedByteElementsAccessor, |
1408 EXTERNAL_UNSIGNED_BYTE_ELEMENTS> { | 1465 EXTERNAL_UNSIGNED_BYTE_ELEMENTS> { |
1409 public: | 1466 public: |
1410 explicit ExternalUnsignedByteElementsAccessor(const char* name) | 1467 explicit ExternalUnsignedByteElementsAccessor(const char* name) |
1411 : ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, | 1468 : TypedElementsAccessor<ExternalUnsignedByteElementsAccessor, |
1412 EXTERNAL_UNSIGNED_BYTE_ELEMENTS>(name) {} | 1469 EXTERNAL_UNSIGNED_BYTE_ELEMENTS>(name) {} |
1413 }; | 1470 }; |
1414 | 1471 |
1415 | 1472 |
1416 class ExternalShortElementsAccessor | 1473 class ExternalShortElementsAccessor |
1417 : public ExternalElementsAccessor<ExternalShortElementsAccessor, | 1474 : public TypedElementsAccessor<ExternalShortElementsAccessor, |
1418 EXTERNAL_SHORT_ELEMENTS> { | 1475 EXTERNAL_SHORT_ELEMENTS> { |
1419 public: | 1476 public: |
1420 explicit ExternalShortElementsAccessor(const char* name) | 1477 explicit ExternalShortElementsAccessor(const char* name) |
1421 : ExternalElementsAccessor<ExternalShortElementsAccessor, | 1478 : TypedElementsAccessor<ExternalShortElementsAccessor, |
1422 EXTERNAL_SHORT_ELEMENTS>(name) {} | 1479 EXTERNAL_SHORT_ELEMENTS>(name) {} |
1423 }; | 1480 }; |
1424 | 1481 |
1425 | 1482 |
1426 class ExternalUnsignedShortElementsAccessor | 1483 class ExternalUnsignedShortElementsAccessor |
1427 : public ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, | 1484 : public TypedElementsAccessor<ExternalUnsignedShortElementsAccessor, |
1428 EXTERNAL_UNSIGNED_SHORT_ELEMENTS> { | 1485 EXTERNAL_UNSIGNED_SHORT_ELEMENTS> { |
1429 public: | 1486 public: |
1430 explicit ExternalUnsignedShortElementsAccessor(const char* name) | 1487 explicit ExternalUnsignedShortElementsAccessor(const char* name) |
1431 : ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, | 1488 : TypedElementsAccessor<ExternalUnsignedShortElementsAccessor, |
1432 EXTERNAL_UNSIGNED_SHORT_ELEMENTS>(name) {} | 1489 EXTERNAL_UNSIGNED_SHORT_ELEMENTS>(name) {} |
1433 }; | 1490 }; |
1434 | 1491 |
1435 | 1492 |
1436 class ExternalIntElementsAccessor | 1493 class ExternalIntElementsAccessor |
1437 : public ExternalElementsAccessor<ExternalIntElementsAccessor, | 1494 : public TypedElementsAccessor<ExternalIntElementsAccessor, |
1438 EXTERNAL_INT_ELEMENTS> { | 1495 EXTERNAL_INT_ELEMENTS> { |
1439 public: | 1496 public: |
1440 explicit ExternalIntElementsAccessor(const char* name) | 1497 explicit ExternalIntElementsAccessor(const char* name) |
1441 : ExternalElementsAccessor<ExternalIntElementsAccessor, | 1498 : TypedElementsAccessor<ExternalIntElementsAccessor, |
1442 EXTERNAL_INT_ELEMENTS>(name) {} | 1499 EXTERNAL_INT_ELEMENTS>(name) {} |
1443 }; | 1500 }; |
1444 | 1501 |
1445 | 1502 |
1446 class ExternalUnsignedIntElementsAccessor | 1503 class ExternalUnsignedIntElementsAccessor |
1447 : public ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, | 1504 : public TypedElementsAccessor<ExternalUnsignedIntElementsAccessor, |
1448 EXTERNAL_UNSIGNED_INT_ELEMENTS> { | 1505 EXTERNAL_UNSIGNED_INT_ELEMENTS> { |
1449 public: | 1506 public: |
1450 explicit ExternalUnsignedIntElementsAccessor(const char* name) | 1507 explicit ExternalUnsignedIntElementsAccessor(const char* name) |
1451 : ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, | 1508 : TypedElementsAccessor<ExternalUnsignedIntElementsAccessor, |
1452 EXTERNAL_UNSIGNED_INT_ELEMENTS>(name) {} | 1509 EXTERNAL_UNSIGNED_INT_ELEMENTS>(name) {} |
1453 }; | 1510 }; |
1454 | 1511 |
1455 | 1512 |
1456 class ExternalFloatElementsAccessor | 1513 class ExternalFloatElementsAccessor |
1457 : public ExternalElementsAccessor<ExternalFloatElementsAccessor, | 1514 : public TypedElementsAccessor<ExternalFloatElementsAccessor, |
1458 EXTERNAL_FLOAT_ELEMENTS> { | 1515 EXTERNAL_FLOAT_ELEMENTS> { |
1459 public: | 1516 public: |
1460 explicit ExternalFloatElementsAccessor(const char* name) | 1517 explicit ExternalFloatElementsAccessor(const char* name) |
1461 : ExternalElementsAccessor<ExternalFloatElementsAccessor, | 1518 : TypedElementsAccessor<ExternalFloatElementsAccessor, |
1462 EXTERNAL_FLOAT_ELEMENTS>(name) {} | 1519 EXTERNAL_FLOAT_ELEMENTS>(name) {} |
1463 }; | 1520 }; |
1464 | 1521 |
1465 | 1522 |
1466 class ExternalDoubleElementsAccessor | 1523 class ExternalDoubleElementsAccessor |
1467 : public ExternalElementsAccessor<ExternalDoubleElementsAccessor, | 1524 : public TypedElementsAccessor<ExternalDoubleElementsAccessor, |
1468 EXTERNAL_DOUBLE_ELEMENTS> { | 1525 EXTERNAL_DOUBLE_ELEMENTS> { |
1469 public: | 1526 public: |
1470 explicit ExternalDoubleElementsAccessor(const char* name) | 1527 explicit ExternalDoubleElementsAccessor(const char* name) |
1471 : ExternalElementsAccessor<ExternalDoubleElementsAccessor, | 1528 : TypedElementsAccessor<ExternalDoubleElementsAccessor, |
1472 EXTERNAL_DOUBLE_ELEMENTS>(name) {} | 1529 EXTERNAL_DOUBLE_ELEMENTS>(name) {} |
1473 }; | 1530 }; |
1474 | 1531 |
1475 | 1532 |
1476 class PixelElementsAccessor | 1533 class PixelElementsAccessor |
1477 : public ExternalElementsAccessor<PixelElementsAccessor, | 1534 : public TypedElementsAccessor<PixelElementsAccessor, |
1478 EXTERNAL_PIXEL_ELEMENTS> { | 1535 EXTERNAL_PIXEL_ELEMENTS> { |
1479 public: | 1536 public: |
1480 explicit PixelElementsAccessor(const char* name) | 1537 explicit PixelElementsAccessor(const char* name) |
1481 : ExternalElementsAccessor<PixelElementsAccessor, | 1538 : TypedElementsAccessor<PixelElementsAccessor, |
1482 EXTERNAL_PIXEL_ELEMENTS>(name) {} | 1539 EXTERNAL_PIXEL_ELEMENTS>(name) {} |
1483 }; | 1540 }; |
1484 | 1541 |
1485 | 1542 |
| 1543 class FixedUint8ArrayAccessor |
| 1544 : public TypedElementsAccessor<FixedUint8ArrayAccessor, |
| 1545 UINT8_ELEMENTS> { |
| 1546 public: |
| 1547 explicit FixedUint8ArrayAccessor(const char* name) |
| 1548 : TypedElementsAccessor<FixedUint8ArrayAccessor, |
| 1549 UINT8_ELEMENTS>(name) {} |
| 1550 }; |
| 1551 class FixedUint8ClampedArrayAccessor |
| 1552 : public TypedElementsAccessor<FixedUint8ClampedArrayAccessor, |
| 1553 UINT8_CLAMPED_ELEMENTS> { |
| 1554 public: |
| 1555 explicit FixedUint8ClampedArrayAccessor(const char* name) |
| 1556 : TypedElementsAccessor<FixedUint8ClampedArrayAccessor, |
| 1557 UINT8_CLAMPED_ELEMENTS>(name) {} |
| 1558 }; |
| 1559 class FixedInt8ArrayAccessor |
| 1560 : public TypedElementsAccessor<FixedInt8ArrayAccessor, |
| 1561 INT8_ELEMENTS> { |
| 1562 public: |
| 1563 explicit FixedInt8ArrayAccessor(const char* name) |
| 1564 : TypedElementsAccessor<FixedInt8ArrayAccessor, |
| 1565 INT8_ELEMENTS>(name) {} |
| 1566 }; |
| 1567 class FixedUint16ArrayAccessor |
| 1568 : public TypedElementsAccessor<FixedUint16ArrayAccessor, |
| 1569 UINT16_ELEMENTS> { |
| 1570 public: |
| 1571 explicit FixedUint16ArrayAccessor(const char* name) |
| 1572 : TypedElementsAccessor<FixedUint16ArrayAccessor, |
| 1573 UINT16_ELEMENTS>(name) {} |
| 1574 }; |
| 1575 class FixedInt16ArrayAccessor |
| 1576 : public TypedElementsAccessor<FixedInt16ArrayAccessor, |
| 1577 INT16_ELEMENTS> { |
| 1578 public: |
| 1579 explicit FixedInt16ArrayAccessor(const char* name) |
| 1580 : TypedElementsAccessor<FixedInt16ArrayAccessor, |
| 1581 INT16_ELEMENTS>(name) {} |
| 1582 }; |
| 1583 class FixedUint32ArrayAccessor |
| 1584 : public TypedElementsAccessor<FixedUint32ArrayAccessor, |
| 1585 UINT32_ELEMENTS> { |
| 1586 public: |
| 1587 explicit FixedUint32ArrayAccessor(const char* name) |
| 1588 : TypedElementsAccessor<FixedUint32ArrayAccessor, |
| 1589 UINT32_ELEMENTS>(name) {} |
| 1590 }; |
| 1591 class FixedInt32ArrayAccessor |
| 1592 : public TypedElementsAccessor<FixedInt32ArrayAccessor, |
| 1593 INT32_ELEMENTS> { |
| 1594 public: |
| 1595 explicit FixedInt32ArrayAccessor(const char* name) |
| 1596 : TypedElementsAccessor<FixedInt32ArrayAccessor, |
| 1597 INT32_ELEMENTS>(name) {} |
| 1598 }; |
| 1599 |
| 1600 class FixedFloat32ArrayAccessor |
| 1601 : public TypedElementsAccessor<FixedFloat32ArrayAccessor, |
| 1602 FLOAT32_ELEMENTS> { |
| 1603 public: |
| 1604 explicit FixedFloat32ArrayAccessor(const char* name) |
| 1605 : TypedElementsAccessor<FixedFloat32ArrayAccessor, |
| 1606 FLOAT32_ELEMENTS>(name) {} |
| 1607 }; |
| 1608 class FixedFloat64ArrayAccessor |
| 1609 : public TypedElementsAccessor<FixedFloat64ArrayAccessor, |
| 1610 FLOAT64_ELEMENTS> { |
| 1611 public: |
| 1612 explicit FixedFloat64ArrayAccessor(const char* name) |
| 1613 : TypedElementsAccessor<FixedFloat64ArrayAccessor, |
| 1614 FLOAT64_ELEMENTS>(name) {} |
| 1615 }; |
| 1616 |
1486 class DictionaryElementsAccessor | 1617 class DictionaryElementsAccessor |
1487 : public ElementsAccessorBase<DictionaryElementsAccessor, | 1618 : public ElementsAccessorBase<DictionaryElementsAccessor, |
1488 ElementsKindTraits<DICTIONARY_ELEMENTS> > { | 1619 ElementsKindTraits<DICTIONARY_ELEMENTS> > { |
1489 public: | 1620 public: |
1490 explicit DictionaryElementsAccessor(const char* name) | 1621 explicit DictionaryElementsAccessor(const char* name) |
1491 : ElementsAccessorBase<DictionaryElementsAccessor, | 1622 : ElementsAccessorBase<DictionaryElementsAccessor, |
1492 ElementsKindTraits<DICTIONARY_ELEMENTS> >(name) {} | 1623 ElementsKindTraits<DICTIONARY_ELEMENTS> >(name) {} |
1493 | 1624 |
1494 // Adjusts the length of the dictionary backing store and returns the new | 1625 // Adjusts the length of the dictionary backing store and returns the new |
1495 // length according to ES5 section 15.4.5.2 behavior. | 1626 // length according to ES5 section 15.4.5.2 behavior. |
(...skipping 562 matching lines...) Loading... |
2058 UNREACHABLE(); | 2189 UNREACHABLE(); |
2059 break; | 2190 break; |
2060 } | 2191 } |
2061 | 2192 |
2062 array->set_elements(elms); | 2193 array->set_elements(elms); |
2063 array->set_length(Smi::FromInt(number_of_elements)); | 2194 array->set_length(Smi::FromInt(number_of_elements)); |
2064 return array; | 2195 return array; |
2065 } | 2196 } |
2066 | 2197 |
2067 } } // namespace v8::internal | 2198 } } // namespace v8::internal |
OLD | NEW |