v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
v8::internal::TaggedImpl< kRefType, StorageType > Class Template Reference

#include <tagged-impl.h>

Inheritance diagram for v8::internal::TaggedImpl< kRefType, StorageType >:
Collaboration diagram for v8::internal::TaggedImpl< kRefType, StorageType >:

Public Member Functions

V8_INLINE constexpr TaggedImpl ()
 
V8_INLINE constexpr TaggedImpl (StorageType ptr)
 
 operator bool () const =delete
 
template<HeapObjectReferenceType kOtherRefType, typename U >
constexpr bool operator== (TaggedImpl< kOtherRefType, U > other) const
 
template<HeapObjectReferenceType kOtherRefType, typename U >
constexpr bool operator!= (TaggedImpl< kOtherRefType, U > other) const
 
template<HeapObjectReferenceType kOtherRefType>
constexpr bool SafeEquals (TaggedImpl< kOtherRefType, StorageType > other) const
 
constexpr bool operator< (TaggedImpl other) const
 
V8_INLINE constexpr StorageType ptr () const
 
constexpr bool IsObject () const
 
constexpr bool IsSmi () const
 
bool ToSmi (Tagged< Smi > *value) const
 
Tagged< SmiToSmi () const
 
constexpr bool IsHeapObject () const
 
constexpr bool IsCleared () const
 
constexpr bool IsStrongOrWeak () const
 
constexpr bool IsStrong () const
 
constexpr bool IsStrongOrSmi () const
 
constexpr bool IsWeak () const
 
constexpr bool IsWeakOrCleared () const
 
bool GetHeapObjectIfStrong (Tagged< HeapObject > *result) const
 
bool GetHeapObjectIfStrong (Isolate *isolate, Tagged< HeapObject > *result) const
 
Tagged< HeapObjectGetHeapObjectAssumeStrong () const
 
Tagged< HeapObjectGetHeapObjectAssumeStrong (Isolate *isolate) const
 
bool GetHeapObjectIfWeak (Tagged< HeapObject > *result) const
 
bool GetHeapObjectIfWeak (Isolate *isolate, Tagged< HeapObject > *result) const
 
Tagged< HeapObjectGetHeapObjectAssumeWeak () const
 
Tagged< HeapObjectGetHeapObjectAssumeWeak (Isolate *isolate) const
 
bool GetHeapObject (Tagged< HeapObject > *result) const
 
bool GetHeapObject (Isolate *isolate, Tagged< HeapObject > *result) const
 
bool GetHeapObject (Tagged< HeapObject > *result, HeapObjectReferenceType *reference_type) const
 
bool GetHeapObject (Isolate *isolate, Tagged< HeapObject > *result, HeapObjectReferenceType *reference_type) const
 
Tagged< HeapObjectGetHeapObject () const
 
Tagged< HeapObjectGetHeapObject (Isolate *isolate) const
 
Tagged< ObjectGetHeapObjectOrSmi () const
 
Tagged< ObjectGetHeapObjectOrSmi (Isolate *isolate) const
 
template<typename T >
Tagged< Tcast () const
 

Static Public Attributes

static const bool kIsFull = sizeof(StorageType) == kSystemPointerSize
 
static const bool kCanBeWeak = kRefType == HeapObjectReferenceType::WEAK
 

Protected Member Functions

StorageType * ptr_location ()
 
const StorageType * ptr_location () const
 

Private Attributes

StorageType ptr_
 

Friends

class CompressedObjectSlot
 
class CompressedMaybeObjectSlot
 
class FullObjectSlot
 
class FullMaybeObjectSlot
 
class FullHeapObjectSlot
 

Detailed Description

template<HeapObjectReferenceType kRefType, typename StorageType>
class v8::internal::TaggedImpl< kRefType, StorageType >

Definition at line 33 of file tagged-impl.h.

Constructor & Destructor Documentation

◆ TaggedImpl() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
V8_INLINE constexpr v8::internal::TaggedImpl< kRefType, StorageType >::TaggedImpl ( )
inlineconstexpr

Definition at line 46 of file tagged-impl.h.

◆ TaggedImpl() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
V8_INLINE constexpr v8::internal::TaggedImpl< kRefType, StorageType >::TaggedImpl ( StorageType ptr)
inlineexplicitconstexpr

Definition at line 47 of file tagged-impl.h.

Member Function Documentation

◆ cast()

