v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
heap-refs.h File Reference
Include dependency graph for heap-refs.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  v8::internal::compiler::is_ref< T >
 
struct  v8::internal::compiler::ref_traits< Oddball >
 
struct  v8::internal::compiler::ref_traits< Null >
 
struct  v8::internal::compiler::ref_traits< Undefined >
 
struct  v8::internal::compiler::ref_traits< True >
 
struct  v8::internal::compiler::ref_traits< False >
 
struct  v8::internal::compiler::ref_traits< Hole >
 
struct  v8::internal::compiler::ref_traits< EnumCache >
 
struct  v8::internal::compiler::ref_traits< PropertyArray >
 
struct  v8::internal::compiler::ref_traits< ByteArray >
 
struct  v8::internal::compiler::ref_traits< TrustedFixedArray >
 
struct  v8::internal::compiler::ref_traits< ClosureFeedbackCellArray >
 
struct  v8::internal::compiler::ref_traits< NumberDictionary >
 
struct  v8::internal::compiler::ref_traits< OrderedHashMap >
 
struct  v8::internal::compiler::ref_traits< OrderedHashSet >
 
struct  v8::internal::compiler::ref_traits< FeedbackMetadata >
 
struct  v8::internal::compiler::ref_traits< NameDictionary >
 
struct  v8::internal::compiler::ref_traits< OrderedNameDictionary >
 
struct  v8::internal::compiler::ref_traits< SwissNameDictionary >
 
struct  v8::internal::compiler::ref_traits< InterceptorInfo >
 
struct  v8::internal::compiler::ref_traits< ArrayList >
 
struct  v8::internal::compiler::ref_traits< WeakFixedArray >
 
struct  v8::internal::compiler::ref_traits< WeakArrayList >
 
struct  v8::internal::compiler::ref_traits< RegisteredSymbolTable >
 
struct  v8::internal::compiler::ref_traits< Smi >
 
struct  v8::internal::compiler::ref_traits< Boolean >
 
struct  v8::internal::compiler::ref_traits< JSProxy >
 
struct  v8::internal::compiler::ref_traits< JSWrappedFunction >
 
struct  v8::internal::compiler::ref_traits< Union< T... > >
 
class  v8::internal::compiler::OptionalRef< TRef >
 
class  v8::internal::compiler::OptionalRef< TRef >::ArrowOperatorHelper
 
class  v8::internal::compiler::HeapObjectType
 
class  v8::internal::compiler::HeapObjectRef
 
class  v8::internal::compiler::PropertyCellRef
 
class  v8::internal::compiler::JSReceiverRef
 
class  v8::internal::compiler::JSObjectRef
 
class  v8::internal::compiler::JSDataViewRef
 
class  v8::internal::compiler::JSBoundFunctionRef
 
class  v8::internal::compiler::JSFunctionRef
 
class  v8::internal::compiler::RegExpBoilerplateDescriptionRef
 
class  v8::internal::compiler::HeapNumberRef
 
class  v8::internal::compiler::ContextRef
 
class  v8::internal::compiler::NativeContextRef
 
class  v8::internal::compiler::NameRef
 
class  v8::internal::compiler::DescriptorArrayRef
 
class  v8::internal::compiler::FeedbackCellRef
 
class  v8::internal::compiler::FeedbackVectorRef
 
class  v8::internal::compiler::AccessorInfoRef
 
class  v8::internal::compiler::AllocationSiteRef
 
class  v8::internal::compiler::BigIntRef
 
class  v8::internal::compiler::MapRef
 
struct  v8::internal::compiler::HolderLookupResult
 
class  v8::internal::compiler::FunctionTemplateInfoRef
 
class  v8::internal::compiler::FixedArrayBaseRef
 
class  v8::internal::compiler::ArrayBoilerplateDescriptionRef
 
class  v8::internal::compiler::FixedArrayRef
 
class  v8::internal::compiler::FixedDoubleArrayRef
 
class  v8::internal::compiler::BytecodeArrayRef
 
class  v8::internal::compiler::ScriptContextTableRef
 
class  v8::internal::compiler::ObjectBoilerplateDescriptionRef
 
class  v8::internal::compiler::JSArrayRef
 
class  v8::internal::compiler::ScopeInfoRef
 
class  v8::internal::compiler::SharedFunctionInfoRef
 
class  v8::internal::compiler::StringRef
 
class  v8::internal::compiler::SymbolRef
 
class  v8::internal::compiler::JSTypedArrayRef
 
class  v8::internal::compiler::JSPrimitiveWrapperRef
 
class  v8::internal::compiler::SourceTextModuleRef
 
class  v8::internal::compiler::TemplateObjectDescriptionRef
 
class  v8::internal::compiler::CellRef
 
class  v8::internal::compiler::JSGlobalObjectRef
 
class  v8::internal::compiler::JSGlobalProxyRef
 
class  v8::internal::compiler::CodeRef
 
class  v8::internal::compiler::InternalizedStringRef
 
