OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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 8089 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8100 }; | 8100 }; |
8101 | 8101 |
8102 const char* PretenureDecisionName(PretenureDecision decision); | 8102 const char* PretenureDecisionName(PretenureDecision decision); |
8103 | 8103 |
8104 DECL_ACCESSORS(transition_info, Object) | 8104 DECL_ACCESSORS(transition_info, Object) |
8105 // nested_site threads a list of sites that represent nested literals | 8105 // nested_site threads a list of sites that represent nested literals |
8106 // walked in a particular order. So [[1, 2], 1, 2] will have one | 8106 // walked in a particular order. So [[1, 2], 1, 2] will have one |
8107 // nested_site, but [[1, 2], 3, [4]] will have a list of two. | 8107 // nested_site, but [[1, 2], 3, [4]] will have a list of two. |
8108 DECL_ACCESSORS(nested_site, Object) | 8108 DECL_ACCESSORS(nested_site, Object) |
8109 DECL_INT_ACCESSORS(pretenure_data) | 8109 DECL_INT_ACCESSORS(pretenure_data) |
8110 DECL_INT_ACCESSORS(pretenure_create_count) | |
8111 DECL_ACCESSORS(dependent_code, DependentCode) | 8110 DECL_ACCESSORS(dependent_code, DependentCode) |
8112 DECL_ACCESSORS(weak_next, Object) | 8111 DECL_ACCESSORS(weak_next, Object) |
8113 | 8112 |
8114 inline void Initialize(); | 8113 inline void Initialize(); |
8115 | 8114 |
8116 // This method is expensive, it should only be called for reporting. | 8115 // This method is expensive, it should only be called for reporting. |
8117 bool IsNestedSite(); | 8116 bool IsNestedSite(); |
8118 | 8117 |
8119 // transition_info bitfields, for constructed array transition info. | 8118 // transition_info bitfields, for constructed array transition info. |
8120 class ElementsKindBits: public BitField<ElementsKind, 0, 15> {}; | 8119 class ElementsKindBits: public BitField<ElementsKind, 0, 15> {}; |
8121 class UnusedBits: public BitField<int, 15, 14> {}; | 8120 class UnusedBits: public BitField<int, 15, 14> {}; |
8122 class DoNotInlineBit: public BitField<bool, 29, 1> {}; | 8121 class DoNotInlineBit: public BitField<bool, 29, 1> {}; |
8123 | 8122 |
8124 // Bitfields for pretenure_data | 8123 // Bitfields for pretenure_data |
| 8124 class MementoCreatedCountBits:public BitField<int, 0, 26> {}; |
8125 class PretenureDecisionBits: public BitField<PretenureDecision, 26, 3> {}; | 8125 class PretenureDecisionBits: public BitField<PretenureDecision, 26, 3> {}; |
8126 class DeoptDependentCodeBit: public BitField<bool, 29, 1> {}; | 8126 class DeoptDependentCodeBit: public BitField<bool, 29, 1> {}; |
8127 STATIC_ASSERT(PretenureDecisionBits::kMax >= kLastPretenureDecisionValue); | 8127 STATIC_ASSERT(PretenureDecisionBits::kMax >= kLastPretenureDecisionValue); |
8128 | 8128 |
8129 inline void IncrementMementoCreateCount(); | 8129 inline void IncrementMementoCreateCount(); |
8130 | 8130 |
8131 PretenureFlag GetPretenureMode(); | 8131 PretenureFlag GetPretenureMode(); |
8132 | 8132 |
8133 void ResetPretenureDecision(); | 8133 void ResetPretenureDecision(); |
8134 | 8134 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8174 | 8174 |
8175 DECLARE_CAST(AllocationSite) | 8175 DECLARE_CAST(AllocationSite) |
8176 static inline AllocationSiteMode GetMode( | 8176 static inline AllocationSiteMode GetMode( |
8177 ElementsKind boilerplate_elements_kind); | 8177 ElementsKind boilerplate_elements_kind); |
8178 static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); | 8178 static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); |
8179 static inline bool CanTrack(InstanceType type); | 8179 static inline bool CanTrack(InstanceType type); |
8180 | 8180 |
8181 static const int kTransitionInfoOffset = HeapObject::kHeaderSize; | 8181 static const int kTransitionInfoOffset = HeapObject::kHeaderSize; |
8182 static const int kNestedSiteOffset = kTransitionInfoOffset + kPointerSize; | 8182 static const int kNestedSiteOffset = kTransitionInfoOffset + kPointerSize; |
8183 static const int kPretenureDataOffset = kNestedSiteOffset + kPointerSize; | 8183 static const int kPretenureDataOffset = kNestedSiteOffset + kPointerSize; |
8184 static const int kPretenureCreateCountOffset = | 8184 static const int kDependentCodeOffset = kPretenureDataOffset + kPointerSize; |
8185 kPretenureDataOffset + kPointerSize; | |
8186 static const int kDependentCodeOffset = | |
8187 kPretenureCreateCountOffset + kPointerSize; | |
8188 static const int kWeakNextOffset = kDependentCodeOffset + kPointerSize; | 8185 static const int kWeakNextOffset = kDependentCodeOffset + kPointerSize; |
8189 static const int kSize = kWeakNextOffset + kPointerSize; | 8186 static const int kSize = kWeakNextOffset + kPointerSize; |
8190 | 8187 |
8191 // During mark compact we need to take special care for the dependent code | 8188 // During mark compact we need to take special care for the dependent code |
8192 // field. | 8189 // field. |
8193 static const int kPointerFieldsBeginOffset = kTransitionInfoOffset; | 8190 static const int kPointerFieldsBeginOffset = kTransitionInfoOffset; |
8194 static const int kPointerFieldsEndOffset = kWeakNextOffset; | 8191 static const int kPointerFieldsEndOffset = kWeakNextOffset; |
8195 | 8192 |
8196 // For other visitors, use the fixed body descriptor below. | 8193 // For other visitors, use the fixed body descriptor below. |
8197 typedef FixedBodyDescriptor<HeapObject::kHeaderSize, | 8194 typedef FixedBodyDescriptor<HeapObject::kHeaderSize, |
(...skipping 2514 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10712 } | 10709 } |
10713 return value; | 10710 return value; |
10714 } | 10711 } |
10715 }; | 10712 }; |
10716 | 10713 |
10717 | 10714 |
10718 } // NOLINT, false-positive due to second-order macros. | 10715 } // NOLINT, false-positive due to second-order macros. |
10719 } // NOLINT, false-positive due to second-order macros. | 10716 } // NOLINT, false-positive due to second-order macros. |
10720 | 10717 |
10721 #endif // V8_OBJECTS_H_ | 10718 #endif // V8_OBJECTS_H_ |
OLD | NEW |