| 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 "src/allocation.h" | 8 #include "src/allocation.h" |
| 9 #include "src/assert-scope.h" | 9 #include "src/assert-scope.h" |
| 10 #include "src/builtins.h" | 10 #include "src/builtins.h" |
| (...skipping 696 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 707 FIXED_UINT8_ARRAY_TYPE, | 707 FIXED_UINT8_ARRAY_TYPE, |
| 708 FIXED_INT16_ARRAY_TYPE, | 708 FIXED_INT16_ARRAY_TYPE, |
| 709 FIXED_UINT16_ARRAY_TYPE, | 709 FIXED_UINT16_ARRAY_TYPE, |
| 710 FIXED_INT32_ARRAY_TYPE, | 710 FIXED_INT32_ARRAY_TYPE, |
| 711 FIXED_UINT32_ARRAY_TYPE, | 711 FIXED_UINT32_ARRAY_TYPE, |
| 712 FIXED_FLOAT32_ARRAY_TYPE, | 712 FIXED_FLOAT32_ARRAY_TYPE, |
| 713 FIXED_FLOAT64_ARRAY_TYPE, | 713 FIXED_FLOAT64_ARRAY_TYPE, |
| 714 FIXED_UINT8_CLAMPED_ARRAY_TYPE, // LAST_FIXED_TYPED_ARRAY_TYPE | 714 FIXED_UINT8_CLAMPED_ARRAY_TYPE, // LAST_FIXED_TYPED_ARRAY_TYPE |
| 715 | 715 |
| 716 FIXED_DOUBLE_ARRAY_TYPE, | 716 FIXED_DOUBLE_ARRAY_TYPE, |
| 717 CONSTANT_POOL_ARRAY_TYPE, |
| 717 FILLER_TYPE, // LAST_DATA_TYPE | 718 FILLER_TYPE, // LAST_DATA_TYPE |
| 718 | 719 |
| 719 // Structs. | 720 // Structs. |
| 720 DECLARED_ACCESSOR_DESCRIPTOR_TYPE, | 721 DECLARED_ACCESSOR_DESCRIPTOR_TYPE, |
| 721 DECLARED_ACCESSOR_INFO_TYPE, | 722 DECLARED_ACCESSOR_INFO_TYPE, |
| 722 EXECUTABLE_ACCESSOR_INFO_TYPE, | 723 EXECUTABLE_ACCESSOR_INFO_TYPE, |
| 723 ACCESSOR_PAIR_TYPE, | 724 ACCESSOR_PAIR_TYPE, |
| 724 ACCESS_CHECK_INFO_TYPE, | 725 ACCESS_CHECK_INFO_TYPE, |
| 725 INTERCEPTOR_INFO_TYPE, | 726 INTERCEPTOR_INFO_TYPE, |
| 726 CALL_HANDLER_INFO_TYPE, | 727 CALL_HANDLER_INFO_TYPE, |
| 727 FUNCTION_TEMPLATE_INFO_TYPE, | 728 FUNCTION_TEMPLATE_INFO_TYPE, |
| 728 OBJECT_TEMPLATE_INFO_TYPE, | 729 OBJECT_TEMPLATE_INFO_TYPE, |
| 729 SIGNATURE_INFO_TYPE, | 730 SIGNATURE_INFO_TYPE, |
| 730 TYPE_SWITCH_INFO_TYPE, | 731 TYPE_SWITCH_INFO_TYPE, |
| 731 ALLOCATION_SITE_TYPE, | 732 ALLOCATION_SITE_TYPE, |
| 732 ALLOCATION_MEMENTO_TYPE, | 733 ALLOCATION_MEMENTO_TYPE, |
| 733 SCRIPT_TYPE, | 734 SCRIPT_TYPE, |
| 734 CODE_CACHE_TYPE, | 735 CODE_CACHE_TYPE, |
| 735 POLYMORPHIC_CODE_CACHE_TYPE, | 736 POLYMORPHIC_CODE_CACHE_TYPE, |
| 736 TYPE_FEEDBACK_INFO_TYPE, | 737 TYPE_FEEDBACK_INFO_TYPE, |
| 737 ALIASED_ARGUMENTS_ENTRY_TYPE, | 738 ALIASED_ARGUMENTS_ENTRY_TYPE, |
| 738 BOX_TYPE, | 739 BOX_TYPE, |
| 739 DEBUG_INFO_TYPE, | 740 DEBUG_INFO_TYPE, |
| 740 BREAK_POINT_INFO_TYPE, | 741 BREAK_POINT_INFO_TYPE, |
| 741 | 742 |
| 742 FIXED_ARRAY_TYPE, | 743 FIXED_ARRAY_TYPE, |
| 743 CONSTANT_POOL_ARRAY_TYPE, | |
| 744 SHARED_FUNCTION_INFO_TYPE, | 744 SHARED_FUNCTION_INFO_TYPE, |
| 745 | 745 |
| 746 // All the following types are subtypes of JSReceiver, which corresponds to | 746 // All the following types are subtypes of JSReceiver, which corresponds to |
| 747 // objects in the JS sense. The first and the last type in this range are | 747 // objects in the JS sense. The first and the last type in this range are |
| 748 // the two forms of function. This organization enables using the same | 748 // the two forms of function. This organization enables using the same |
| 749 // compares for checking the JS_RECEIVER/SPEC_OBJECT range and the | 749 // compares for checking the JS_RECEIVER/SPEC_OBJECT range and the |
| 750 // NONCALLABLE_JS_OBJECT range. | 750 // NONCALLABLE_JS_OBJECT range. |
| 751 JS_FUNCTION_PROXY_TYPE, // FIRST_JS_RECEIVER_TYPE, FIRST_JS_PROXY_TYPE | 751 JS_FUNCTION_PROXY_TYPE, // FIRST_JS_RECEIVER_TYPE, FIRST_JS_PROXY_TYPE |
| 752 JS_PROXY_TYPE, // LAST_JS_PROXY_TYPE | 752 JS_PROXY_TYPE, // LAST_JS_PROXY_TYPE |
| 753 | 753 |
| (...skipping 955 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1709 | 1709 |
| 1710 // Iterates over all pointers contained in the object except the | 1710 // Iterates over all pointers contained in the object except the |
| 1711 // first map pointer. The object type is given in the first | 1711 // first map pointer. The object type is given in the first |
| 1712 // parameter. This function does not access the map pointer in the | 1712 // parameter. This function does not access the map pointer in the |
| 1713 // object, and so is safe to call while the map pointer is modified. | 1713 // object, and so is safe to call while the map pointer is modified. |
| 1714 void IterateBody(InstanceType type, int object_size, ObjectVisitor* v); | 1714 void IterateBody(InstanceType type, int object_size, ObjectVisitor* v); |
| 1715 | 1715 |
| 1716 // Returns the heap object's size in bytes | 1716 // Returns the heap object's size in bytes |
| 1717 inline int Size(); | 1717 inline int Size(); |
| 1718 | 1718 |
| 1719 // Returns true if this heap object contains only references to other |
| 1720 // heap objects. |
| 1721 inline bool ContainsPointers(); |
| 1722 |
| 1719 // Given a heap object's map pointer, returns the heap size in bytes | 1723 // Given a heap object's map pointer, returns the heap size in bytes |
| 1720 // Useful when the map pointer field is used for other purposes. | 1724 // Useful when the map pointer field is used for other purposes. |
| 1721 // GC internal. | 1725 // GC internal. |
| 1722 inline int SizeFromMap(Map* map); | 1726 inline int SizeFromMap(Map* map); |
| 1723 | 1727 |
| 1724 // Returns the field at offset in obj, as a read/write Object* reference. | 1728 // Returns the field at offset in obj, as a read/write Object* reference. |
| 1725 // Does no checking, and is safe to use during GC, while maps are invalid. | 1729 // Does no checking, and is safe to use during GC, while maps are invalid. |
| 1726 // Does not invoke write barrier, so should only be assigned to | 1730 // Does not invoke write barrier, so should only be assigned to |
| 1727 // during marking GC. | 1731 // during marking GC. |
| 1728 static inline Object** RawField(HeapObject* obj, int offset); | 1732 static inline Object** RawField(HeapObject* obj, int offset); |
| (...skipping 9482 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11211 } else { | 11215 } else { |
| 11212 value &= ~(1 << bit_position); | 11216 value &= ~(1 << bit_position); |
| 11213 } | 11217 } |
| 11214 return value; | 11218 return value; |
| 11215 } | 11219 } |
| 11216 }; | 11220 }; |
| 11217 | 11221 |
| 11218 } } // namespace v8::internal | 11222 } } // namespace v8::internal |
| 11219 | 11223 |
| 11220 #endif // V8_OBJECTS_H_ | 11224 #endif // V8_OBJECTS_H_ |
| OLD | NEW |