struct  v8::internal::ZoneCompactSetTraits< T, std::enable_if_t< compiler::is_ref< T >::value > >
 

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::interpreter
 
namespace  v8::internal::wasm
 
namespace  v8::internal::compiler
 

Macros

#define FOR_HOLE(Name, name, Root)
 
#define HEAP_BROKER_OBJECT_LIST_BASE(BACKGROUND_SERIALIZED, NEVER_SERIALIZED)
 
#define HEAP_BROKER_OBJECT_LIST(V)
 
#define IGNORE_CASE(...)
 
#define HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST(V)
 
#define FORWARD_DECL(Name)
 
#define DEFINE_IS_REF(Name)
 
#define FORWARD_DECL(Name)
 
#define BACKGROUND_SERIALIZED_REF_TRAITS(Name)
 
#define NEVER_SERIALIZED_REF_TRAITS(Name)
 
#define V(Name)
 
#define HEAP_IS_METHOD_DECL(Name)
 
#define HEAP_AS_METHOD_DECL(Name)
 
#define DEFINE_REF_CONSTRUCTOR(Name, Base)
 
#define BROKER_NATIVE_CONTEXT_FIELDS(V)
 
#define DECL_ACCESSOR(type, name)
 
#define DEF_TESTER(Type, ...)
 
#define BROKER_SFI_FIELDS(V)
 
#define DECL_ACCESSOR(type, name)
 
#define V(Name)
 

Typedefs

template<class T >
using v8::internal::compiler::ZoneRefUnorderedSet = ZoneUnorderedSet<T, ObjectRef::Hash>
 
template<class K , class V >
using v8::internal::compiler::ZoneRefMap = ZoneMap<K, V>
 
template<typename T >
using v8::internal::compiler::ZoneRefSet = ZoneCompactSet<typename ref_traits<T>::ref_type>
 

Enumerations

enum class  v8::internal::compiler::AccessMode {
  v8::internal::compiler::kLoad , v8::internal::compiler::kStore , v8::internal::compiler::kStoreInLiteral , v8::internal::compiler::kHas ,
  v8::internal::compiler::kDefine
}
 
enum class  v8::internal::compiler::OddballType : uint8_t { v8::internal::compiler::kNone , v8::internal::compiler::kBoolean , v8::internal::compiler::kUndefined , v8::internal::compiler::kNull }
 
enum class  v8::internal::compiler::HoleType : uint8_t { v8::internal::compiler::kNone , v8::internal::compiler::FOR_HOLE , v8::internal::compiler::kGeneric = kTheHole }
 
enum class  v8::internal::compiler::RefSerializationKind { v8::internal::compiler::kNeverSerialized , v8::internal::compiler::kBackgroundSerialized }
 

Functions

bool v8::internal::compiler::IsAnyStore (AccessMode mode)
 
bool v8::internal::compiler::IsDefiningStore (AccessMode mode)
 
 v8::internal::compiler::HEAP_BROKER_OBJECT_LIST_BASE (BACKGROUND_SERIALIZED_REF_TRAITS, NEVER_SERIALIZED_REF_TRAITS) template<> struct ref_traits< Object >
 
template<typename T >
bool v8::internal::compiler::operator== (OptionalRef< T > lhs, OptionalRef< T > rhs)
 
template<typename T >
size_t v8::internal::compiler::hash_value (OptionalRef< T > ref)
 
 v8::internal::compiler::V (Object) class V8_EXPORT_PRIVATE ObjectRef
 
bool v8::internal::compiler::operator== (ObjectRef lhs, ObjectRef rhs)
 
bool v8::internal::compiler::operator!= (ObjectRef lhs, ObjectRef rhs)
 
bool v8::internal::compiler::operator< (ObjectRef lhs, ObjectRef rhs)
 
size_t v8::internal::compiler::hash_value (ObjectRef ref)
 
bool v8::internal::compiler::AnyMapIsHeapNumber (const ZoneRefSet< Map > &maps)
 
bool v8::internal::compiler::AnyMapIsHeapNumber (const base::Vector< const MapRef > &maps)
 

Macro Definition Documentation

◆ BACKGROUND_SERIALIZED_REF_TRAITS

#define BACKGROUND_SERIALIZED_REF_TRAITS ( Name)
Value:
template <> \
struct ref_traits<Name> { \
using ref_type = Name##Ref; \
using data_type = Name##Data; \
static constexpr RefSerializationKind ref_serialization_kind = \
RefSerializationKind::kBackgroundSerialized; \
};

Definition at line 179 of file heap-refs.h.

◆ BROKER_NATIVE_CONTEXT_FIELDS

#define BROKER_NATIVE_CONTEXT_FIELDS ( V)

Definition at line 723 of file heap-refs.h.

◆ BROKER_SFI_FIELDS

