| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef V8_OBJECTS_H_ | 5 #ifndef V8_OBJECTS_H_ |
| 6 #define V8_OBJECTS_H_ | 6 #define V8_OBJECTS_H_ |
| 7 | 7 |
| 8 #include <iosfwd> | 8 #include <iosfwd> |
| 9 | 9 |
| 10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 // - InternalizedString | 114 // - InternalizedString |
| 115 // - SeqInternalizedString | 115 // - SeqInternalizedString |
| 116 // - SeqOneByteInternalizedString | 116 // - SeqOneByteInternalizedString |
| 117 // - SeqTwoByteInternalizedString | 117 // - SeqTwoByteInternalizedString |
| 118 // - ConsInternalizedString | 118 // - ConsInternalizedString |
| 119 // - ExternalInternalizedString | 119 // - ExternalInternalizedString |
| 120 // - ExternalOneByteInternalizedString | 120 // - ExternalOneByteInternalizedString |
| 121 // - ExternalTwoByteInternalizedString | 121 // - ExternalTwoByteInternalizedString |
| 122 // - Symbol | 122 // - Symbol |
| 123 // - HeapNumber | 123 // - HeapNumber |
| 124 // - Float32x4 |
| 124 // - Cell | 125 // - Cell |
| 125 // - PropertyCell | 126 // - PropertyCell |
| 126 // - Code | 127 // - Code |
| 127 // - Map | 128 // - Map |
| 128 // - Oddball | 129 // - Oddball |
| 129 // - Foreign | 130 // - Foreign |
| 130 // - SharedFunctionInfo | 131 // - SharedFunctionInfo |
| 131 // - Struct | 132 // - Struct |
| 132 // - Box | 133 // - Box |
| 133 // - AccessorInfo | 134 // - AccessorInfo |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 387 V(SYMBOL_TYPE) \ | 388 V(SYMBOL_TYPE) \ |
| 388 \ | 389 \ |
| 389 V(MAP_TYPE) \ | 390 V(MAP_TYPE) \ |
| 390 V(CODE_TYPE) \ | 391 V(CODE_TYPE) \ |
| 391 V(ODDBALL_TYPE) \ | 392 V(ODDBALL_TYPE) \ |
| 392 V(CELL_TYPE) \ | 393 V(CELL_TYPE) \ |
| 393 V(PROPERTY_CELL_TYPE) \ | 394 V(PROPERTY_CELL_TYPE) \ |
| 394 \ | 395 \ |
| 395 V(HEAP_NUMBER_TYPE) \ | 396 V(HEAP_NUMBER_TYPE) \ |
| 396 V(MUTABLE_HEAP_NUMBER_TYPE) \ | 397 V(MUTABLE_HEAP_NUMBER_TYPE) \ |
| 398 V(FLOAT32X4_TYPE) \ |
| 397 V(FOREIGN_TYPE) \ | 399 V(FOREIGN_TYPE) \ |
| 398 V(BYTE_ARRAY_TYPE) \ | 400 V(BYTE_ARRAY_TYPE) \ |
| 399 V(FREE_SPACE_TYPE) \ | 401 V(FREE_SPACE_TYPE) \ |
| 400 /* Note: the order of these external array */ \ | 402 /* Note: the order of these external array */ \ |
| 401 /* types is relied upon in */ \ | 403 /* types is relied upon in */ \ |
| 402 /* Object::IsExternalArray(). */ \ | 404 /* Object::IsExternalArray(). */ \ |
| 403 V(EXTERNAL_INT8_ARRAY_TYPE) \ | 405 V(EXTERNAL_INT8_ARRAY_TYPE) \ |
| 404 V(EXTERNAL_UINT8_ARRAY_TYPE) \ | 406 V(EXTERNAL_UINT8_ARRAY_TYPE) \ |
| 405 V(EXTERNAL_INT16_ARRAY_TYPE) \ | 407 V(EXTERNAL_INT16_ARRAY_TYPE) \ |
| 406 V(EXTERNAL_UINT16_ARRAY_TYPE) \ | 408 V(EXTERNAL_UINT16_ARRAY_TYPE) \ |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 | 685 |
| 684 // Objects allocated in their own spaces (never in new space). | 686 // Objects allocated in their own spaces (never in new space). |
| 685 MAP_TYPE, | 687 MAP_TYPE, |
| 686 CODE_TYPE, | 688 CODE_TYPE, |
| 687 ODDBALL_TYPE, | 689 ODDBALL_TYPE, |
| 688 | 690 |
| 689 // "Data", objects that cannot contain non-map-word pointers to heap | 691 // "Data", objects that cannot contain non-map-word pointers to heap |
| 690 // objects. | 692 // objects. |
| 691 HEAP_NUMBER_TYPE, | 693 HEAP_NUMBER_TYPE, |
| 692 MUTABLE_HEAP_NUMBER_TYPE, | 694 MUTABLE_HEAP_NUMBER_TYPE, |
| 695 FLOAT32X4_TYPE, // FIRST_SIMD_TYPE, LAST_SIMD_TYPE |
| 693 FOREIGN_TYPE, | 696 FOREIGN_TYPE, |
| 694 BYTE_ARRAY_TYPE, | 697 BYTE_ARRAY_TYPE, |
| 695 FREE_SPACE_TYPE, | 698 FREE_SPACE_TYPE, |
| 696 EXTERNAL_INT8_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE | 699 EXTERNAL_INT8_ARRAY_TYPE, // FIRST_EXTERNAL_ARRAY_TYPE |
| 697 EXTERNAL_UINT8_ARRAY_TYPE, | 700 EXTERNAL_UINT8_ARRAY_TYPE, |
| 698 EXTERNAL_INT16_ARRAY_TYPE, | 701 EXTERNAL_INT16_ARRAY_TYPE, |
| 699 EXTERNAL_UINT16_ARRAY_TYPE, | 702 EXTERNAL_UINT16_ARRAY_TYPE, |
| 700 EXTERNAL_INT32_ARRAY_TYPE, | 703 EXTERNAL_INT32_ARRAY_TYPE, |
| 701 EXTERNAL_UINT32_ARRAY_TYPE, | 704 EXTERNAL_UINT32_ARRAY_TYPE, |
| 702 EXTERNAL_FLOAT32_ARRAY_TYPE, | 705 EXTERNAL_FLOAT32_ARRAY_TYPE, |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 775 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE | 778 JS_FUNCTION_TYPE, // LAST_JS_OBJECT_TYPE, LAST_JS_RECEIVER_TYPE |
| 776 | 779 |
| 777 // Pseudo-types | 780 // Pseudo-types |
| 778 FIRST_TYPE = 0x0, | 781 FIRST_TYPE = 0x0, |
| 779 LAST_TYPE = JS_FUNCTION_TYPE, | 782 LAST_TYPE = JS_FUNCTION_TYPE, |
| 780 FIRST_NAME_TYPE = FIRST_TYPE, | 783 FIRST_NAME_TYPE = FIRST_TYPE, |
| 781 LAST_NAME_TYPE = SYMBOL_TYPE, | 784 LAST_NAME_TYPE = SYMBOL_TYPE, |
| 782 FIRST_UNIQUE_NAME_TYPE = INTERNALIZED_STRING_TYPE, | 785 FIRST_UNIQUE_NAME_TYPE = INTERNALIZED_STRING_TYPE, |
| 783 LAST_UNIQUE_NAME_TYPE = SYMBOL_TYPE, | 786 LAST_UNIQUE_NAME_TYPE = SYMBOL_TYPE, |
| 784 FIRST_NONSTRING_TYPE = SYMBOL_TYPE, | 787 FIRST_NONSTRING_TYPE = SYMBOL_TYPE, |
| 788 // Boundaries for testing for a SIMD type. |
| 789 FIRST_SIMD_TYPE = FLOAT32X4_TYPE, |
| 790 LAST_SIMD_TYPE = FLOAT32X4_TYPE, |
| 785 // Boundaries for testing for an external array. | 791 // Boundaries for testing for an external array. |
| 786 FIRST_EXTERNAL_ARRAY_TYPE = EXTERNAL_INT8_ARRAY_TYPE, | 792 FIRST_EXTERNAL_ARRAY_TYPE = EXTERNAL_INT8_ARRAY_TYPE, |
| 787 LAST_EXTERNAL_ARRAY_TYPE = EXTERNAL_UINT8_CLAMPED_ARRAY_TYPE, | 793 LAST_EXTERNAL_ARRAY_TYPE = EXTERNAL_UINT8_CLAMPED_ARRAY_TYPE, |
| 788 // Boundaries for testing for a fixed typed array. | 794 // Boundaries for testing for a fixed typed array. |
| 789 FIRST_FIXED_TYPED_ARRAY_TYPE = FIXED_INT8_ARRAY_TYPE, | 795 FIRST_FIXED_TYPED_ARRAY_TYPE = FIXED_INT8_ARRAY_TYPE, |
| 790 LAST_FIXED_TYPED_ARRAY_TYPE = FIXED_UINT8_CLAMPED_ARRAY_TYPE, | 796 LAST_FIXED_TYPED_ARRAY_TYPE = FIXED_UINT8_CLAMPED_ARRAY_TYPE, |
| 791 // Boundary for promotion to old space. | 797 // Boundary for promotion to old space. |
| 792 LAST_DATA_TYPE = FILLER_TYPE, | 798 LAST_DATA_TYPE = FILLER_TYPE, |
| 793 // Boundary for objects represented as JSReceiver (i.e. JSObject or JSProxy). | 799 // Boundary for objects represented as JSReceiver (i.e. JSObject or JSProxy). |
| 794 // Note that there is no range for JSObject or JSProxy, since their subtypes | 800 // Note that there is no range for JSObject or JSProxy, since their subtypes |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 941 V(FixedTypedArrayBase) \ | 947 V(FixedTypedArrayBase) \ |
| 942 V(FixedUint8Array) \ | 948 V(FixedUint8Array) \ |
| 943 V(FixedInt8Array) \ | 949 V(FixedInt8Array) \ |
| 944 V(FixedUint16Array) \ | 950 V(FixedUint16Array) \ |
| 945 V(FixedInt16Array) \ | 951 V(FixedInt16Array) \ |
| 946 V(FixedUint32Array) \ | 952 V(FixedUint32Array) \ |
| 947 V(FixedInt32Array) \ | 953 V(FixedInt32Array) \ |
| 948 V(FixedFloat32Array) \ | 954 V(FixedFloat32Array) \ |
| 949 V(FixedFloat64Array) \ | 955 V(FixedFloat64Array) \ |
| 950 V(FixedUint8ClampedArray) \ | 956 V(FixedUint8ClampedArray) \ |
| 957 V(Float32x4) \ |
| 951 V(ByteArray) \ | 958 V(ByteArray) \ |
| 952 V(FreeSpace) \ | 959 V(FreeSpace) \ |
| 953 V(JSReceiver) \ | 960 V(JSReceiver) \ |
| 954 V(JSObject) \ | 961 V(JSObject) \ |
| 955 V(JSContextExtensionObject) \ | 962 V(JSContextExtensionObject) \ |
| 956 V(JSGeneratorObject) \ | 963 V(JSGeneratorObject) \ |
| 957 V(JSModule) \ | 964 V(JSModule) \ |
| 958 V(LayoutDescriptor) \ | 965 V(LayoutDescriptor) \ |
| 959 V(Map) \ | 966 V(Map) \ |
| 960 V(DescriptorArray) \ | 967 V(DescriptorArray) \ |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1603 static const int kInfinityOrNanExponent = | 1610 static const int kInfinityOrNanExponent = |
| 1604 (kExponentMask >> kExponentShift) - kExponentBias; | 1611 (kExponentMask >> kExponentShift) - kExponentBias; |
| 1605 static const int kMantissaBitsInTopWord = 20; | 1612 static const int kMantissaBitsInTopWord = 20; |
| 1606 static const int kNonMantissaBitsInTopWord = 12; | 1613 static const int kNonMantissaBitsInTopWord = 12; |
| 1607 | 1614 |
| 1608 private: | 1615 private: |
| 1609 DISALLOW_IMPLICIT_CONSTRUCTORS(HeapNumber); | 1616 DISALLOW_IMPLICIT_CONSTRUCTORS(HeapNumber); |
| 1610 }; | 1617 }; |
| 1611 | 1618 |
| 1612 | 1619 |
| 1620 // The Float32x4 class describes heap allocated SIMD values holding 4 32-bit |
| 1621 // IEEE floats. |
| 1622 class Float32x4 : public HeapObject { |
| 1623 public: |
| 1624 inline float get_lane(int lane) const; |
| 1625 inline void set_lane(int lane, float value); |
| 1626 |
| 1627 DECLARE_CAST(Float32x4) |
| 1628 |
| 1629 // Dispatched behavior. |
| 1630 void Float32x4Print(std::ostream& os); // NOLINT |
| 1631 DECLARE_VERIFIER(Float32x4) |
| 1632 |
| 1633 // Layout description. |
| 1634 static const int kValueOffset = HeapObject::kHeaderSize; |
| 1635 static const int kSize = kValueOffset + kSimd128Size; |
| 1636 |
| 1637 private: |
| 1638 DISALLOW_IMPLICIT_CONSTRUCTORS(Float32x4); |
| 1639 }; |
| 1640 |
| 1641 |
| 1613 enum EnsureElementsMode { | 1642 enum EnsureElementsMode { |
| 1614 DONT_ALLOW_DOUBLE_ELEMENTS, | 1643 DONT_ALLOW_DOUBLE_ELEMENTS, |
| 1615 ALLOW_COPIED_DOUBLE_ELEMENTS, | 1644 ALLOW_COPIED_DOUBLE_ELEMENTS, |
| 1616 ALLOW_CONVERTED_DOUBLE_ELEMENTS | 1645 ALLOW_CONVERTED_DOUBLE_ELEMENTS |
| 1617 }; | 1646 }; |
| 1618 | 1647 |
| 1619 | 1648 |
| 1620 // Indicates whether a property should be set or (re)defined. Setting of a | 1649 // Indicates whether a property should be set or (re)defined. Setting of a |
| 1621 // property causes attributes to remain unchanged, writability to be checked | 1650 // property causes attributes to remain unchanged, writability to be checked |
| 1622 // and callbacks to be called. Defining of a property causes attributes to | 1651 // and callbacks to be called. Defining of a property causes attributes to |
| (...skipping 9524 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11147 } else { | 11176 } else { |
| 11148 value &= ~(1 << bit_position); | 11177 value &= ~(1 << bit_position); |
| 11149 } | 11178 } |
| 11150 return value; | 11179 return value; |
| 11151 } | 11180 } |
| 11152 }; | 11181 }; |
| 11153 | 11182 |
| 11154 } } // namespace v8::internal | 11183 } } // namespace v8::internal |
| 11155 | 11184 |
| 11156 #endif // V8_OBJECTS_H_ | 11185 #endif // V8_OBJECTS_H_ |
| OLD | NEW |