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

Side by Side Diff: src/elements.cc

Issue 140793003: Revert "Implement in-heap backing store for typed arrays." (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 11 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
« no previous file with comments | « src/code-stubs.cc ('k') | src/elements-kind.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 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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/code-stubs.cc ('k') | src/elements-kind.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698