| 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...) Expand all 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 // - TypedElementsAccessor (abstract) | 51 // - ExternalElementsAccessor (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 | |
| 70 // - DictionaryElementsAccessor | 61 // - DictionaryElementsAccessor |
| 71 // - NonStrictArgumentsElementsAccessor | 62 // - NonStrictArgumentsElementsAccessor |
| 72 | 63 |
| 73 | 64 |
| 74 namespace v8 { | 65 namespace v8 { |
| 75 namespace internal { | 66 namespace internal { |
| 76 | 67 |
| 77 | 68 |
| 78 static const int kPackedSizeNotKnown = -1; | 69 static const int kPackedSizeNotKnown = -1; |
| 79 | 70 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 106 V(ExternalUnsignedShortElementsAccessor, \ | 97 V(ExternalUnsignedShortElementsAccessor, \ |
| 107 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, ExternalUnsignedShortArray) \ | 98 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, ExternalUnsignedShortArray) \ |
| 108 V(ExternalIntElementsAccessor, EXTERNAL_INT_ELEMENTS, \ | 99 V(ExternalIntElementsAccessor, EXTERNAL_INT_ELEMENTS, \ |
| 109 ExternalIntArray) \ | 100 ExternalIntArray) \ |
| 110 V(ExternalUnsignedIntElementsAccessor, \ | 101 V(ExternalUnsignedIntElementsAccessor, \ |
| 111 EXTERNAL_UNSIGNED_INT_ELEMENTS, ExternalUnsignedIntArray) \ | 102 EXTERNAL_UNSIGNED_INT_ELEMENTS, ExternalUnsignedIntArray) \ |
| 112 V(ExternalFloatElementsAccessor, \ | 103 V(ExternalFloatElementsAccessor, \ |
| 113 EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \ | 104 EXTERNAL_FLOAT_ELEMENTS, ExternalFloatArray) \ |
| 114 V(ExternalDoubleElementsAccessor, \ | 105 V(ExternalDoubleElementsAccessor, \ |
| 115 EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \ | 106 EXTERNAL_DOUBLE_ELEMENTS, ExternalDoubleArray) \ |
| 116 V(PixelElementsAccessor, EXTERNAL_PIXEL_ELEMENTS, ExternalPixelArray) \ | 107 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) | |
| 127 | 108 |
| 128 | 109 |
| 129 template<ElementsKind Kind> class ElementsKindTraits { | 110 template<ElementsKind Kind> class ElementsKindTraits { |
| 130 public: | 111 public: |
| 131 typedef FixedArrayBase BackingStore; | 112 typedef FixedArrayBase BackingStore; |
| 132 }; | 113 }; |
| 133 | 114 |
| 134 #define ELEMENTS_TRAITS(Class, KindParam, Store) \ | 115 #define ELEMENTS_TRAITS(Class, KindParam, Store) \ |
| 135 template<> class ElementsKindTraits<KindParam> { \ | 116 template<> class ElementsKindTraits<KindParam> { \ |
| 136 public: \ | 117 public: \ |
| (...skipping 971 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1108 case EXTERNAL_INT_ARRAY_TYPE: | 1089 case EXTERNAL_INT_ARRAY_TYPE: |
| 1109 return EXTERNAL_INT_ELEMENTS; | 1090 return EXTERNAL_INT_ELEMENTS; |
| 1110 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: | 1091 case EXTERNAL_UNSIGNED_INT_ARRAY_TYPE: |
| 1111 return EXTERNAL_UNSIGNED_INT_ELEMENTS; | 1092 return EXTERNAL_UNSIGNED_INT_ELEMENTS; |
| 1112 case EXTERNAL_FLOAT_ARRAY_TYPE: | 1093 case EXTERNAL_FLOAT_ARRAY_TYPE: |
| 1113 return EXTERNAL_FLOAT_ELEMENTS; | 1094 return EXTERNAL_FLOAT_ELEMENTS; |
| 1114 case EXTERNAL_DOUBLE_ARRAY_TYPE: | 1095 case EXTERNAL_DOUBLE_ARRAY_TYPE: |
| 1115 return EXTERNAL_DOUBLE_ELEMENTS; | 1096 return EXTERNAL_DOUBLE_ELEMENTS; |
| 1116 case EXTERNAL_PIXEL_ARRAY_TYPE: | 1097 case EXTERNAL_PIXEL_ARRAY_TYPE: |
| 1117 return EXTERNAL_PIXEL_ELEMENTS; | 1098 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 | |
| 1138 default: | 1099 default: |
| 1139 UNREACHABLE(); | 1100 UNREACHABLE(); |
| 1140 } | 1101 } |
| 1141 return FAST_HOLEY_ELEMENTS; | 1102 return FAST_HOLEY_ELEMENTS; |
| 1142 } | 1103 } |
| 1143 | 1104 |
| 1144 | 1105 |
| 1145 template<typename FastElementsAccessorSubclass, | 1106 template<typename FastElementsAccessorSubclass, |
| 1146 typename KindTraits> | 1107 typename KindTraits> |
| 1147 class FastSmiOrObjectElementsAccessor | 1108 class FastSmiOrObjectElementsAccessor |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1190 } | 1151 } |
| 1191 case EXTERNAL_BYTE_ELEMENTS: | 1152 case EXTERNAL_BYTE_ELEMENTS: |
| 1192 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 1153 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
| 1193 case EXTERNAL_SHORT_ELEMENTS: | 1154 case EXTERNAL_SHORT_ELEMENTS: |
| 1194 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 1155 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
| 1195 case EXTERNAL_INT_ELEMENTS: | 1156 case EXTERNAL_INT_ELEMENTS: |
| 1196 case EXTERNAL_UNSIGNED_INT_ELEMENTS: | 1157 case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
| 1197 case EXTERNAL_FLOAT_ELEMENTS: | 1158 case EXTERNAL_FLOAT_ELEMENTS: |
| 1198 case EXTERNAL_DOUBLE_ELEMENTS: | 1159 case EXTERNAL_DOUBLE_ELEMENTS: |
| 1199 case EXTERNAL_PIXEL_ELEMENTS: | 1160 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: | |
| 1209 UNREACHABLE(); | 1161 UNREACHABLE(); |
| 1210 } | 1162 } |
| 1211 return NULL; | 1163 return NULL; |
| 1212 } | 1164 } |
| 1213 | 1165 |
| 1214 | 1166 |
| 1215 static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, | 1167 static MaybeObject* SetFastElementsCapacityAndLength(JSObject* obj, |
| 1216 uint32_t capacity, | 1168 uint32_t capacity, |
| 1217 uint32_t length) { | 1169 uint32_t length) { |
| 1218 JSObject::SetFastElementsCapacitySmiMode set_capacity_mode = | 1170 JSObject::SetFastElementsCapacitySmiMode set_capacity_mode = |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1324 case NON_STRICT_ARGUMENTS_ELEMENTS: | 1276 case NON_STRICT_ARGUMENTS_ELEMENTS: |
| 1325 case EXTERNAL_BYTE_ELEMENTS: | 1277 case EXTERNAL_BYTE_ELEMENTS: |
| 1326 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: | 1278 case EXTERNAL_UNSIGNED_BYTE_ELEMENTS: |
| 1327 case EXTERNAL_SHORT_ELEMENTS: | 1279 case EXTERNAL_SHORT_ELEMENTS: |
| 1328 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: | 1280 case EXTERNAL_UNSIGNED_SHORT_ELEMENTS: |
| 1329 case EXTERNAL_INT_ELEMENTS: | 1281 case EXTERNAL_INT_ELEMENTS: |
| 1330 case EXTERNAL_UNSIGNED_INT_ELEMENTS: | 1282 case EXTERNAL_UNSIGNED_INT_ELEMENTS: |
| 1331 case EXTERNAL_FLOAT_ELEMENTS: | 1283 case EXTERNAL_FLOAT_ELEMENTS: |
| 1332 case EXTERNAL_DOUBLE_ELEMENTS: | 1284 case EXTERNAL_DOUBLE_ELEMENTS: |
| 1333 case EXTERNAL_PIXEL_ELEMENTS: | 1285 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: | |
| 1343 UNREACHABLE(); | 1286 UNREACHABLE(); |
| 1344 } | 1287 } |
| 1345 return to->GetHeap()->undefined_value(); | 1288 return to->GetHeap()->undefined_value(); |
| 1346 } | 1289 } |
| 1347 }; | 1290 }; |
| 1348 | 1291 |
| 1349 | 1292 |
| 1350 class FastPackedDoubleElementsAccessor | 1293 class FastPackedDoubleElementsAccessor |
| 1351 : public FastDoubleElementsAccessor< | 1294 : public FastDoubleElementsAccessor< |
| 1352 FastPackedDoubleElementsAccessor, | 1295 FastPackedDoubleElementsAccessor, |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1370 FastHoleyDoubleElementsAccessor, | 1313 FastHoleyDoubleElementsAccessor, |
| 1371 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >; | 1314 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >; |
| 1372 explicit FastHoleyDoubleElementsAccessor(const char* name) | 1315 explicit FastHoleyDoubleElementsAccessor(const char* name) |
| 1373 : FastDoubleElementsAccessor< | 1316 : FastDoubleElementsAccessor< |
| 1374 FastHoleyDoubleElementsAccessor, | 1317 FastHoleyDoubleElementsAccessor, |
| 1375 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >(name) {} | 1318 ElementsKindTraits<FAST_HOLEY_DOUBLE_ELEMENTS> >(name) {} |
| 1376 }; | 1319 }; |
| 1377 | 1320 |
| 1378 | 1321 |
| 1379 // Super class for all external element arrays. | 1322 // Super class for all external element arrays. |
| 1380 template<typename AccessorSubclass, | 1323 template<typename ExternalElementsAccessorSubclass, |
| 1381 ElementsKind Kind> | 1324 ElementsKind Kind> |
| 1382 class TypedElementsAccessor | 1325 class ExternalElementsAccessor |
| 1383 : public ElementsAccessorBase<AccessorSubclass, | 1326 : public ElementsAccessorBase<ExternalElementsAccessorSubclass, |
| 1384 ElementsKindTraits<Kind> > { | 1327 ElementsKindTraits<Kind> > { |
| 1385 public: | 1328 public: |
| 1386 explicit TypedElementsAccessor(const char* name) | 1329 explicit ExternalElementsAccessor(const char* name) |
| 1387 : ElementsAccessorBase<AccessorSubclass, | 1330 : ElementsAccessorBase<ExternalElementsAccessorSubclass, |
| 1388 ElementsKindTraits<Kind> >(name) {} | 1331 ElementsKindTraits<Kind> >(name) {} |
| 1389 | 1332 |
| 1390 protected: | 1333 protected: |
| 1391 typedef typename ElementsKindTraits<Kind>::BackingStore BackingStore; | 1334 typedef typename ElementsKindTraits<Kind>::BackingStore BackingStore; |
| 1392 | 1335 |
| 1393 friend class ElementsAccessorBase<AccessorSubclass, | 1336 friend class ElementsAccessorBase<ExternalElementsAccessorSubclass, |
| 1394 ElementsKindTraits<Kind> >; | 1337 ElementsKindTraits<Kind> >; |
| 1395 | 1338 |
| 1396 MUST_USE_RESULT static MaybeObject* GetImpl(Object* receiver, | 1339 MUST_USE_RESULT static MaybeObject* GetImpl(Object* receiver, |
| 1397 JSObject* obj, | 1340 JSObject* obj, |
| 1398 uint32_t key, | 1341 uint32_t key, |
| 1399 FixedArrayBase* backing_store) { | 1342 FixedArrayBase* backing_store) { |
| 1400 return | 1343 return |
| 1401 key < AccessorSubclass::GetCapacityImpl(backing_store) | 1344 key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store) |
| 1402 ? BackingStore::cast(backing_store)->get(key) | 1345 ? BackingStore::cast(backing_store)->get(key) |
| 1403 : backing_store->GetHeap()->undefined_value(); | 1346 : backing_store->GetHeap()->undefined_value(); |
| 1404 } | 1347 } |
| 1405 | 1348 |
| 1406 MUST_USE_RESULT static PropertyAttributes GetAttributesImpl( | 1349 MUST_USE_RESULT static PropertyAttributes GetAttributesImpl( |
| 1407 Object* receiver, | 1350 Object* receiver, |
| 1408 JSObject* obj, | 1351 JSObject* obj, |
| 1409 uint32_t key, | 1352 uint32_t key, |
| 1410 FixedArrayBase* backing_store) { | 1353 FixedArrayBase* backing_store) { |
| 1411 return | 1354 return |
| 1412 key < AccessorSubclass::GetCapacityImpl(backing_store) | 1355 key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store) |
| 1413 ? NONE : ABSENT; | 1356 ? NONE : ABSENT; |
| 1414 } | 1357 } |
| 1415 | 1358 |
| 1416 MUST_USE_RESULT static PropertyType GetTypeImpl( | 1359 MUST_USE_RESULT static PropertyType GetTypeImpl( |
| 1417 Object* receiver, | 1360 Object* receiver, |
| 1418 JSObject* obj, | 1361 JSObject* obj, |
| 1419 uint32_t key, | 1362 uint32_t key, |
| 1420 FixedArrayBase* backing_store) { | 1363 FixedArrayBase* backing_store) { |
| 1421 return | 1364 return |
| 1422 key < AccessorSubclass::GetCapacityImpl(backing_store) | 1365 key < ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store) |
| 1423 ? FIELD : NONEXISTENT; | 1366 ? FIELD : NONEXISTENT; |
| 1424 } | 1367 } |
| 1425 | 1368 |
| 1426 MUST_USE_RESULT static MaybeObject* SetLengthImpl( | 1369 MUST_USE_RESULT static MaybeObject* SetLengthImpl( |
| 1427 JSObject* obj, | 1370 JSObject* obj, |
| 1428 Object* length, | 1371 Object* length, |
| 1429 FixedArrayBase* backing_store) { | 1372 FixedArrayBase* backing_store) { |
| 1430 // External arrays do not support changing their length. | 1373 // External arrays do not support changing their length. |
| 1431 UNREACHABLE(); | 1374 UNREACHABLE(); |
| 1432 return obj; | 1375 return obj; |
| 1433 } | 1376 } |
| 1434 | 1377 |
| 1435 MUST_USE_RESULT virtual MaybeObject* Delete(JSObject* obj, | 1378 MUST_USE_RESULT virtual MaybeObject* Delete(JSObject* obj, |
| 1436 uint32_t key, | 1379 uint32_t key, |
| 1437 JSReceiver::DeleteMode mode) { | 1380 JSReceiver::DeleteMode mode) { |
| 1438 // External arrays always ignore deletes. | 1381 // External arrays always ignore deletes. |
| 1439 return obj->GetHeap()->true_value(); | 1382 return obj->GetHeap()->true_value(); |
| 1440 } | 1383 } |
| 1441 | 1384 |
| 1442 static bool HasElementImpl(Object* receiver, | 1385 static bool HasElementImpl(Object* receiver, |
| 1443 JSObject* holder, | 1386 JSObject* holder, |
| 1444 uint32_t key, | 1387 uint32_t key, |
| 1445 FixedArrayBase* backing_store) { | 1388 FixedArrayBase* backing_store) { |
| 1446 uint32_t capacity = | 1389 uint32_t capacity = |
| 1447 AccessorSubclass::GetCapacityImpl(backing_store); | 1390 ExternalElementsAccessorSubclass::GetCapacityImpl(backing_store); |
| 1448 return key < capacity; | 1391 return key < capacity; |
| 1449 } | 1392 } |
| 1450 }; | 1393 }; |
| 1451 | 1394 |
| 1452 | 1395 |
| 1453 class ExternalByteElementsAccessor | 1396 class ExternalByteElementsAccessor |
| 1454 : public TypedElementsAccessor<ExternalByteElementsAccessor, | 1397 : public ExternalElementsAccessor<ExternalByteElementsAccessor, |
| 1455 EXTERNAL_BYTE_ELEMENTS> { | 1398 EXTERNAL_BYTE_ELEMENTS> { |
| 1456 public: | 1399 public: |
| 1457 explicit ExternalByteElementsAccessor(const char* name) | 1400 explicit ExternalByteElementsAccessor(const char* name) |
| 1458 : TypedElementsAccessor<ExternalByteElementsAccessor, | 1401 : ExternalElementsAccessor<ExternalByteElementsAccessor, |
| 1459 EXTERNAL_BYTE_ELEMENTS>(name) {} | 1402 EXTERNAL_BYTE_ELEMENTS>(name) {} |
| 1460 }; | 1403 }; |
| 1461 | 1404 |
| 1462 | 1405 |
| 1463 class ExternalUnsignedByteElementsAccessor | 1406 class ExternalUnsignedByteElementsAccessor |
| 1464 : public TypedElementsAccessor<ExternalUnsignedByteElementsAccessor, | 1407 : public ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, |
| 1465 EXTERNAL_UNSIGNED_BYTE_ELEMENTS> { | 1408 EXTERNAL_UNSIGNED_BYTE_ELEMENTS> { |
| 1466 public: | 1409 public: |
| 1467 explicit ExternalUnsignedByteElementsAccessor(const char* name) | 1410 explicit ExternalUnsignedByteElementsAccessor(const char* name) |
| 1468 : TypedElementsAccessor<ExternalUnsignedByteElementsAccessor, | 1411 : ExternalElementsAccessor<ExternalUnsignedByteElementsAccessor, |
| 1469 EXTERNAL_UNSIGNED_BYTE_ELEMENTS>(name) {} | 1412 EXTERNAL_UNSIGNED_BYTE_ELEMENTS>(name) {} |
| 1470 }; | 1413 }; |
| 1471 | 1414 |
| 1472 | 1415 |
| 1473 class ExternalShortElementsAccessor | 1416 class ExternalShortElementsAccessor |
| 1474 : public TypedElementsAccessor<ExternalShortElementsAccessor, | 1417 : public ExternalElementsAccessor<ExternalShortElementsAccessor, |
| 1475 EXTERNAL_SHORT_ELEMENTS> { | 1418 EXTERNAL_SHORT_ELEMENTS> { |
| 1476 public: | 1419 public: |
| 1477 explicit ExternalShortElementsAccessor(const char* name) | 1420 explicit ExternalShortElementsAccessor(const char* name) |
| 1478 : TypedElementsAccessor<ExternalShortElementsAccessor, | 1421 : ExternalElementsAccessor<ExternalShortElementsAccessor, |
| 1479 EXTERNAL_SHORT_ELEMENTS>(name) {} | 1422 EXTERNAL_SHORT_ELEMENTS>(name) {} |
| 1480 }; | 1423 }; |
| 1481 | 1424 |
| 1482 | 1425 |
| 1483 class ExternalUnsignedShortElementsAccessor | 1426 class ExternalUnsignedShortElementsAccessor |
| 1484 : public TypedElementsAccessor<ExternalUnsignedShortElementsAccessor, | 1427 : public ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, |
| 1485 EXTERNAL_UNSIGNED_SHORT_ELEMENTS> { | 1428 EXTERNAL_UNSIGNED_SHORT_ELEMENTS> { |
| 1486 public: | 1429 public: |
| 1487 explicit ExternalUnsignedShortElementsAccessor(const char* name) | 1430 explicit ExternalUnsignedShortElementsAccessor(const char* name) |
| 1488 : TypedElementsAccessor<ExternalUnsignedShortElementsAccessor, | 1431 : ExternalElementsAccessor<ExternalUnsignedShortElementsAccessor, |
| 1489 EXTERNAL_UNSIGNED_SHORT_ELEMENTS>(name) {} | 1432 EXTERNAL_UNSIGNED_SHORT_ELEMENTS>(name) {} |
| 1490 }; | 1433 }; |
| 1491 | 1434 |
| 1492 | 1435 |
| 1493 class ExternalIntElementsAccessor | 1436 class ExternalIntElementsAccessor |
| 1494 : public TypedElementsAccessor<ExternalIntElementsAccessor, | 1437 : public ExternalElementsAccessor<ExternalIntElementsAccessor, |
| 1495 EXTERNAL_INT_ELEMENTS> { | 1438 EXTERNAL_INT_ELEMENTS> { |
| 1496 public: | 1439 public: |
| 1497 explicit ExternalIntElementsAccessor(const char* name) | 1440 explicit ExternalIntElementsAccessor(const char* name) |
| 1498 : TypedElementsAccessor<ExternalIntElementsAccessor, | 1441 : ExternalElementsAccessor<ExternalIntElementsAccessor, |
| 1499 EXTERNAL_INT_ELEMENTS>(name) {} | 1442 EXTERNAL_INT_ELEMENTS>(name) {} |
| 1500 }; | 1443 }; |
| 1501 | 1444 |
| 1502 | 1445 |
| 1503 class ExternalUnsignedIntElementsAccessor | 1446 class ExternalUnsignedIntElementsAccessor |
| 1504 : public TypedElementsAccessor<ExternalUnsignedIntElementsAccessor, | 1447 : public ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, |
| 1505 EXTERNAL_UNSIGNED_INT_ELEMENTS> { | 1448 EXTERNAL_UNSIGNED_INT_ELEMENTS> { |
| 1506 public: | 1449 public: |
| 1507 explicit ExternalUnsignedIntElementsAccessor(const char* name) | 1450 explicit ExternalUnsignedIntElementsAccessor(const char* name) |
| 1508 : TypedElementsAccessor<ExternalUnsignedIntElementsAccessor, | 1451 : ExternalElementsAccessor<ExternalUnsignedIntElementsAccessor, |
| 1509 EXTERNAL_UNSIGNED_INT_ELEMENTS>(name) {} | 1452 EXTERNAL_UNSIGNED_INT_ELEMENTS>(name) {} |
| 1510 }; | 1453 }; |
| 1511 | 1454 |
| 1512 | 1455 |
| 1513 class ExternalFloatElementsAccessor | 1456 class ExternalFloatElementsAccessor |
| 1514 : public TypedElementsAccessor<ExternalFloatElementsAccessor, | 1457 : public ExternalElementsAccessor<ExternalFloatElementsAccessor, |
| 1515 EXTERNAL_FLOAT_ELEMENTS> { | 1458 EXTERNAL_FLOAT_ELEMENTS> { |
| 1516 public: | 1459 public: |
| 1517 explicit ExternalFloatElementsAccessor(const char* name) | 1460 explicit ExternalFloatElementsAccessor(const char* name) |
| 1518 : TypedElementsAccessor<ExternalFloatElementsAccessor, | 1461 : ExternalElementsAccessor<ExternalFloatElementsAccessor, |
| 1519 EXTERNAL_FLOAT_ELEMENTS>(name) {} | 1462 EXTERNAL_FLOAT_ELEMENTS>(name) {} |
| 1520 }; | 1463 }; |
| 1521 | 1464 |
| 1522 | 1465 |
| 1523 class ExternalDoubleElementsAccessor | 1466 class ExternalDoubleElementsAccessor |
| 1524 : public TypedElementsAccessor<ExternalDoubleElementsAccessor, | 1467 : public ExternalElementsAccessor<ExternalDoubleElementsAccessor, |
| 1525 EXTERNAL_DOUBLE_ELEMENTS> { | 1468 EXTERNAL_DOUBLE_ELEMENTS> { |
| 1526 public: | 1469 public: |
| 1527 explicit ExternalDoubleElementsAccessor(const char* name) | 1470 explicit ExternalDoubleElementsAccessor(const char* name) |
| 1528 : TypedElementsAccessor<ExternalDoubleElementsAccessor, | 1471 : ExternalElementsAccessor<ExternalDoubleElementsAccessor, |
| 1529 EXTERNAL_DOUBLE_ELEMENTS>(name) {} | 1472 EXTERNAL_DOUBLE_ELEMENTS>(name) {} |
| 1530 }; | 1473 }; |
| 1531 | 1474 |
| 1532 | 1475 |
| 1533 class PixelElementsAccessor | 1476 class PixelElementsAccessor |
| 1534 : public TypedElementsAccessor<PixelElementsAccessor, | 1477 : public ExternalElementsAccessor<PixelElementsAccessor, |
| 1535 EXTERNAL_PIXEL_ELEMENTS> { | 1478 EXTERNAL_PIXEL_ELEMENTS> { |
| 1536 public: | 1479 public: |
| 1537 explicit PixelElementsAccessor(const char* name) | 1480 explicit PixelElementsAccessor(const char* name) |
| 1538 : TypedElementsAccessor<PixelElementsAccessor, | 1481 : ExternalElementsAccessor<PixelElementsAccessor, |
| 1539 EXTERNAL_PIXEL_ELEMENTS>(name) {} | 1482 EXTERNAL_PIXEL_ELEMENTS>(name) {} |
| 1540 }; | 1483 }; |
| 1541 | 1484 |
| 1542 | 1485 |
| 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 | |
| 1617 class DictionaryElementsAccessor | 1486 class DictionaryElementsAccessor |
| 1618 : public ElementsAccessorBase<DictionaryElementsAccessor, | 1487 : public ElementsAccessorBase<DictionaryElementsAccessor, |
| 1619 ElementsKindTraits<DICTIONARY_ELEMENTS> > { | 1488 ElementsKindTraits<DICTIONARY_ELEMENTS> > { |
| 1620 public: | 1489 public: |
| 1621 explicit DictionaryElementsAccessor(const char* name) | 1490 explicit DictionaryElementsAccessor(const char* name) |
| 1622 : ElementsAccessorBase<DictionaryElementsAccessor, | 1491 : ElementsAccessorBase<DictionaryElementsAccessor, |
| 1623 ElementsKindTraits<DICTIONARY_ELEMENTS> >(name) {} | 1492 ElementsKindTraits<DICTIONARY_ELEMENTS> >(name) {} |
| 1624 | 1493 |
| 1625 // Adjusts the length of the dictionary backing store and returns the new | 1494 // Adjusts the length of the dictionary backing store and returns the new |
| 1626 // length according to ES5 section 15.4.5.2 behavior. | 1495 // length according to ES5 section 15.4.5.2 behavior. |
| (...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2189 UNREACHABLE(); | 2058 UNREACHABLE(); |
| 2190 break; | 2059 break; |
| 2191 } | 2060 } |
| 2192 | 2061 |
| 2193 array->set_elements(elms); | 2062 array->set_elements(elms); |
| 2194 array->set_length(Smi::FromInt(number_of_elements)); | 2063 array->set_length(Smi::FromInt(number_of_elements)); |
| 2195 return array; | 2064 return array; |
| 2196 } | 2065 } |
| 2197 | 2066 |
| 2198 } } // namespace v8::internal | 2067 } } // namespace v8::internal |
| OLD | NEW |