OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
4 // met: | 4 // met: |
5 // | 5 // |
6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
(...skipping 12 matching lines...) Expand all Loading... |
23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 23 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 24 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 25 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 26 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
27 | 27 |
28 #ifndef V8_OBJECTS_H_ | 28 #ifndef V8_OBJECTS_H_ |
29 #define V8_OBJECTS_H_ | 29 #define V8_OBJECTS_H_ |
30 | 30 |
31 #include "allocation.h" | 31 #include "allocation.h" |
32 #include "builtins.h" | 32 #include "builtins.h" |
| 33 #include "elements-kind.h" |
33 #include "list.h" | 34 #include "list.h" |
34 #include "property-details.h" | 35 #include "property-details.h" |
35 #include "smart-array-pointer.h" | 36 #include "smart-array-pointer.h" |
36 #include "unicode-inl.h" | 37 #include "unicode-inl.h" |
37 #if V8_TARGET_ARCH_ARM | 38 #if V8_TARGET_ARCH_ARM |
38 #include "arm/constants-arm.h" | 39 #include "arm/constants-arm.h" |
39 #elif V8_TARGET_ARCH_MIPS | 40 #elif V8_TARGET_ARCH_MIPS |
40 #include "mips/constants-mips.h" | 41 #include "mips/constants-mips.h" |
41 #endif | 42 #endif |
42 #include "v8checks.h" | 43 #include "v8checks.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
124 // - CodeCache | 125 // - CodeCache |
125 // | 126 // |
126 // Formats of Object*: | 127 // Formats of Object*: |
127 // Smi: [31 bit signed int] 0 | 128 // Smi: [31 bit signed int] 0 |
128 // HeapObject: [32 bit direct pointer] (4 byte aligned) | 01 | 129 // HeapObject: [32 bit direct pointer] (4 byte aligned) | 01 |
129 // Failure: [30 bit signed int] 11 | 130 // Failure: [30 bit signed int] 11 |
130 | 131 |
131 namespace v8 { | 132 namespace v8 { |
132 namespace internal { | 133 namespace internal { |
133 | 134 |
134 enum ElementsKind { | |
135 // The "fast" kind for elements that only contain SMI values. Must be first | |
136 // to make it possible to efficiently check maps for this kind. | |
137 FAST_SMI_ONLY_ELEMENTS, | |
138 | |
139 // The "fast" kind for tagged values. Must be second to make it possible to | |
140 // efficiently check maps for this and the FAST_SMI_ONLY_ELEMENTS kind | |
141 // together at once. | |
142 FAST_ELEMENTS, | |
143 | |
144 // The "fast" kind for unwrapped, non-tagged double values. | |
145 FAST_DOUBLE_ELEMENTS, | |
146 | |
147 // The "slow" kind. | |
148 DICTIONARY_ELEMENTS, | |
149 NON_STRICT_ARGUMENTS_ELEMENTS, | |
150 // The "fast" kind for external arrays | |
151 EXTERNAL_BYTE_ELEMENTS, | |
152 EXTERNAL_UNSIGNED_BYTE_ELEMENTS, | |
153 EXTERNAL_SHORT_ELEMENTS, | |
154 EXTERNAL_UNSIGNED_SHORT_ELEMENTS, | |
155 EXTERNAL_INT_ELEMENTS, | |
156 EXTERNAL_UNSIGNED_INT_ELEMENTS, | |
157 EXTERNAL_FLOAT_ELEMENTS, | |
158 EXTERNAL_DOUBLE_ELEMENTS, | |
159 EXTERNAL_PIXEL_ELEMENTS, | |
160 | |
161 // Derived constants from ElementsKind | |
162 FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND = EXTERNAL_BYTE_ELEMENTS, | |
163 LAST_EXTERNAL_ARRAY_ELEMENTS_KIND = EXTERNAL_PIXEL_ELEMENTS, | |
164 FIRST_ELEMENTS_KIND = FAST_SMI_ONLY_ELEMENTS, | |
165 LAST_ELEMENTS_KIND = EXTERNAL_PIXEL_ELEMENTS | |
166 }; | |
167 | |
168 enum CompareMapMode { | 135 enum CompareMapMode { |
169 REQUIRE_EXACT_MAP, | 136 REQUIRE_EXACT_MAP, |
170 ALLOW_ELEMENT_TRANSITION_MAPS | 137 ALLOW_ELEMENT_TRANSITION_MAPS |
171 }; | 138 }; |
172 | 139 |
173 enum KeyedAccessGrowMode { | 140 enum KeyedAccessGrowMode { |
174 DO_NOT_ALLOW_JSARRAY_GROWTH, | 141 DO_NOT_ALLOW_JSARRAY_GROWTH, |
175 ALLOW_JSARRAY_GROWTH | 142 ALLOW_JSARRAY_GROWTH |
176 }; | 143 }; |
177 | 144 |
178 const int kElementsKindCount = LAST_ELEMENTS_KIND - FIRST_ELEMENTS_KIND + 1; | |
179 | |
180 void PrintElementsKind(FILE* out, ElementsKind kind); | |
181 | |
182 inline bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, | |
183 ElementsKind to_kind); | |
184 | |
185 // Setter that skips the write barrier if mode is SKIP_WRITE_BARRIER. | 145 // Setter that skips the write barrier if mode is SKIP_WRITE_BARRIER. |
186 enum WriteBarrierMode { SKIP_WRITE_BARRIER, UPDATE_WRITE_BARRIER }; | 146 enum WriteBarrierMode { SKIP_WRITE_BARRIER, UPDATE_WRITE_BARRIER }; |
187 | 147 |
188 | 148 |
189 // PropertyNormalizationMode is used to specify whether to keep | 149 // PropertyNormalizationMode is used to specify whether to keep |
190 // inobject properties when normalizing properties of a JSObject. | 150 // inobject properties when normalizing properties of a JSObject. |
191 enum PropertyNormalizationMode { | 151 enum PropertyNormalizationMode { |
192 CLEAR_INOBJECT_PROPERTIES, | 152 CLEAR_INOBJECT_PROPERTIES, |
193 KEEP_INOBJECT_PROPERTIES | 153 KEEP_INOBJECT_PROPERTIES |
194 }; | 154 }; |
(...skipping 1308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1503 // EnsureWritableFastElements in this case. | 1463 // EnsureWritableFastElements in this case. |
1504 // | 1464 // |
1505 // In the slow mode the elements is either a NumberDictionary, an | 1465 // In the slow mode the elements is either a NumberDictionary, an |
1506 // ExternalArray, or a FixedArray parameter map for a (non-strict) | 1466 // ExternalArray, or a FixedArray parameter map for a (non-strict) |
1507 // arguments object. | 1467 // arguments object. |
1508 DECL_ACCESSORS(elements, FixedArrayBase) | 1468 DECL_ACCESSORS(elements, FixedArrayBase) |
1509 inline void initialize_elements(); | 1469 inline void initialize_elements(); |
1510 MUST_USE_RESULT inline MaybeObject* ResetElements(); | 1470 MUST_USE_RESULT inline MaybeObject* ResetElements(); |
1511 inline ElementsKind GetElementsKind(); | 1471 inline ElementsKind GetElementsKind(); |
1512 inline ElementsAccessor* GetElementsAccessor(); | 1472 inline ElementsAccessor* GetElementsAccessor(); |
1513 inline bool HasFastSmiOnlyElements(); | 1473 // Returns true if an object has elements of FAST_SMI_ELEMENTS ElementsKind. |
1514 inline bool HasFastElements(); | 1474 inline bool HasFastSmiElements(); |
1515 // Returns if an object has either FAST_ELEMENT or FAST_SMI_ONLY_ELEMENT | 1475 // Returns true if an object has elements of FAST_ELEMENTS ElementsKind. |
1516 // elements. TODO(danno): Rename HasFastTypeElements to HasFastElements() and | 1476 inline bool HasFastObjectElements(); |
1517 // HasFastElements to HasFastObjectElements. | 1477 // Returns true if an object has elements of FAST_ELEMENTS or |
1518 inline bool HasFastTypeElements(); | 1478 // FAST_SMI_ONLY_ELEMENTS. |
| 1479 inline bool HasFastSmiOrObjectElements(); |
| 1480 // Returns true if an object has elements of FAST_DOUBLE_ELEMENTS |
| 1481 // ElementsKind. |
1519 inline bool HasFastDoubleElements(); | 1482 inline bool HasFastDoubleElements(); |
| 1483 // Returns true if an object has elements of FAST_HOLEY_*_ELEMENTS |
| 1484 // ElementsKind. |
| 1485 inline bool HasFastHoleyElements(); |
1520 inline bool HasNonStrictArgumentsElements(); | 1486 inline bool HasNonStrictArgumentsElements(); |
1521 inline bool HasDictionaryElements(); | 1487 inline bool HasDictionaryElements(); |
1522 inline bool HasExternalPixelElements(); | 1488 inline bool HasExternalPixelElements(); |
1523 inline bool HasExternalArrayElements(); | 1489 inline bool HasExternalArrayElements(); |
1524 inline bool HasExternalByteElements(); | 1490 inline bool HasExternalByteElements(); |
1525 inline bool HasExternalUnsignedByteElements(); | 1491 inline bool HasExternalUnsignedByteElements(); |
1526 inline bool HasExternalShortElements(); | 1492 inline bool HasExternalShortElements(); |
1527 inline bool HasExternalUnsignedShortElements(); | 1493 inline bool HasExternalUnsignedShortElements(); |
1528 inline bool HasExternalIntElements(); | 1494 inline bool HasExternalIntElements(); |
1529 inline bool HasExternalUnsignedIntElements(); | 1495 inline bool HasExternalUnsignedIntElements(); |
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1712 MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); | 1678 MUST_USE_RESULT MaybeObject* GetIdentityHash(CreationFlag flag); |
1713 MUST_USE_RESULT MaybeObject* SetIdentityHash(Object* hash, CreationFlag flag); | 1679 MUST_USE_RESULT MaybeObject* SetIdentityHash(Object* hash, CreationFlag flag); |
1714 | 1680 |
1715 static Handle<Object> DeleteProperty(Handle<JSObject> obj, | 1681 static Handle<Object> DeleteProperty(Handle<JSObject> obj, |
1716 Handle<String> name); | 1682 Handle<String> name); |
1717 MUST_USE_RESULT MaybeObject* DeleteProperty(String* name, DeleteMode mode); | 1683 MUST_USE_RESULT MaybeObject* DeleteProperty(String* name, DeleteMode mode); |
1718 | 1684 |
1719 static Handle<Object> DeleteElement(Handle<JSObject> obj, uint32_t index); | 1685 static Handle<Object> DeleteElement(Handle<JSObject> obj, uint32_t index); |
1720 MUST_USE_RESULT MaybeObject* DeleteElement(uint32_t index, DeleteMode mode); | 1686 MUST_USE_RESULT MaybeObject* DeleteElement(uint32_t index, DeleteMode mode); |
1721 | 1687 |
1722 inline void ValidateSmiOnlyElements(); | 1688 inline void ValidateElements(); |
1723 | 1689 |
1724 // Makes sure that this object can contain HeapObject as elements. | 1690 // Makes sure that this object can contain HeapObject as elements. |
1725 MUST_USE_RESULT inline MaybeObject* EnsureCanContainHeapObjectElements(); | 1691 MUST_USE_RESULT inline MaybeObject* EnsureCanContainHeapObjectElements(); |
1726 | 1692 |
1727 // Makes sure that this object can contain the specified elements. | 1693 // Makes sure that this object can contain the specified elements. |
1728 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( | 1694 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( |
1729 Object** elements, | 1695 Object** elements, |
1730 uint32_t count, | 1696 uint32_t count, |
1731 EnsureElementsMode mode); | 1697 EnsureElementsMode mode); |
1732 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( | 1698 MUST_USE_RESULT inline MaybeObject* EnsureCanContainElements( |
1733 FixedArrayBase* elements, | 1699 FixedArrayBase* elements, |
| 1700 uint32_t length, |
1734 EnsureElementsMode mode); | 1701 EnsureElementsMode mode); |
1735 MUST_USE_RESULT MaybeObject* EnsureCanContainElements( | 1702 MUST_USE_RESULT MaybeObject* EnsureCanContainElements( |
1736 Arguments* arguments, | 1703 Arguments* arguments, |
1737 uint32_t first_arg, | 1704 uint32_t first_arg, |
1738 uint32_t arg_count, | 1705 uint32_t arg_count, |
1739 EnsureElementsMode mode); | 1706 EnsureElementsMode mode); |
1740 | 1707 |
1741 // Do we want to keep the elements in fast case when increasing the | 1708 // Do we want to keep the elements in fast case when increasing the |
1742 // capacity? | 1709 // capacity? |
1743 bool ShouldConvertToSlowElements(int new_capacity); | 1710 bool ShouldConvertToSlowElements(int new_capacity); |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1822 PropertyAttributes attributes, | 1789 PropertyAttributes attributes, |
1823 StrictModeFlag strict_mode, | 1790 StrictModeFlag strict_mode, |
1824 bool check_prototype = true, | 1791 bool check_prototype = true, |
1825 SetPropertyMode set_mode = SET_PROPERTY); | 1792 SetPropertyMode set_mode = SET_PROPERTY); |
1826 | 1793 |
1827 // Returns the index'th element. | 1794 // Returns the index'th element. |
1828 // The undefined object if index is out of bounds. | 1795 // The undefined object if index is out of bounds. |
1829 MUST_USE_RESULT MaybeObject* GetElementWithInterceptor(Object* receiver, | 1796 MUST_USE_RESULT MaybeObject* GetElementWithInterceptor(Object* receiver, |
1830 uint32_t index); | 1797 uint32_t index); |
1831 | 1798 |
1832 enum SetFastElementsCapacityMode { | 1799 enum SetFastElementsCapacitySmiMode { |
1833 kAllowSmiOnlyElements, | 1800 kAllowSmiElements, |
1834 kForceSmiOnlyElements, | 1801 kForceSmiElements, |
1835 kDontAllowSmiOnlyElements | 1802 kDontAllowSmiElements |
1836 }; | 1803 }; |
1837 | 1804 |
1838 // Replace the elements' backing store with fast elements of the given | 1805 // Replace the elements' backing store with fast elements of the given |
1839 // capacity. Update the length for JSArrays. Returns the new backing | 1806 // capacity. Update the length for JSArrays. Returns the new backing |
1840 // store. | 1807 // store. |
1841 MUST_USE_RESULT MaybeObject* SetFastElementsCapacityAndLength( | 1808 MUST_USE_RESULT MaybeObject* SetFastElementsCapacityAndLength( |
1842 int capacity, | 1809 int capacity, |
1843 int length, | 1810 int length, |
1844 SetFastElementsCapacityMode set_capacity_mode); | 1811 SetFastElementsCapacitySmiMode smi_mode); |
1845 MUST_USE_RESULT MaybeObject* SetFastDoubleElementsCapacityAndLength( | 1812 MUST_USE_RESULT MaybeObject* SetFastDoubleElementsCapacityAndLength( |
1846 int capacity, | 1813 int capacity, |
1847 int length); | 1814 int length); |
1848 | 1815 |
1849 // Lookup interceptors are used for handling properties controlled by host | 1816 // Lookup interceptors are used for handling properties controlled by host |
1850 // objects. | 1817 // objects. |
1851 inline bool HasNamedInterceptor(); | 1818 inline bool HasNamedInterceptor(); |
1852 inline bool HasIndexedInterceptor(); | 1819 inline bool HasIndexedInterceptor(); |
1853 | 1820 |
1854 // Support functions for v8 api (needed for correct interceptor behavior). | 1821 // Support functions for v8 api (needed for correct interceptor behavior). |
(...skipping 2785 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4640 (elements_kind << kElementsKindShift)); | 4607 (elements_kind << kElementsKindShift)); |
4641 ASSERT(this->elements_kind() == elements_kind); | 4608 ASSERT(this->elements_kind() == elements_kind); |
4642 } | 4609 } |
4643 | 4610 |
4644 inline ElementsKind elements_kind() { | 4611 inline ElementsKind elements_kind() { |
4645 return static_cast<ElementsKind>( | 4612 return static_cast<ElementsKind>( |
4646 (bit_field2() & kElementsKindMask) >> kElementsKindShift); | 4613 (bit_field2() & kElementsKindMask) >> kElementsKindShift); |
4647 } | 4614 } |
4648 | 4615 |
4649 // Tells whether the instance has fast elements that are only Smis. | 4616 // Tells whether the instance has fast elements that are only Smis. |
4650 inline bool has_fast_smi_only_elements() { | 4617 inline bool has_fast_smi_elements() { |
4651 return elements_kind() == FAST_SMI_ONLY_ELEMENTS; | 4618 return IsFastSmiElementsKind(elements_kind()); |
4652 } | 4619 } |
4653 | 4620 |
4654 // Tells whether the instance has fast elements. | 4621 // Tells whether the instance has fast elements. |
4655 inline bool has_fast_elements() { | 4622 inline bool has_fast_object_elements() { |
4656 return elements_kind() == FAST_ELEMENTS; | 4623 return IsFastObjectElementsKind(elements_kind()); |
| 4624 } |
| 4625 |
| 4626 inline bool has_fast_smi_or_object_elements() { |
| 4627 return IsFastSmiOrObjectElementsKind(elements_kind()); |
4657 } | 4628 } |
4658 | 4629 |
4659 inline bool has_fast_double_elements() { | 4630 inline bool has_fast_double_elements() { |
4660 return elements_kind() == FAST_DOUBLE_ELEMENTS; | 4631 return IsFastDoubleElementsKind(elements_kind()); |
4661 } | 4632 } |
4662 | 4633 |
4663 inline bool has_non_strict_arguments_elements() { | 4634 inline bool has_non_strict_arguments_elements() { |
4664 return elements_kind() == NON_STRICT_ARGUMENTS_ELEMENTS; | 4635 return elements_kind() == NON_STRICT_ARGUMENTS_ELEMENTS; |
4665 } | 4636 } |
4666 | 4637 |
4667 inline bool has_external_array_elements() { | 4638 inline bool has_external_array_elements() { |
4668 ElementsKind kind(elements_kind()); | 4639 ElementsKind kind(elements_kind()); |
4669 return kind >= FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND && | 4640 return kind >= FIRST_EXTERNAL_ARRAY_ELEMENTS_KIND && |
4670 kind <= LAST_EXTERNAL_ARRAY_ELEMENTS_KIND; | 4641 kind <= LAST_EXTERNAL_ARRAY_ELEMENTS_KIND; |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4938 static const int kHasNonInstancePrototype = 1; | 4909 static const int kHasNonInstancePrototype = 1; |
4939 static const int kIsHiddenPrototype = 2; | 4910 static const int kIsHiddenPrototype = 2; |
4940 static const int kHasNamedInterceptor = 3; | 4911 static const int kHasNamedInterceptor = 3; |
4941 static const int kHasIndexedInterceptor = 4; | 4912 static const int kHasIndexedInterceptor = 4; |
4942 static const int kIsUndetectable = 5; | 4913 static const int kIsUndetectable = 5; |
4943 static const int kHasInstanceCallHandler = 6; | 4914 static const int kHasInstanceCallHandler = 6; |
4944 static const int kIsAccessCheckNeeded = 7; | 4915 static const int kIsAccessCheckNeeded = 7; |
4945 | 4916 |
4946 // Bit positions for bit field 2 | 4917 // Bit positions for bit field 2 |
4947 static const int kIsExtensible = 0; | 4918 static const int kIsExtensible = 0; |
4948 static const int kFunctionWithPrototype = 1; | 4919 static const int kStringWrapperSafeForDefaultValueOf = 1; |
4949 static const int kStringWrapperSafeForDefaultValueOf = 2; | 4920 static const int kAttachedToSharedFunctionInfo = 2; |
4950 static const int kAttachedToSharedFunctionInfo = 3; | |
4951 // No bits can be used after kElementsKindFirstBit, they are all reserved for | 4921 // No bits can be used after kElementsKindFirstBit, they are all reserved for |
4952 // storing ElementKind. | 4922 // storing ElementKind. |
4953 static const int kElementsKindShift = 4; | 4923 static const int kElementsKindShift = 3; |
4954 static const int kElementsKindBitCount = 4; | 4924 static const int kElementsKindBitCount = 5; |
4955 | 4925 |
4956 // Derived values from bit field 2 | 4926 // Derived values from bit field 2 |
4957 static const int kElementsKindMask = (-1 << kElementsKindShift) & | 4927 static const int kElementsKindMask = (-1 << kElementsKindShift) & |
4958 ((1 << (kElementsKindShift + kElementsKindBitCount)) - 1); | 4928 ((1 << (kElementsKindShift + kElementsKindBitCount)) - 1); |
4959 static const int8_t kMaximumBitField2FastElementValue = static_cast<int8_t>( | 4929 static const int8_t kMaximumBitField2FastElementValue = static_cast<int8_t>( |
4960 (FAST_ELEMENTS + 1) << Map::kElementsKindShift) - 1; | 4930 (FAST_ELEMENTS + 1) << Map::kElementsKindShift) - 1; |
4961 static const int8_t kMaximumBitField2FastSmiOnlyElementValue = | 4931 static const int8_t kMaximumBitField2FastSmiElementValue = |
4962 static_cast<int8_t>((FAST_SMI_ONLY_ELEMENTS + 1) << | 4932 static_cast<int8_t>((FAST_SMI_ELEMENTS + 1) << |
| 4933 Map::kElementsKindShift) - 1; |
| 4934 static const int8_t kMaximumBitField2FastHoleyElementValue = |
| 4935 static_cast<int8_t>((FAST_HOLEY_ELEMENTS + 1) << |
| 4936 Map::kElementsKindShift) - 1; |
| 4937 static const int8_t kMaximumBitField2FastHoleySmiElementValue = |
| 4938 static_cast<int8_t>((FAST_HOLEY_SMI_ELEMENTS + 1) << |
4963 Map::kElementsKindShift) - 1; | 4939 Map::kElementsKindShift) - 1; |
4964 | 4940 |
4965 // Bit positions for bit field 3 | 4941 // Bit positions for bit field 3 |
4966 static const int kIsShared = 0; | 4942 static const int kIsShared = 0; |
| 4943 static const int kFunctionWithPrototype = 1; |
4967 | 4944 |
4968 // Layout of the default cache. It holds alternating name and code objects. | 4945 // Layout of the default cache. It holds alternating name and code objects. |
4969 static const int kCodeCacheEntrySize = 2; | 4946 static const int kCodeCacheEntrySize = 2; |
4970 static const int kCodeCacheEntryNameOffset = 0; | 4947 static const int kCodeCacheEntryNameOffset = 0; |
4971 static const int kCodeCacheEntryCodeOffset = 1; | 4948 static const int kCodeCacheEntryCodeOffset = 1; |
4972 | 4949 |
4973 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, | 4950 typedef FixedBodyDescriptor<kPointerFieldsBeginOffset, |
4974 kPointerFieldsEndOffset, | 4951 kPointerFieldsEndOffset, |
4975 kSize> BodyDescriptor; | 4952 kSize> BodyDescriptor; |
4976 | 4953 |
(...skipping 3683 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8660 } else { | 8637 } else { |
8661 value &= ~(1 << bit_position); | 8638 value &= ~(1 << bit_position); |
8662 } | 8639 } |
8663 return value; | 8640 return value; |
8664 } | 8641 } |
8665 }; | 8642 }; |
8666 | 8643 |
8667 } } // namespace v8::internal | 8644 } } // namespace v8::internal |
8668 | 8645 |
8669 #endif // V8_OBJECTS_H_ | 8646 #endif // V8_OBJECTS_H_ |
OLD | NEW |