OLD | NEW |
---|---|
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 Loading... | |
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 1181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
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 |
1272 // Variable length data follows here. | 1274 // Variable length data follows here. |
1273 uint8_t data_[0]; | 1275 uint8_t data_[0]; |
1274 }; | 1276 }; |
1275 | 1277 |
1276 | 1278 |
1279 class RawUint8ClampedArray : public RawByteArray { | |
siva
2012/12/06 01:31:13
I would make this a subclass of RawUint8Array
and
srdjan
2012/12/06 19:23:14
Done.
| |
1280 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint8ClampedArray); | |
1281 | |
1282 // Variable length data follows here. | |
1283 uint8_t data_[0]; | |
1284 }; | |
1285 | |
1286 | |
1277 class RawInt16Array : public RawByteArray { | 1287 class RawInt16Array : public RawByteArray { |
1278 RAW_HEAP_OBJECT_IMPLEMENTATION(Int16Array); | 1288 RAW_HEAP_OBJECT_IMPLEMENTATION(Int16Array); |
1279 | 1289 |
1280 // Variable length data follows here. | 1290 // Variable length data follows here. |
1281 int16_t data_[0]; | 1291 int16_t data_[0]; |
1282 }; | 1292 }; |
1283 | 1293 |
1284 | 1294 |
1285 class RawUint16Array : public RawByteArray { | 1295 class RawUint16Array : public RawByteArray { |
1286 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint16Array); | 1296 RAW_HEAP_OBJECT_IMPLEMENTATION(Uint16Array); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1384 class RawExternalUint8Array : public RawByteArray { | 1394 class RawExternalUint8Array : public RawByteArray { |
1385 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint8Array); | 1395 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint8Array); |
1386 | 1396 |
1387 ExternalByteArrayData<uint8_t>* external_data_; | 1397 ExternalByteArrayData<uint8_t>* external_data_; |
1388 | 1398 |
1389 friend class TokenStream; | 1399 friend class TokenStream; |
1390 friend class RawTokenStream; | 1400 friend class RawTokenStream; |
1391 }; | 1401 }; |
1392 | 1402 |
1393 | 1403 |
1404 class RawExternalUint8ClampedArray : public RawByteArray { | |
siva
2012/12/06 01:31:13
Ditto.
srdjan
2012/12/06 19:23:14
Done.
| |
1405 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint8ClampedArray); | |
1406 | |
1407 ExternalByteArrayData<uint8_t>* external_data_; | |
1408 | |
1409 friend class TokenStream; | |
1410 friend class RawTokenStream; | |
siva
2012/12/06 01:31:13
Why are these friend class stuff needed here?
srdjan
2012/12/06 19:23:14
Removed.
| |
1411 }; | |
1412 | |
1413 | |
1394 class RawExternalInt16Array : public RawByteArray { | 1414 class RawExternalInt16Array : public RawByteArray { |
1395 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalInt16Array); | 1415 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalInt16Array); |
1396 | 1416 |
1397 ExternalByteArrayData<int16_t>* external_data_; | 1417 ExternalByteArrayData<int16_t>* external_data_; |
1398 }; | 1418 }; |
1399 | 1419 |
1400 | 1420 |
1401 class RawExternalUint16Array : public RawByteArray { | 1421 class RawExternalUint16Array : public RawByteArray { |
1402 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint16Array); | 1422 RAW_HEAP_OBJECT_IMPLEMENTATION(ExternalUint16Array); |
1403 | 1423 |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1597 kByteArrayCid == kArrayCid + 3); | 1617 kByteArrayCid == kArrayCid + 3); |
1598 return (index >= kArrayCid && index < kByteArrayCid) || | 1618 return (index >= kArrayCid && index < kByteArrayCid) || |
1599 IsByteArrayClassId(index); | 1619 IsByteArrayClassId(index); |
1600 } | 1620 } |
1601 | 1621 |
1602 | 1622 |
1603 inline bool RawObject::IsByteArrayClassId(intptr_t index) { | 1623 inline bool RawObject::IsByteArrayClassId(intptr_t index) { |
1604 // Make sure this function is updated when new ByteArray types are added. | 1624 // Make sure this function is updated when new ByteArray types are added. |
1605 ASSERT(kInt8ArrayCid == kByteArrayCid + 1 && | 1625 ASSERT(kInt8ArrayCid == kByteArrayCid + 1 && |
1606 kUint8ArrayCid == kByteArrayCid + 2 && | 1626 kUint8ArrayCid == kByteArrayCid + 2 && |
1607 kInt16ArrayCid == kByteArrayCid + 3 && | 1627 kUint8ClampedArrayCid == kByteArrayCid + 3 && |
1608 kUint16ArrayCid == kByteArrayCid + 4 && | 1628 kInt16ArrayCid == kByteArrayCid + 4 && |
1609 kInt32ArrayCid == kByteArrayCid + 5 && | 1629 kUint16ArrayCid == kByteArrayCid + 5 && |
1610 kUint32ArrayCid == kByteArrayCid + 6 && | 1630 kInt32ArrayCid == kByteArrayCid + 6 && |
1611 kInt64ArrayCid == kByteArrayCid + 7 && | 1631 kUint32ArrayCid == kByteArrayCid + 7 && |
1612 kUint64ArrayCid == kByteArrayCid + 8 && | 1632 kInt64ArrayCid == kByteArrayCid + 8 && |
1613 kFloat32ArrayCid == kByteArrayCid + 9 && | 1633 kUint64ArrayCid == kByteArrayCid + 9 && |
1614 kFloat64ArrayCid == kByteArrayCid + 10 && | 1634 kFloat32ArrayCid == kByteArrayCid + 10 && |
1615 kExternalInt8ArrayCid == kByteArrayCid + 11 && | 1635 kFloat64ArrayCid == kByteArrayCid + 11 && |
1616 kExternalUint8ArrayCid == kByteArrayCid + 12 && | 1636 kExternalInt8ArrayCid == kByteArrayCid + 12 && |
1617 kExternalInt16ArrayCid == kByteArrayCid + 13 && | 1637 kExternalUint8ArrayCid == kByteArrayCid + 13 && |
1618 kExternalUint16ArrayCid == kByteArrayCid + 14 && | 1638 kExternalUint8ClampedArrayCid == kByteArrayCid + 14 && |
1619 kExternalInt32ArrayCid == kByteArrayCid + 15 && | 1639 kExternalInt16ArrayCid == kByteArrayCid + 15 && |
1620 kExternalUint32ArrayCid == kByteArrayCid + 16 && | 1640 kExternalUint16ArrayCid == kByteArrayCid + 16 && |
1621 kExternalInt64ArrayCid == kByteArrayCid + 17 && | 1641 kExternalInt32ArrayCid == kByteArrayCid + 17 && |
1622 kExternalUint64ArrayCid == kByteArrayCid + 18 && | 1642 kExternalUint32ArrayCid == kByteArrayCid + 18 && |
1623 kExternalFloat32ArrayCid == kByteArrayCid + 19 && | 1643 kExternalInt64ArrayCid == kByteArrayCid + 19 && |
1624 kExternalFloat64ArrayCid == kByteArrayCid + 20 && | 1644 kExternalUint64ArrayCid == kByteArrayCid + 20 && |
1625 kStacktraceCid == kByteArrayCid + 21); | 1645 kExternalFloat32ArrayCid == kByteArrayCid + 21 && |
1646 kExternalFloat64ArrayCid == kByteArrayCid + 22 && | |
1647 kStacktraceCid == kByteArrayCid + 23); | |
1626 return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid); | 1648 return (index >= kByteArrayCid && index <= kExternalFloat64ArrayCid); |
1627 } | 1649 } |
1628 | 1650 |
1629 inline bool RawObject::IsExternalByteArrayClassId(intptr_t index) { | 1651 inline bool RawObject::IsExternalByteArrayClassId(intptr_t index) { |
1630 // Make sure this function is updated when new ByteArray types are added. | 1652 // Make sure this function is updated when new ByteArray types are added. |
1631 ASSERT(kExternalUint8ArrayCid == kExternalInt8ArrayCid + 1 && | 1653 ASSERT(kExternalUint8ArrayCid == kExternalInt8ArrayCid + 1 && |
1632 kExternalInt16ArrayCid == kExternalInt8ArrayCid + 2 && | 1654 kExternalUint8ClampedArrayCid == kExternalInt8ArrayCid + 2 && |
1633 kExternalUint16ArrayCid == kExternalInt8ArrayCid + 3 && | 1655 kExternalInt16ArrayCid == kExternalInt8ArrayCid + 3 && |
1634 kExternalInt32ArrayCid == kExternalInt8ArrayCid + 4 && | 1656 kExternalUint16ArrayCid == kExternalInt8ArrayCid + 4 && |
1635 kExternalUint32ArrayCid == kExternalInt8ArrayCid + 5 && | 1657 kExternalInt32ArrayCid == kExternalInt8ArrayCid + 5 && |
1636 kExternalInt64ArrayCid == kExternalInt8ArrayCid + 6 && | 1658 kExternalUint32ArrayCid == kExternalInt8ArrayCid + 6 && |
1637 kExternalUint64ArrayCid == kExternalInt8ArrayCid + 7 && | 1659 kExternalInt64ArrayCid == kExternalInt8ArrayCid + 7 && |
1638 kExternalFloat32ArrayCid == kExternalInt8ArrayCid + 8 && | 1660 kExternalUint64ArrayCid == kExternalInt8ArrayCid + 8 && |
1639 kExternalFloat64ArrayCid == kExternalInt8ArrayCid + 9 && | 1661 kExternalFloat32ArrayCid == kExternalInt8ArrayCid + 9 && |
1640 kStacktraceCid == kExternalInt8ArrayCid + 10); | 1662 kExternalFloat64ArrayCid == kExternalInt8ArrayCid + 10 && |
1663 kStacktraceCid == kExternalInt8ArrayCid + 11); | |
1641 return (index >= kExternalInt8ArrayCid && index <= kExternalFloat64ArrayCid); | 1664 return (index >= kExternalInt8ArrayCid && index <= kExternalFloat64ArrayCid); |
1642 } | 1665 } |
1643 | 1666 |
1644 } // namespace dart | 1667 } // namespace dart |
1645 | 1668 |
1646 #endif // VM_RAW_OBJECT_H_ | 1669 #endif // VM_RAW_OBJECT_H_ |
OLD | NEW |