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

Side by Side Diff: runtime/vm/raw_object.h

Issue 11437028: Added Uint8ClampedList. COmpielr optimziations to follow in next CL. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/object_test.cc ('k') | runtime/vm/raw_object.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_RAW_OBJECT_H_ 5 #ifndef VM_RAW_OBJECT_H_
6 #define VM_RAW_OBJECT_H_ 6 #define VM_RAW_OBJECT_H_
7 7
8 #include "platform/assert.h" 8 #include "platform/assert.h"
9 #include "vm/globals.h" 9 #include "vm/globals.h"
10 #include "vm/token.h" 10 #include "vm/token.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 V(Mint) \ 56 V(Mint) \
57 V(Bigint) \ 57 V(Bigint) \
58 V(Double) \ 58 V(Double) \
59 V(Bool) \ 59 V(Bool) \
60 V(Array) \ 60 V(Array) \
61 V(ImmutableArray) \ 61 V(ImmutableArray) \
62 V(GrowableObjectArray) \ 62 V(GrowableObjectArray) \
63 V(ByteArray) \ 63 V(ByteArray) \
64 V(Int8Array) \ 64 V(Int8Array) \
65 V(Uint8Array) \ 65 V(Uint8Array) \
66 V(Uint8ClampedArray) \
66 V(Int16Array) \ 67 V(Int16Array) \
67 V(Uint16Array) \ 68 V(Uint16Array) \
68 V(Int32Array) \ 69 V(Int32Array) \
69 V(Uint32Array) \ 70 V(Uint32Array) \
70 V(Int64Array) \ 71 V(Int64Array) \
71 V(Uint64Array) \ 72 V(Uint64Array) \
72 V(Float32Array) \ 73 V(Float32Array) \
73 V(Float64Array) \ 74 V(Float64Array) \
74 V(ExternalInt8Array) \ 75 V(ExternalInt8Array) \
75 V(ExternalUint8Array) \ 76 V(ExternalUint8Array) \
77 V(ExternalUint8ClampedArray) \
76 V(ExternalInt16Array) \ 78 V(ExternalInt16Array) \
77 V(ExternalUint16Array) \ 79 V(ExternalUint16Array) \
78 V(ExternalInt32Array) \ 80 V(ExternalInt32Array) \
79 V(ExternalUint32Array) \ 81 V(ExternalUint32Array) \
80 V(ExternalInt64Array) \ 82 V(ExternalInt64Array) \
81 V(ExternalUint64Array) \ 83 V(ExternalUint64Array) \
82 V(ExternalFloat32Array) \ 84 V(ExternalFloat32Array) \
83 V(ExternalFloat64Array) \ 85 V(ExternalFloat64Array) \
84 V(Stacktrace) \ 86 V(Stacktrace) \
85 V(JSRegExp) \ 87 V(JSRegExp) \
(...skipping 1176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1262 RAW_HEAP_OBJECT_IMPLEMENTATION(Int8Array); 1264 RAW_HEAP_OBJECT_IMPLEMENTATION(Int8Array);
1263 1265
1264 // Variable length data follows here. 1266 // Variable length data follows here.
1265 int8_t data_[0]; 1267 int8_t data_[0];
1266 }; 1268 };
1267 1269
1268 1270
1269 class RawUint8Array : public RawByteArray { 1271 class RawUint8Array : public RawByteArray {
1270 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint8Array); 1272 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint8Array);
1271 1273
1274 protected:
1272 // Variable length data follows here. 1275 // Variable length data follows here.
1273 uint8_t data_[0]; 1276 uint8_t data_[0];
1274 }; 1277 };
1275 1278
1276 1279
1280 class RawUint8ClampedArray : public RawUint8Array {
1281 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint8ClampedArray);
1282 };
1283
1284
1277 class RawInt16Array : public RawByteArray { 1285 class RawInt16Array : public RawByteArray {
1278 RAW_HEAP_OBJECT_IMPLEMENTATION(Int16Array); 1286 RAW_HEAP_OBJECT_IMPLEMENTATION(Int16Array);
1279 1287
1280 // Variable length data follows here. 1288 // Variable length data follows here.
1281 int16_t data_[0]; 1289 int16_t data_[0];
1282 }; 1290 };
1283 1291
1284 1292
1285 class RawUint16Array : public RawByteArray { 1293 class RawUint16Array : public RawByteArray {
1286 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint16Array); 1294 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint16Array);
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
1377 class RawExternalInt8Array : public RawByteArray { 1385 class RawExternalInt8Array : public RawByteArray {
1378 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalInt8Array); 1386 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalInt8Array);
1379 1387
1380 ExternalByteArrayData<int8_t>* external_data_; 1388 ExternalByteArrayData<int8_t>* external_data_;
1381 }; 1389 };
1382 1390
1383 1391
1384 class RawExternalUint8Array : public RawByteArray { 1392 class RawExternalUint8Array : public RawByteArray {
1385 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint8Array); 1393 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint8Array);
1386 1394
1395 protected:
1387 ExternalByteArrayData<uint8_t>* external_data_; 1396 ExternalByteArrayData<uint8_t>* external_data_;
1388 1397
1389 friend class TokenStream; 1398 friend class TokenStream;
1390 friend class RawTokenStream; 1399 friend class RawTokenStream;
1391 }; 1400 };
1392 1401
1393 1402
1403 class RawExternalUint8ClampedArray : public RawExternalUint8Array {
1404 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint8ClampedArray);
1405 };
1406
1407
1394 class RawExternalInt16Array : public RawByteArray { 1408 class RawExternalInt16Array : public RawByteArray {
1395 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalInt16Array); 1409 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalInt16Array);
1396 1410
1397 ExternalByteArrayData<int16_t>* external_data_; 1411 ExternalByteArrayData<int16_t>* external_data_;
1398 }; 1412 };
1399 1413
1400 1414
1401 class RawExternalUint16Array : public RawByteArray { 1415 class RawExternalUint16Array : public RawByteArray {
1402 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint16Array); 1416 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint16Array);
1403 1417
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
1597 kByteArrayCid == kArrayCid + 3); 1611 kByteArrayCid == kArrayCid + 3);
1598 return (index >= kArrayCid && index < kByteArrayCid) || 1612 return (index >= kArrayCid && index < kByteArrayCid) ||
1599 IsByteArrayClassId(index); 1613 IsByteArrayClassId(index);
1600 } 1614 }
1601 1615
1602 1616
1603 inline bool RawObject::IsByteArrayClassId(intptr_t index) { 1617 inline bool RawObject::IsByteArrayClassId(intptr_t index) {
1604 // Make sure this function is updated when new ByteArray types are added. 1618 // Make sure this function is updated when new ByteArray types are added.
1605 ASSERT(kInt8ArrayCid == kByteArrayCid + 1 && 1619 ASSERT(kInt8ArrayCid == kByteArrayCid + 1 &&
1606 kUint8ArrayCid == kByteArrayCid + 2 && 1620 kUint8ArrayCid == kByteArrayCid + 2 &&
1607 kInt16ArrayCid == kByteArrayCid + 3 && 1621 kUint8ClampedArrayCid == kByteArrayCid + 3 &&
1608 kUint16ArrayCid == kByteArrayCid + 4 && 1622 kInt16ArrayCid == kByteArrayCid + 4 &&
1609 kInt32ArrayCid == kByteArrayCid + 5 && 1623 kUint16ArrayCid == kByteArrayCid + 5 &&
1610 kUint32ArrayCid == kByteArrayCid + 6 && 1624 kInt32ArrayCid == kByteArrayCid + 6 &&
1611 kInt64ArrayCid == kByteArrayCid + 7 && 1625 kUint32ArrayCid == kByteArrayCid + 7 &&
1612 kUint64ArrayCid == kByteArrayCid + 8 && 1626 kInt64ArrayCid == kByteArrayCid + 8 &&
1613 kFloat32ArrayCid == kByteArrayCid + 9 && 1627 kUint64ArrayCid == kByteArrayCid + 9 &&
1614 kFloat64ArrayCid == kByteArrayCid + 10 && 1628 kFloat32ArrayCid == kByteArrayCid + 10 &&
1615 kExternalInt8ArrayCid == kByteArrayCid + 11 && 1629 kFloat64ArrayCid == kByteArrayCid + 11 &&
1616 kExternalUint8ArrayCid == kByteArrayCid + 12 && 1630 kExternalInt8ArrayCid == kByteArrayCid + 12 &&
1617 kExternalInt16ArrayCid == kByteArrayCid + 13 && 1631 kExternalUint8ArrayCid == kByteArrayCid + 13 &&
1618 kExternalUint16ArrayCid == kByteArrayCid + 14 && 1632 kExternalUint8ClampedArrayCid == kByteArrayCid + 14 &&
1619 kExternalInt32ArrayCid == kByteArrayCid + 15 && 1633 kExternalInt16ArrayCid == kByteArrayCid + 15 &&
1620 kExternalUint32ArrayCid == kByteArrayCid + 16 && 1634 kExternalUint16ArrayCid == kByteArrayCid + 16 &&
1621 kExternalInt64ArrayCid == kByteArrayCid + 17 && 1635 kExternalInt32ArrayCid == kByteArrayCid + 17 &&
1622 kExternalUint64ArrayCid == kByteArrayCid + 18 && 1636 kExternalUint32ArrayCid == kByteArrayCid + 18 &&
1623 kExternalFloat32ArrayCid == kByteArrayCid + 19 && 1637 kExternalInt64ArrayCid == kByteArrayCid + 19 &&
1624 kExternalFloat64ArrayCid == kByteArrayCid + 20 && 1638 kExternalUint64ArrayCid == kByteArrayCid + 20 &&
1625 kStacktraceCid == kByteArrayCid + 21); 1639 kExternalFloat32ArrayCid == kByteArrayCid + 21 &&
1640 kExternalFloat64ArrayCid == kByteArrayCid + 22 &&
1641 kStacktraceCid == kByteArrayCid + 23);
1626 return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid); 1642 return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid);
1627 } 1643 }
1628 1644
1629 inline bool RawObject::IsExternalByteArrayClassId(intptr_t index) { 1645 inline bool RawObject::IsExternalByteArrayClassId(intptr_t index) {
1630 // Make sure this function is updated when new ByteArray types are added. 1646 // Make sure this function is updated when new ByteArray types are added.
1631 ASSERT(kExternalUint8ArrayCid == kExternalInt8ArrayCid + 1 && 1647 ASSERT(kExternalUint8ArrayCid == kExternalInt8ArrayCid + 1 &&
1632 kExternalInt16ArrayCid == kExternalInt8ArrayCid + 2 && 1648 kExternalUint8ClampedArrayCid == kExternalInt8ArrayCid + 2 &&
1633 kExternalUint16ArrayCid == kExternalInt8ArrayCid + 3 && 1649 kExternalInt16ArrayCid == kExternalInt8ArrayCid + 3 &&
1634 kExternalInt32ArrayCid == kExternalInt8ArrayCid + 4 && 1650 kExternalUint16ArrayCid == kExternalInt8ArrayCid + 4 &&
1635 kExternalUint32ArrayCid == kExternalInt8ArrayCid + 5 && 1651 kExternalInt32ArrayCid == kExternalInt8ArrayCid + 5 &&
1636 kExternalInt64ArrayCid == kExternalInt8ArrayCid + 6 && 1652 kExternalUint32ArrayCid == kExternalInt8ArrayCid + 6 &&
1637 kExternalUint64ArrayCid == kExternalInt8ArrayCid + 7 && 1653 kExternalInt64ArrayCid == kExternalInt8ArrayCid + 7 &&
1638 kExternalFloat32ArrayCid == kExternalInt8ArrayCid + 8 && 1654 kExternalUint64ArrayCid == kExternalInt8ArrayCid + 8 &&
1639 kExternalFloat64ArrayCid == kExternalInt8ArrayCid + 9 && 1655 kExternalFloat32ArrayCid == kExternalInt8ArrayCid + 9 &&
1640 kStacktraceCid == kExternalInt8ArrayCid + 10); 1656 kExternalFloat64ArrayCid == kExternalInt8ArrayCid + 10 &&
1657 kStacktraceCid == kExternalInt8ArrayCid + 11);
1641 return (index >= kExternalInt8ArrayCid && index <= kExternalFloat64ArrayCid); 1658 return (index >= kExternalInt8ArrayCid && index <= kExternalFloat64ArrayCid);
1642 } 1659 }
1643 1660
1644 } // namespace dart 1661 } // namespace dart
1645 1662
1646 #endif // VM_RAW_OBJECT_H_ 1663 #endif // VM_RAW_OBJECT_H_
OLDNEW
« no previous file with comments | « runtime/vm/object_test.cc ('k') | runtime/vm/raw_object.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698