#define BROKER_SFI_FIELDS ( V)
Value:
V(int, internal_formal_parameter_count_with_receiver) \
V(int, internal_formal_parameter_count_without_receiver) \
V(bool, IsDontAdaptArguments) \
V(bool, has_simple_parameters) \
V(bool, has_duplicate_parameters) \
V(int, function_map_index) \
V(FunctionKind, kind) \
V(LanguageMode, language_mode) \
V(bool, native) \
V(bool, HasBuiltinId) \
V(bool, construct_as_builtin) \
V(bool, HasBytecodeArray) \
V(int, StartPosition) \
V(bool, is_compiled) \
V(bool, IsUserJavaScript) \
V(bool, requires_instance_members_initializer)
Builtins::Kind kind
Definition builtins.cc:40
#define V(Name)
Definition heap-refs.h:380

Definition at line 1101 of file heap-refs.h.

◆ DECL_ACCESSOR [1/2]

#define DECL_ACCESSOR ( type,
name )
Value:
type##Ref name(JSHeapBroker* broker) const;
const char * name
Definition builtins.cc:39
JSHeapBroker * broker

Definition at line 775 of file heap-refs.h.

◆ DECL_ACCESSOR [2/2]

#define DECL_ACCESSOR ( type,
name )
Value:
type name() const;

Definition at line 775 of file heap-refs.h.

◆ DEF_TESTER

#define DEF_TESTER ( Type,
... )
Value:
bool Is##Type##Map() const;

Definition at line 917 of file heap-refs.h.

◆ DEFINE_IS_REF

#define DEFINE_IS_REF ( Name)
Value:
template <> \
struct is_ref<Name##Ref> : public std::true_type {};

Definition at line 165 of file heap-refs.h.

◆ DEFINE_REF_CONSTRUCTOR

#define DEFINE_REF_CONSTRUCTOR ( Name,
Base )
Value:
explicit Name##Ref(ObjectData* data, bool check_type = true) \
: Base(data, false) { \
if (check_type) { \
CHECK(Is##Name()); \
} \
}

Definition at line 514 of file heap-refs.h.

◆ FOR_HOLE

#define FOR_HOLE ( Name,
name,
Root )
Value:
k##Name,

Definition at line 84 of file heap-refs.h.

◆ FORWARD_DECL [1/2]

#define FORWARD_DECL ( Name)
Value:
class Name##Ref;

Definition at line 157 of file heap-refs.h.

◆ FORWARD_DECL [2/2]

#define FORWARD_DECL ( Name)
Value:
class Name##Data;

Definition at line 157 of file heap-refs.h.

◆ HEAP_AS_METHOD_DECL

#define HEAP_AS_METHOD_DECL ( Name)
Value:
Name##Ref As##Name() const;

◆ HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST

#define HEAP_BROKER_BACKGROUND_SERIALIZED_OBJECT_LIST ( V)
Value:
#define HEAP_BROKER_OBJECT_LIST_BASE(BACKGROUND_SERIALIZED, NEVER_SERIALIZED)
Definition heap-refs.h:100
#define IGNORE_CASE(...)
Definition heap-refs.h:153

Definition at line 154 of file heap-refs.h.

◆ HEAP_BROKER_OBJECT_LIST

#define HEAP_BROKER_OBJECT_LIST ( V)
Value:

Definition at line 152 of file heap-refs.h.

◆ HEAP_BROKER_OBJECT_LIST_BASE

#define HEAP_BROKER_OBJECT_LIST_BASE ( BACKGROUND_SERIALIZED,
NEVER_SERIALIZED )

Definition at line 100 of file heap-refs.h.

◆ HEAP_IS_METHOD_DECL

#define HEAP_IS_METHOD_DECL ( Name)
Value:
bool Is##Name() const;

◆ IGNORE_CASE

#define IGNORE_CASE ( ...)

Definition at line 153 of file heap-refs.h.

◆ NEVER_SERIALIZED_REF_TRAITS

#define NEVER_SERIALIZED_REF_TRAITS ( Name)
Value:
template <> \
struct ref_traits<Name> { \
using ref_type = Name##Ref; \
using data_type = ObjectData; \
static constexpr RefSerializationKind ref_serialization_kind = \
RefSerializationKind::kNeverSerialized; \
};

Definition at line 188 of file heap-refs.h.

◆ V [1/2]

#define V ( Name)
Value:
using Optional##Name##Ref = OptionalRef<Name##Ref>;

Definition at line 380 of file heap-refs.h.

◆ V [2/2]

#define V ( Name)
Value:
/* Refs should contain only one pointer. */ \
static_assert(sizeof(Name##Ref) == kSystemPointerSize); \
static_assert(sizeof(OptionalName##Ref) == kSystemPointerSize); \
/* Refs should be trivial to copy, move and destroy. */ \
static_assert(std::is_trivially_copyable_v<Name##Ref>); \
static_assert(std::is_trivially_copyable_v<OptionalName##Ref>); \
static_assert(std::is_trivially_destructible_v<Name##Ref>); \
static_assert(std::is_trivially_destructible_v<OptionalName##Ref>);

Definition at line 380 of file heap-refs.h.