template<HeapObjectReferenceType kRefType, typename StorageType >
template<typename T >
Tagged< T > v8::internal::TaggedImpl< kRefType, StorageType >::cast ( ) const
inline

Definition at line 226 of file tagged-impl.h.

Here is the call graph for this function:

◆ GetHeapObject() [1/6]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< HeapObject > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObject ( ) const
inline

Definition at line 211 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ GetHeapObject() [2/6]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< HeapObject > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObject ( Isolate * isolate) const
inline

Definition at line 224 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ GetHeapObject() [3/6]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObject ( Isolate * isolate,
Tagged< HeapObject > * result ) const
inline

Definition at line 57 of file tagged-impl-inl.h.

◆ GetHeapObject() [4/6]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObject ( Isolate * isolate,
Tagged< HeapObject > * result,
HeapObjectReferenceType * reference_type ) const
inline

Definition at line 84 of file tagged-impl-inl.h.

◆ GetHeapObject() [5/6]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObject ( Tagged< HeapObject > * result) const
inline

Definition at line 48 of file tagged-impl-inl.h.

Here is the caller graph for this function:

◆ GetHeapObject() [6/6]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObject ( Tagged< HeapObject > * result,
HeapObjectReferenceType * reference_type ) const
inline

Definition at line 73 of file tagged-impl-inl.h.

◆ GetHeapObjectAssumeStrong() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< HeapObject > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectAssumeStrong ( ) const
inline

Definition at line 131 of file tagged-impl-inl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHeapObjectAssumeStrong() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< HeapObject > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectAssumeStrong ( Isolate * isolate) const
inline

Definition at line 138 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ GetHeapObjectAssumeWeak() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< HeapObject > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectAssumeWeak ( ) const
inline

Definition at line 190 of file tagged-impl-inl.h.

Here is the caller graph for this function:

◆ GetHeapObjectAssumeWeak() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< HeapObject > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectAssumeWeak ( Isolate * isolate) const
inline

Definition at line 198 of file tagged-impl-inl.h.

◆ GetHeapObjectIfStrong() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectIfStrong ( Isolate * isolate,
Tagged< HeapObject > * result ) const
inline

Definition at line 112 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ GetHeapObjectIfStrong() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectIfStrong ( Tagged< HeapObject > * result) const
inline

Definition at line 101 of file tagged-impl-inl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHeapObjectIfWeak() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectIfWeak ( Isolate * isolate,
Tagged< HeapObject > * result ) const
inline

Definition at line 169 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ GetHeapObjectIfWeak() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectIfWeak ( Tagged< HeapObject > * result) const
inline

Definition at line 153 of file tagged-impl-inl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHeapObjectOrSmi() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< Object > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectOrSmi ( ) const
inline

Definition at line 247 of file tagged-impl-inl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHeapObjectOrSmi() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< Object > v8::internal::TaggedImpl< kRefType, StorageType >::GetHeapObjectOrSmi ( Isolate * isolate) const
inline

Definition at line 256 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ IsCleared()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsCleared ( ) const
inlineconstexpr

Definition at line 129 of file tagged-impl.h.

Here is the caller graph for this function:

◆ IsHeapObject()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsHeapObject ( ) const
inlineconstexpr

Definition at line 126 of file tagged-impl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsObject()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsObject ( ) const
inlineconstexpr

Definition at line 118 of file tagged-impl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsSmi()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsSmi ( ) const
inlineconstexpr

Definition at line 121 of file tagged-impl.h.

Here is the caller graph for this function:

◆ IsStrong()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsStrong ( ) const
inlineconstexpr

Definition at line 141 of file tagged-impl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsStrongOrSmi()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsStrongOrSmi ( ) const
inlineconstexpr

Definition at line 148 of file tagged-impl.h.

◆ IsStrongOrWeak()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsStrongOrWeak ( ) const
inlineconstexpr

Definition at line 136 of file tagged-impl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsWeak()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsWeak ( ) const
inlineconstexpr

Definition at line 153 of file tagged-impl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsWeakOrCleared()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::IsWeakOrCleared ( ) const
inlineconstexpr

Definition at line 159 of file tagged-impl.h.

Here is the caller graph for this function:

◆ operator bool()

template<HeapObjectReferenceType kRefType, typename StorageType >
v8::internal::TaggedImpl< kRefType, StorageType >::operator bool ( ) const
explicitdelete

◆ operator!=()

