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

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

Issue 148043003: Add Float64x2, Float64x2List, etc... with runtime and dart2js implementations (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 10 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
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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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
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
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_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698