| 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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 63 V(Bool) \ | 63 V(Bool) \ |
| 64 V(GrowableObjectArray) \ | 64 V(GrowableObjectArray) \ |
| 65 V(TypedData) \ | 65 V(TypedData) \ |
| 66 V(ExternalTypedData) \ | 66 V(ExternalTypedData) \ |
| 67 V(Stacktrace) \ | 67 V(Stacktrace) \ |
| 68 V(JSRegExp) \ | 68 V(JSRegExp) \ |
| 69 V(WeakProperty) \ | 69 V(WeakProperty) \ |
| 70 V(MirrorReference) \ | 70 V(MirrorReference) \ |
| 71 V(Float32x4) \ | 71 V(Float32x4) \ |
| 72 V(Int32x4) \ | 72 V(Int32x4) \ |
| 73 V(Float64x2) \ |
| 73 | 74 |
| 74 #define CLASS_LIST_ARRAYS(V) \ | 75 #define CLASS_LIST_ARRAYS(V) \ |
| 75 V(Array) \ | 76 V(Array) \ |
| 76 V(ImmutableArray) \ | 77 V(ImmutableArray) \ |
| 77 | 78 |
| 78 #define CLASS_LIST_STRINGS(V) \ | 79 #define CLASS_LIST_STRINGS(V) \ |
| 79 V(String) \ | 80 V(String) \ |
| 80 V(OneByteString) \ | 81 V(OneByteString) \ |
| 81 V(TwoByteString) \ | 82 V(TwoByteString) \ |
| 82 V(ExternalOneByteString) \ | 83 V(ExternalOneByteString) \ |
| 83 V(ExternalTwoByteString) | 84 V(ExternalTwoByteString) |
| 84 | 85 |
| 85 #define CLASS_LIST_TYPED_DATA(V) \ | 86 #define CLASS_LIST_TYPED_DATA(V) \ |
| 86 V(Int8Array) \ | 87 V(Int8Array) \ |
| 87 V(Uint8Array) \ | 88 V(Uint8Array) \ |
| 88 V(Uint8ClampedArray) \ | 89 V(Uint8ClampedArray) \ |
| 89 V(Int16Array) \ | 90 V(Int16Array) \ |
| 90 V(Uint16Array) \ | 91 V(Uint16Array) \ |
| 91 V(Int32Array) \ | 92 V(Int32Array) \ |
| 92 V(Uint32Array) \ | 93 V(Uint32Array) \ |
| 93 V(Int64Array) \ | 94 V(Int64Array) \ |
| 94 V(Uint64Array) \ | 95 V(Uint64Array) \ |
| 95 V(Float32Array) \ | 96 V(Float32Array) \ |
| 96 V(Float64Array) \ | 97 V(Float64Array) \ |
| 97 V(Float32x4Array) \ | 98 V(Float32x4Array) \ |
| 98 V(Int32x4Array) \ | 99 V(Int32x4Array) \ |
| 100 V(Float64x2Array) \ |
| 99 | 101 |
| 100 #define CLASS_LIST_FOR_HANDLES(V) \ | 102 #define CLASS_LIST_FOR_HANDLES(V) \ |
| 101 CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY(V) \ | 103 CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY(V) \ |
| 102 V(Array) \ | 104 V(Array) \ |
| 103 V(String) | 105 V(String) |
| 104 | 106 |
| 105 #define CLASS_LIST_NO_OBJECT(V) \ | 107 #define CLASS_LIST_NO_OBJECT(V) \ |
| 106 CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY(V) \ | 108 CLASS_LIST_NO_OBJECT_NOR_STRING_NOR_ARRAY(V) \ |
| 107 CLASS_LIST_ARRAYS(V) \ | 109 CLASS_LIST_ARRAYS(V) \ |
| 108 CLASS_LIST_STRINGS(V) | 110 CLASS_LIST_STRINGS(V) |
| (...skipping 1336 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1445 | 1447 |
| 1446 friend class SnapshotReader; | 1448 friend class SnapshotReader; |
| 1447 public: | 1449 public: |
| 1448 int32_t x() const { return value_[0]; } | 1450 int32_t x() const { return value_[0]; } |
| 1449 int32_t y() const { return value_[1]; } | 1451 int32_t y() const { return value_[1]; } |
| 1450 int32_t z() const { return value_[2]; } | 1452 int32_t z() const { return value_[2]; } |
| 1451 int32_t w() const { return value_[3]; } | 1453 int32_t w() const { return value_[3]; } |
| 1452 }; | 1454 }; |
| 1453 | 1455 |
| 1454 | 1456 |
| 1457 class RawFloat64x2 : public RawInstance { |
| 1458 RAW_HEAP_OBJECT_IMPLEMENTATION(Float64x2); |
| 1459 |
| 1460 double value_[2]; |
| 1461 |
| 1462 friend class SnapshotReader; |
| 1463 public: |
| 1464 double x() const { return value_[0]; } |
| 1465 double y() const { return value_[1]; } |
| 1466 }; |
| 1467 |
| 1468 |
| 1455 // Define an aliases for intptr_t. | 1469 // Define an aliases for intptr_t. |
| 1456 #if defined(ARCH_IS_32_BIT) | 1470 #if defined(ARCH_IS_32_BIT) |
| 1457 #define kIntPtrCid kTypedDataInt32ArrayCid | 1471 #define kIntPtrCid kTypedDataInt32ArrayCid |
| 1458 #define SetIntPtr SetInt32 | 1472 #define SetIntPtr SetInt32 |
| 1459 #elif defined(ARCH_IS_64_BIT) | 1473 #elif defined(ARCH_IS_64_BIT) |
| 1460 #define kIntPtrCid kTypedDataInt64ArrayCid | 1474 #define kIntPtrCid kTypedDataInt64ArrayCid |
| 1461 #define SetIntPtr SetInt64 | 1475 #define SetIntPtr SetInt64 |
| 1462 #else | 1476 #else |
| 1463 #error Architecture is not 32-bit or 64-bit. | 1477 #error Architecture is not 32-bit or 64-bit. |
| 1464 #endif // ARCH_IS_32_BIT | 1478 #endif // ARCH_IS_32_BIT |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1670 kTypedDataInt16ArrayCid == kTypedDataInt8ArrayCid + 3 && | 1684 kTypedDataInt16ArrayCid == kTypedDataInt8ArrayCid + 3 && |
| 1671 kTypedDataUint16ArrayCid == kTypedDataInt8ArrayCid + 4 && | 1685 kTypedDataUint16ArrayCid == kTypedDataInt8ArrayCid + 4 && |
| 1672 kTypedDataInt32ArrayCid == kTypedDataInt8ArrayCid + 5 && | 1686 kTypedDataInt32ArrayCid == kTypedDataInt8ArrayCid + 5 && |
| 1673 kTypedDataUint32ArrayCid == kTypedDataInt8ArrayCid + 6 && | 1687 kTypedDataUint32ArrayCid == kTypedDataInt8ArrayCid + 6 && |
| 1674 kTypedDataInt64ArrayCid == kTypedDataInt8ArrayCid + 7 && | 1688 kTypedDataInt64ArrayCid == kTypedDataInt8ArrayCid + 7 && |
| 1675 kTypedDataUint64ArrayCid == kTypedDataInt8ArrayCid + 8 && | 1689 kTypedDataUint64ArrayCid == kTypedDataInt8ArrayCid + 8 && |
| 1676 kTypedDataFloat32ArrayCid == kTypedDataInt8ArrayCid + 9 && | 1690 kTypedDataFloat32ArrayCid == kTypedDataInt8ArrayCid + 9 && |
| 1677 kTypedDataFloat64ArrayCid == kTypedDataInt8ArrayCid + 10 && | 1691 kTypedDataFloat64ArrayCid == kTypedDataInt8ArrayCid + 10 && |
| 1678 kTypedDataFloat32x4ArrayCid == kTypedDataInt8ArrayCid + 11 && | 1692 kTypedDataFloat32x4ArrayCid == kTypedDataInt8ArrayCid + 11 && |
| 1679 kTypedDataInt32x4ArrayCid == kTypedDataInt8ArrayCid + 12 && | 1693 kTypedDataInt32x4ArrayCid == kTypedDataInt8ArrayCid + 12 && |
| 1680 kTypedDataInt8ArrayViewCid == kTypedDataInt8ArrayCid + 13); | 1694 kTypedDataFloat64x2ArrayCid == kTypedDataInt8ArrayCid + 13 && |
| 1695 kTypedDataInt8ArrayViewCid == kTypedDataInt8ArrayCid + 14); |
| 1681 return (index >= kTypedDataInt8ArrayCid && | 1696 return (index >= kTypedDataInt8ArrayCid && |
| 1682 index <= kTypedDataInt32x4ArrayCid); | 1697 index <= kTypedDataFloat64x2ArrayCid); |
| 1683 } | 1698 } |
| 1684 | 1699 |
| 1685 | 1700 |
| 1686 inline bool RawObject::IsTypedDataViewClassId(intptr_t index) { | 1701 inline bool RawObject::IsTypedDataViewClassId(intptr_t index) { |
| 1687 // Make sure this is updated when new TypedData types are added. | 1702 // Make sure this is updated when new TypedData types are added. |
| 1688 ASSERT(kTypedDataUint8ArrayViewCid == kTypedDataInt8ArrayViewCid + 1 && | 1703 ASSERT(kTypedDataUint8ArrayViewCid == kTypedDataInt8ArrayViewCid + 1 && |
| 1689 kTypedDataUint8ClampedArrayViewCid == kTypedDataInt8ArrayViewCid + 2 && | 1704 kTypedDataUint8ClampedArrayViewCid == kTypedDataInt8ArrayViewCid + 2 && |
| 1690 kTypedDataInt16ArrayViewCid == kTypedDataInt8ArrayViewCid + 3 && | 1705 kTypedDataInt16ArrayViewCid == kTypedDataInt8ArrayViewCid + 3 && |
| 1691 kTypedDataUint16ArrayViewCid == kTypedDataInt8ArrayViewCid + 4 && | 1706 kTypedDataUint16ArrayViewCid == kTypedDataInt8ArrayViewCid + 4 && |
| 1692 kTypedDataInt32ArrayViewCid == kTypedDataInt8ArrayViewCid + 5 && | 1707 kTypedDataInt32ArrayViewCid == kTypedDataInt8ArrayViewCid + 5 && |
| 1693 kTypedDataUint32ArrayViewCid == kTypedDataInt8ArrayViewCid + 6 && | 1708 kTypedDataUint32ArrayViewCid == kTypedDataInt8ArrayViewCid + 6 && |
| 1694 kTypedDataInt64ArrayViewCid == kTypedDataInt8ArrayViewCid + 7 && | 1709 kTypedDataInt64ArrayViewCid == kTypedDataInt8ArrayViewCid + 7 && |
| 1695 kTypedDataUint64ArrayViewCid == kTypedDataInt8ArrayViewCid + 8 && | 1710 kTypedDataUint64ArrayViewCid == kTypedDataInt8ArrayViewCid + 8 && |
| 1696 kTypedDataFloat32ArrayViewCid == kTypedDataInt8ArrayViewCid + 9 && | 1711 kTypedDataFloat32ArrayViewCid == kTypedDataInt8ArrayViewCid + 9 && |
| 1697 kTypedDataFloat64ArrayViewCid == kTypedDataInt8ArrayViewCid + 10 && | 1712 kTypedDataFloat64ArrayViewCid == kTypedDataInt8ArrayViewCid + 10 && |
| 1698 kTypedDataFloat32x4ArrayViewCid == kTypedDataInt8ArrayViewCid + 11 && | 1713 kTypedDataFloat32x4ArrayViewCid == kTypedDataInt8ArrayViewCid + 11 && |
| 1699 kTypedDataInt32x4ArrayViewCid == kTypedDataInt8ArrayViewCid + 12 && | 1714 kTypedDataInt32x4ArrayViewCid == kTypedDataInt8ArrayViewCid + 12 && |
| 1700 kByteDataViewCid == kTypedDataInt8ArrayViewCid + 13 && | 1715 kTypedDataFloat64x2ArrayViewCid == kTypedDataInt8ArrayViewCid + 13 && |
| 1701 kExternalTypedDataInt8ArrayCid == kTypedDataInt8ArrayViewCid + 14); | 1716 kByteDataViewCid == kTypedDataInt8ArrayViewCid + 14 && |
| 1717 kExternalTypedDataInt8ArrayCid == kTypedDataInt8ArrayViewCid + 15); |
| 1702 return (index >= kTypedDataInt8ArrayViewCid && | 1718 return (index >= kTypedDataInt8ArrayViewCid && |
| 1703 index <= kByteDataViewCid); | 1719 index <= kByteDataViewCid); |
| 1704 } | 1720 } |
| 1705 | 1721 |
| 1706 | 1722 |
| 1707 inline bool RawObject::IsExternalTypedDataClassId(intptr_t index) { | 1723 inline bool RawObject::IsExternalTypedDataClassId(intptr_t index) { |
| 1708 // Make sure this is updated when new ExternalTypedData types are added. | 1724 // Make sure this is updated when new ExternalTypedData types are added. |
| 1709 ASSERT((kExternalTypedDataUint8ArrayCid == | 1725 ASSERT((kExternalTypedDataUint8ArrayCid == |
| 1710 kExternalTypedDataInt8ArrayCid + 1) && | 1726 kExternalTypedDataInt8ArrayCid + 1) && |
| 1711 (kExternalTypedDataUint8ClampedArrayCid == | 1727 (kExternalTypedDataUint8ClampedArrayCid == |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1723 (kExternalTypedDataUint64ArrayCid == | 1739 (kExternalTypedDataUint64ArrayCid == |
| 1724 kExternalTypedDataInt8ArrayCid + 8) && | 1740 kExternalTypedDataInt8ArrayCid + 8) && |
| 1725 (kExternalTypedDataFloat32ArrayCid == | 1741 (kExternalTypedDataFloat32ArrayCid == |
| 1726 kExternalTypedDataInt8ArrayCid + 9) && | 1742 kExternalTypedDataInt8ArrayCid + 9) && |
| 1727 (kExternalTypedDataFloat64ArrayCid == | 1743 (kExternalTypedDataFloat64ArrayCid == |
| 1728 kExternalTypedDataInt8ArrayCid + 10) && | 1744 kExternalTypedDataInt8ArrayCid + 10) && |
| 1729 (kExternalTypedDataFloat32x4ArrayCid == | 1745 (kExternalTypedDataFloat32x4ArrayCid == |
| 1730 kExternalTypedDataInt8ArrayCid + 11) && | 1746 kExternalTypedDataInt8ArrayCid + 11) && |
| 1731 (kExternalTypedDataInt32x4ArrayCid == | 1747 (kExternalTypedDataInt32x4ArrayCid == |
| 1732 kExternalTypedDataInt8ArrayCid + 12) && | 1748 kExternalTypedDataInt8ArrayCid + 12) && |
| 1733 (kNullCid == kExternalTypedDataInt8ArrayCid + 13)); | 1749 (kExternalTypedDataFloat64x2ArrayCid == |
| 1750 kExternalTypedDataInt8ArrayCid + 13) && |
| 1751 (kNullCid == kExternalTypedDataInt8ArrayCid + 14)); |
| 1734 return (index >= kExternalTypedDataInt8ArrayCid && | 1752 return (index >= kExternalTypedDataInt8ArrayCid && |
| 1735 index <= kExternalTypedDataInt32x4ArrayCid); | 1753 index <= kExternalTypedDataFloat64x2ArrayCid); |
| 1736 } | 1754 } |
| 1737 | 1755 |
| 1738 | 1756 |
| 1739 inline bool RawObject::IsInternalVMdefinedClassId(intptr_t index) { | 1757 inline bool RawObject::IsInternalVMdefinedClassId(intptr_t index) { |
| 1740 return ((index < kNumPredefinedCids) && | 1758 return ((index < kNumPredefinedCids) && |
| 1741 !RawObject::IsTypedDataViewClassId(index)); | 1759 !RawObject::IsTypedDataViewClassId(index)); |
| 1742 } | 1760 } |
| 1743 | 1761 |
| 1744 | 1762 |
| 1745 | 1763 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 1760 (index == kCodeCid) || | 1778 (index == kCodeCid) || |
| 1761 (index == kContextScopeCid) || | 1779 (index == kContextScopeCid) || |
| 1762 (index == kInstanceCid) || | 1780 (index == kInstanceCid) || |
| 1763 (index == kBigintCid) || | 1781 (index == kBigintCid) || |
| 1764 (index == kJSRegExpCid); | 1782 (index == kJSRegExpCid); |
| 1765 } | 1783 } |
| 1766 | 1784 |
| 1767 | 1785 |
| 1768 inline intptr_t RawObject::NumberOfTypedDataClasses() { | 1786 inline intptr_t RawObject::NumberOfTypedDataClasses() { |
| 1769 // Make sure this is updated when new TypedData types are added. | 1787 // Make sure this is updated when new TypedData types are added. |
| 1770 ASSERT(kTypedDataInt8ArrayViewCid == kTypedDataInt8ArrayCid + 13); | 1788 ASSERT(kTypedDataInt8ArrayViewCid == kTypedDataInt8ArrayCid + 14); |
| 1771 ASSERT(kExternalTypedDataInt8ArrayCid == kTypedDataInt8ArrayViewCid + 14); | 1789 ASSERT(kExternalTypedDataInt8ArrayCid == kTypedDataInt8ArrayViewCid + 15); |
| 1772 ASSERT(kNullCid == kExternalTypedDataInt8ArrayCid + 13); | 1790 ASSERT(kNullCid == kExternalTypedDataInt8ArrayCid + 14); |
| 1773 return (kNullCid - kTypedDataInt8ArrayCid); | 1791 return (kNullCid - kTypedDataInt8ArrayCid); |
| 1774 } | 1792 } |
| 1775 | 1793 |
| 1776 } // namespace dart | 1794 } // namespace dart |
| 1777 | 1795 |
| 1778 #endif // VM_RAW_OBJECT_H_ | 1796 #endif // VM_RAW_OBJECT_H_ |
| OLD | NEW |