5#ifndef V8_OBJECTS_ALLOCATION_SITE_INL_H_ 
    6#define V8_OBJECTS_ALLOCATION_SITE_INL_H_ 
   25#include "torque-generated/src/objects/allocation-site-tq-inl.inc" 
  142  DCHECK_EQ(!
IsSmi(raw_value), IsJSArray(raw_value) || IsJSObject(raw_value));
 
  143  return !
IsSmi(raw_value);
 
 
  156  if (
v8_flags.allocation_site_pretenuring) {
 
  159    return type == JS_ARRAY_TYPE || type == JS_OBJECT_TYPE;
 
  161  return type == JS_ARRAY_TYPE;
 
 
  193  DCHECK((GetHeap()->MaxSemiSpaceSize() /
 
 
  250template <AllocationSiteUpdateMode update_or_check>
 
  253  Isolate* isolate = site->GetIsolate();
 
  256  if (site->PointsToLiteral() && IsJSArray(site->boilerplate())) {
 
  273        if (
v8_flags.trace_track_allocation_sites) {
 
  274          bool is_nested = site->IsNested();
 
  275          PrintF(
"AllocationSite: JSArray %p boilerplate %supdated %s->%s\n",
 
  276                 reinterpret_cast<void*
>(site->ptr()),
 
  297      if (
v8_flags.trace_track_allocation_sites) {
 
  298        PrintF(
"AllocationSite: JSArray %p site updated %s->%s\n",
 
  302      site->SetElementsKind(to_kind);
 
 
static constexpr T decode(U value)
static V8_NODISCARD constexpr U update(U previous, T value)
Tagged< AllocationSite > GetAllocationSite() const
void set_allocation_site(Tagged< AllocationSite > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
Address GetAllocationSiteUnchecked() const
TaggedMember< AllocationSite > allocation_site_
void set_weak_next(Tagged< UnionOf< Undefined, AllocationSiteWithWeakNext > > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
TaggedMember< UnionOf< Undefined, AllocationSiteWithWeakNext > > weak_next_
Tagged< UnionOf< Undefined, AllocationSiteWithWeakNext > > weak_next() const
static NEVER_READ_ONLY_SPACE const uint32_t kMaximumArrayBytesToPretransition
TaggedMember< UnionOf< Smi, JSObject > > transition_info_or_boilerplate_
bool PointsToLiteral() const
ElementsKind GetElementsKind() const
Tagged< UnionOf< Smi, JSObject > > transition_info_or_boilerplate() const
Tagged< UnionOf< Smi, AllocationSite > > nested_site() const
PretenureDecision pretenure_decision() const
void SetDoNotInlineCall()
bool IsMaybeTenure() const
void set_pretenure_decision(PretenureDecision decision)
int32_t pretenure_create_count_
static bool ShouldTrack(ElementsKind boilerplate_elements_kind)
static bool CanTrack(InstanceType type)
bool deopt_dependent_code() const
void set_deopt_dependent_code(bool deopt)
TaggedMember< UnionOf< Smi, AllocationSite > > nested_site_
int transition_info() const
int memento_found_count() const
Tagged< DependentCode > dependent_code() const
void set_pretenure_create_count(int32_t value)
int32_t pretenure_data(RelaxedLoadTag) const
int32_t pretenure_create_count() const
int memento_create_count() const
static bool DigestTransitionFeedback(DirectHandle< AllocationSite > site, ElementsKind to_kind)
bool CanInlineCall() const
Tagged< JSObject > boilerplate() const
void set_pretenure_data(int32_t value, RelaxedStoreTag)
void set_memento_create_count(int count)
void set_boilerplate(Tagged< JSObject > value, ReleaseStoreTag, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
TaggedMember< DependentCode > dependent_code_
void set_dependent_code(Tagged< DependentCode > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
void IncrementMementoCreateCount()
void set_nested_site(Tagged< UnionOf< Smi, AllocationSite > > value, WriteBarrierMode mode=UPDATE_WRITE_BARRIER)
bool PretenuringDecisionMade() const
void set_transition_info(int value)
void set_memento_found_count(int count)
int IncrementMementoFoundCount(int increment=1)
std::atomic< int32_t > pretenure_data_
void SetElementsKind(ElementsKind kind)
static V8_EXPORT_PRIVATE Tagged< DependentCode > empty_dependent_code(const ReadOnlyRoots &roots)
@ kAllocationSiteTransitionChangedGroup
static void DeoptimizeDependencyGroups(Isolate *isolate, ObjectT object, DependencyGroups groups)
Tagged< Map > map() const
static V8_EXPORT_PRIVATE void TransitionElementsKind(DirectHandle< JSObject > object, ElementsKind to_kind)
static bool ToArrayLength(Tagged< Object > obj, uint32_t *index)
static constexpr Tagged< Smi > FromInt(int value)
static constexpr Tagged< Smi > zero()
#define V8_ALLOCATION_SITE_TRACKING_BOOL
ZoneVector< RpoNumber > & result
constexpr int kTaggedSize
constexpr bool IsHoleyElementsKind(ElementsKind kind)
bool IsMoreGeneralElementsKindTransition(ElementsKind from_kind, ElementsKind to_kind)
ReadOnlyRoots GetReadOnlyRoots()
void PrintF(const char *format,...)
Tagged(T object) -> Tagged< T >
constexpr bool IsSmiElementsKind(ElementsKind kind)
V8_INLINE constexpr bool IsSmi(TaggedImpl< kRefType, StorageType > obj)
const char * ElementsKindToString(ElementsKind kind)
ElementsKind GetHoleyElementsKind(ElementsKind packed_kind)
typename detail::FlattenUnionHelper< Union<>, Ts... >::type UnionOf
V8_EXPORT_PRIVATE FlagValues v8_flags
ElementsKind GetInitialFastElementsKind()
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
static constexpr RelaxedLoadTag kRelaxedLoad
static constexpr RelaxedStoreTag kRelaxedStore
#define NEVER_READ_ONLY_SPACE_IMPL(Type)
#define CHECK_NE(lhs, rhs)
#define DCHECK(condition)
#define DCHECK_LT(v1, v2)
#define DCHECK_EQ(v1, v2)