| 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 8335 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8346 bool SitePointsToLiteral() { | 8346 bool SitePointsToLiteral() { |
| 8347 // If transition_info is a smi, then it represents an ElementsKind | 8347 // If transition_info is a smi, then it represents an ElementsKind |
| 8348 // for a constructed array. Otherwise, it must be a boilerplate | 8348 // for a constructed array. Otherwise, it must be a boilerplate |
| 8349 // for an object or array literal. | 8349 // for an object or array literal. |
| 8350 return transition_info()->IsJSArray() || transition_info()->IsJSObject(); | 8350 return transition_info()->IsJSArray() || transition_info()->IsJSObject(); |
| 8351 } | 8351 } |
| 8352 | 8352 |
| 8353 static void DigestTransitionFeedback(Handle<AllocationSite> site, | 8353 static void DigestTransitionFeedback(Handle<AllocationSite> site, |
| 8354 ElementsKind to_kind); | 8354 ElementsKind to_kind); |
| 8355 | 8355 |
| 8356 enum Reason { | 8356 static void RegisterForDeoptOnTenureChange(Handle<AllocationSite> site, |
| 8357 TENURING, | 8357 CompilationInfo* info); |
| 8358 TRANSITIONS | |
| 8359 }; | |
| 8360 | 8358 |
| 8361 static void AddDependentCompilationInfo(Handle<AllocationSite> site, | 8359 static void RegisterForDeoptOnTransitionChange(Handle<AllocationSite> site, |
| 8362 Reason reason, | 8360 CompilationInfo* info); |
| 8363 CompilationInfo* info); | |
| 8364 | 8361 |
| 8365 DECLARE_PRINTER(AllocationSite) | 8362 DECLARE_PRINTER(AllocationSite) |
| 8366 DECLARE_VERIFIER(AllocationSite) | 8363 DECLARE_VERIFIER(AllocationSite) |
| 8367 | 8364 |
| 8368 DECLARE_CAST(AllocationSite) | 8365 DECLARE_CAST(AllocationSite) |
| 8369 static inline AllocationSiteMode GetMode( | 8366 static inline AllocationSiteMode GetMode( |
| 8370 ElementsKind boilerplate_elements_kind); | 8367 ElementsKind boilerplate_elements_kind); |
| 8371 static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); | 8368 static inline AllocationSiteMode GetMode(ElementsKind from, ElementsKind to); |
| 8372 static inline bool CanTrack(InstanceType type); | 8369 static inline bool CanTrack(InstanceType type); |
| 8373 | 8370 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 8385 // field. | 8382 // field. |
| 8386 static const int kPointerFieldsBeginOffset = kTransitionInfoOffset; | 8383 static const int kPointerFieldsBeginOffset = kTransitionInfoOffset; |
| 8387 static const int kPointerFieldsEndOffset = kDependentCodeOffset; | 8384 static const int kPointerFieldsEndOffset = kDependentCodeOffset; |
| 8388 | 8385 |
| 8389 // For other visitors, use the fixed body descriptor below. | 8386 // For other visitors, use the fixed body descriptor below. |
| 8390 typedef FixedBodyDescriptor<HeapObject::kHeaderSize, | 8387 typedef FixedBodyDescriptor<HeapObject::kHeaderSize, |
| 8391 kDependentCodeOffset + kPointerSize, | 8388 kDependentCodeOffset + kPointerSize, |
| 8392 kSize> BodyDescriptor; | 8389 kSize> BodyDescriptor; |
| 8393 | 8390 |
| 8394 private: | 8391 private: |
| 8395 inline DependentCode::DependencyGroup ToDependencyGroup(Reason reason); | 8392 static void AddDependentCompilationInfo(Handle<AllocationSite> site, |
| 8393 DependentCode::DependencyGroup group, |
| 8394 CompilationInfo* info); |
| 8395 |
| 8396 bool PretenuringDecisionMade() { | 8396 bool PretenuringDecisionMade() { |
| 8397 return pretenure_decision() != kUndecided; | 8397 return pretenure_decision() != kUndecided; |
| 8398 } | 8398 } |
| 8399 | 8399 |
| 8400 DISALLOW_IMPLICIT_CONSTRUCTORS(AllocationSite); | 8400 DISALLOW_IMPLICIT_CONSTRUCTORS(AllocationSite); |
| 8401 }; | 8401 }; |
| 8402 | 8402 |
| 8403 | 8403 |
| 8404 class AllocationMemento: public Struct { | 8404 class AllocationMemento: public Struct { |
| 8405 public: | 8405 public: |
| (...skipping 2561 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10967 } else { | 10967 } else { |
| 10968 value &= ~(1 << bit_position); | 10968 value &= ~(1 << bit_position); |
| 10969 } | 10969 } |
| 10970 return value; | 10970 return value; |
| 10971 } | 10971 } |
| 10972 }; | 10972 }; |
| 10973 | 10973 |
| 10974 } } // namespace v8::internal | 10974 } } // namespace v8::internal |
| 10975 | 10975 |
| 10976 #endif // V8_OBJECTS_H_ | 10976 #endif // V8_OBJECTS_H_ |
| OLD | NEW |