template<HeapObjectReferenceType kRefType, typename StorageType >
template<HeapObjectReferenceType kOtherRefType, typename U >
bool v8::internal::TaggedImpl< kRefType, StorageType >::operator!= ( TaggedImpl< kOtherRefType, U > other) const
inlineconstexpr

Definition at line 74 of file tagged-impl.h.

◆ operator<()

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::operator< ( TaggedImpl< kRefType, StorageType > other) const
inlineconstexpr

Definition at line 104 of file tagged-impl.h.

◆ operator==()

template<HeapObjectReferenceType kRefType, typename StorageType >
template<HeapObjectReferenceType kOtherRefType, typename U >
bool v8::internal::TaggedImpl< kRefType, StorageType >::operator== ( TaggedImpl< kOtherRefType, U > other) const
inlineconstexpr

Definition at line 56 of file tagged-impl.h.

Here is the caller graph for this function:

◆ ptr()

template<HeapObjectReferenceType kRefType, typename StorageType >
V8_INLINE constexpr StorageType v8::internal::TaggedImpl< kRefType, StorageType >::ptr ( ) const
inlineconstexpr

Definition at line 114 of file tagged-impl.h.

◆ ptr_location() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
StorageType * v8::internal::TaggedImpl< kRefType, StorageType >::ptr_location ( )
inlineprotected

Definition at line 233 of file tagged-impl.h.

◆ ptr_location() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
const StorageType * v8::internal::TaggedImpl< kRefType, StorageType >::ptr_location ( ) const
inlineprotected

Definition at line 234 of file tagged-impl.h.

◆ SafeEquals()

template<HeapObjectReferenceType kRefType, typename StorageType >
template<HeapObjectReferenceType kOtherRefType>
bool v8::internal::TaggedImpl< kRefType, StorageType >::SafeEquals ( TaggedImpl< kOtherRefType, StorageType > other) const
inlineconstexpr

Definition at line 93 of file tagged-impl.h.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ToSmi() [1/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
Tagged< Smi > v8::internal::TaggedImpl< kRefType, StorageType >::ToSmi ( ) const
inline

Definition at line 33 of file tagged-impl-inl.h.

Here is the call graph for this function:

◆ ToSmi() [2/2]

template<HeapObjectReferenceType kRefType, typename StorageType >
bool v8::internal::TaggedImpl< kRefType, StorageType >::ToSmi ( Tagged< Smi > * value) const
inline

Definition at line 24 of file tagged-impl-inl.h.

Here is the caller graph for this function:

Friends And Related Symbol Documentation

◆ CompressedMaybeObjectSlot

template<HeapObjectReferenceType kRefType, typename StorageType >
friend class CompressedMaybeObjectSlot
friend

Definition at line 238 of file tagged-impl.h.

◆ CompressedObjectSlot

template<HeapObjectReferenceType kRefType, typename StorageType >
friend class CompressedObjectSlot
friend

Definition at line 237 of file tagged-impl.h.

◆ FullHeapObjectSlot

template<HeapObjectReferenceType kRefType, typename StorageType >
friend class FullHeapObjectSlot
friend

Definition at line 241 of file tagged-impl.h.

◆ FullMaybeObjectSlot

template<HeapObjectReferenceType kRefType, typename StorageType >
friend class FullMaybeObjectSlot
friend

Definition at line 240 of file tagged-impl.h.

◆ FullObjectSlot

template<HeapObjectReferenceType kRefType, typename StorageType >
friend class FullObjectSlot
friend

Definition at line 239 of file tagged-impl.h.

Member Data Documentation

◆ kCanBeWeak

template<HeapObjectReferenceType kRefType, typename StorageType >
const bool v8::internal::TaggedImpl< kRefType, StorageType >::kCanBeWeak = kRefType == HeapObjectReferenceType::WEAK
static

Definition at line 44 of file tagged-impl.h.

◆ kIsFull

template<HeapObjectReferenceType kRefType, typename StorageType >
const bool v8::internal::TaggedImpl< kRefType, StorageType >::kIsFull = sizeof(StorageType) == kSystemPointerSize
static

Definition at line 42 of file tagged-impl.h.

◆ ptr_

template<HeapObjectReferenceType kRefType, typename StorageType >
StorageType v8::internal::TaggedImpl< kRefType, StorageType >::ptr_
private

Definition at line 243 of file tagged-impl.h.


The documentation for this class was generated from the following files: