v8 13.6.233 (node 24.1.0)
V8 is Google's open source JavaScript engine
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages Concepts
PersistentBase< T > Class Template Reference

#include <v8-persistent-handle.h>

Inheritance diagram for PersistentBase< T >:
Collaboration diagram for PersistentBase< T >:

Public Member Functions

V8_INLINE void Reset ()
 
template<class S>
V8_INLINE void Reset (Isolate *isolate, const Local< S > &other)
 
template<class S>
V8_INLINE void Reset (Isolate *isolate, const PersistentBase< S > &other)
 
V8_INLINE Local< T > Get (Isolate *isolate) const
 
template<class S>
V8_INLINE bool operator== (const PersistentBase< S > &that) const
 
template<class S>
V8_INLINE bool operator== (const Local< S > &that) const
 
template<class S>
V8_INLINE bool operator!= (const PersistentBase< S > &that) const
 
template<class S>
V8_INLINE bool operator!= (const Local< S > &that) const
 
template<typename P>
V8_INLINE void SetWeak (P *parameter, typename WeakCallbackInfo< P >::Callback callback, WeakCallbackType type)
 
V8_INLINE void SetWeak ()
 
template<typename P>
V8_INLINE P * ClearWeak ()
 
V8_INLINE void ClearWeak ()
 
V8_INLINE void AnnotateStrongRetainer (const char *label)
 
V8_INLINE bool IsWeak () const
 
V8_INLINE void SetWrapperClassId (uint16_t class_id)
 
V8_INLINE uint16_t WrapperClassId () const
 
 PersistentBase (const PersistentBase &other)=delete
 
void operator= (const PersistentBase &)=delete
 
template<class S>
void Reset (Isolate *isolate, const Local< S > &other)
 
template<class S>
void Reset (Isolate *isolate, const PersistentBase< S > &other)
 
template<typename P>
P * ClearWeak ()
 
- Public Member Functions inherited from IndirectHandleBase
V8_INLINE bool IsEmpty () const
 
V8_INLINE void Clear ()
 

Friends

class Isolate
 
class Utils
 
template<class F>
class Local
 
template<class F1, class F2>
class Persistent
 
template<class F>
class Global
 
template<class F>
class PersistentBase
 
template<class F>
class ReturnValue
 
template<class F1, class F2, class F3>
class PersistentValueMapBase
 
class Object
 
class internal::ValueHelper
 

Additional Inherited Members

- Protected Member Functions inherited from IndirectHandleBase
V8_INLINE IndirectHandleBase ()=default
 
V8_INLINE IndirectHandleBase (const IndirectHandleBase &other)=default
 
V8_INLINE IndirectHandleBaseoperator= (const IndirectHandleBase &that)=default
 
V8_INLINE IndirectHandleBase (internal::Address *location)
 
V8_INLINE internal::Address ptr () const
 
V8_INLINE internal::Address *const & slot () const
 
V8_INLINE internal::Address *& slot ()
 
template<typename T, bool check_null = false>
V8_INLINE T * value () const
 
V8_INLINE internal::ValueHelper::InternalRepresentationType repr () const
 

Detailed Description

template<class T>
class v8::PersistentBase< T >

An object reference that is independent of any handle scope. Where a Local handle only lives as long as the HandleScope in which it was allocated, a PersistentBase handle remains valid until it is explicitly disposed using Reset().

A persistent handle contains a reference to a storage cell within the V8 engine which holds an object value and which is updated by the garbage collector whenever the object is moved. A new storage cell can be created using the constructor or PersistentBase::Reset and existing handles can be disposed using PersistentBase::Reset.

Definition at line 93 of file v8-persistent-handle.h.

Constructor & Destructor Documentation

◆ PersistentBase()

template<class T>
PersistentBase ( const PersistentBase< T > & other)
delete

References PersistentBase.

Member Function Documentation

◆ AnnotateStrongRetainer()

template<class T>
void AnnotateStrongRetainer ( const char * label)

Annotates the strong handle with the given label, which is then used by the heap snapshot generator as a name of the edge from the root to the handle. The function does not take ownership of the label and assumes that the label is valid as long as the handle is valid.

Definition at line 511 of file v8-persistent-handle.h.

References v8::api_internal::AnnotateStrongRetainer(), and IndirectHandleBase::slot().

Referenced by PersistentValueReference< K, V, Traits >::AnnotateStrongRetainer().

◆ ClearWeak() [1/3]

template<class T>
template<typename P>
V8_INLINE P * ClearWeak ( )

References V8_INLINE.

Referenced by ClearWeak().

◆ ClearWeak() [2/3]

template<class T>
V8_INLINE void ClearWeak ( )
inline

Definition at line 167 of file v8-persistent-handle.h.

References ClearWeak(), and V8_INLINE.

◆ ClearWeak() [3/3]

template<class T>
template<typename P>
P * ClearWeak ( )

Definition at line 506 of file v8-persistent-handle.h.

◆ Get()

template<class T>
V8_INLINE Local< T > Get ( Isolate * isolate) const
inline

Definition at line 115 of file v8-persistent-handle.h.

References Isolate, Local, Local< T >::New(), and V8_INLINE.

◆ IsWeak()

template<class T>
bool IsWeak ( ) const

Returns true if the handle's reference is weak.

Definition at line 442 of file v8-persistent-handle.h.

References IndirectHandleBase::IsEmpty(), and IndirectHandleBase::slot().

Referenced by PersistentValueReference< K, V, Traits >::Release().

◆ operator!=() [1/2]

template<class T>
template<class S>
V8_INLINE bool operator!= ( const Local< S > & that) const
inline

Definition at line 135 of file v8-persistent-handle.h.

References Local, operator==(), and V8_INLINE.

◆ operator!=() [2/2]

template<class T>
template<class S>
V8_INLINE bool operator!= ( const PersistentBase< S > & that) const
inline

Definition at line 130 of file v8-persistent-handle.h.

References operator==(), PersistentBase, and V8_INLINE.

◆ operator=()

template<class T>
void operator= ( const PersistentBase< T > & )
delete

References PersistentBase.

◆ operator==() [1/2]

template<class T>
template<class S>
V8_INLINE bool operator== ( const Local< S > & that) const
inline

Definition at line 125 of file v8-persistent-handle.h.

References HandleHelper::EqualHandles(), Local, and V8_INLINE.

◆ operator==() [2/2]

template<class T>
template<class S>
V8_INLINE bool operator== ( const PersistentBase< S > & that) const
inline

Definition at line 120 of file v8-persistent-handle.h.

References HandleHelper::EqualHandles(), PersistentBase, and V8_INLINE.

Referenced by operator!=(), and operator!=().

◆ Reset() [1/5]

◆ Reset() [2/5]

template<class T>
template<class S>
V8_INLINE void Reset ( Isolate * isolate,
const Local< S > & other )

If non-empty, destroy the underlying storage cell and create a new one with the contents of other if other is non empty

References Isolate, Local, and V8_INLINE.

◆ Reset() [3/5]

template<class T>
template<class S>
void Reset ( Isolate * isolate,
const Local< S > & other )

If non-empty, destroy the underlying storage cell and create a new one with the contents of other if other is non empty

Definition at line 461 of file v8-persistent-handle.h.

◆ Reset() [4/5]

template<class T>
template<class S>
V8_INLINE void Reset ( Isolate * isolate,
const PersistentBase< S > & other )

If non-empty, destroy the underlying storage cell and create a new one with the contents of other if other is non empty

References Isolate, PersistentBase, and V8_INLINE.

◆ Reset() [5/5]

template<class T>
template<class S>
void Reset ( Isolate * isolate,
const PersistentBase< S > & other )

If non-empty, destroy the underlying storage cell and create a new one with the contents of other if other is non empty

Definition at line 474 of file v8-persistent-handle.h.

◆ SetWeak() [1/2]

template<class T>
void SetWeak ( )

Turns this handle into a weak phantom handle without finalization callback. The handle will be reset automatically when the garbage collector detects that the object is no longer reachable.

Definition at line 500 of file v8-persistent-handle.h.

References v8::api_internal::MakeWeak(), and IndirectHandleBase::slot().

◆ SetWeak() [2/2]

template<class T>
template<typename P>
V8_INLINE void SetWeak ( P * parameter,
typename WeakCallbackInfo< P >::Callback callback,
WeakCallbackType type )

Install a finalization callback on this object. NOTE: There is no guarantee as to when or even if the callback is invoked. The invocation is performed solely on a best effort basis. As always, GC-based finalization should not be relied upon for any critical form of resource management!

The callback is supposed to reset the handle. No further V8 API may be called in this callback. In case additional work involving V8 needs to be done, a second callback can be scheduled using WeakCallbackInfo<void>::SetSecondPassCallback.

Definition at line 484 of file v8-persistent-handle.h.

References v8::api_internal::MakeWeak(), IndirectHandleBase::slot(), and V8_INLINE.

◆ SetWrapperClassId()

template<class T>
void SetWrapperClassId ( uint16_t class_id)

Assigns a wrapper class ID to the handle.

Definition at line 516 of file v8-persistent-handle.h.

References IndirectHandleBase::IsEmpty(), and IndirectHandleBase::slot().

◆ WrapperClassId()

template<class T>
uint16_t WrapperClassId ( ) const

Returns the class ID previously assigned to this handle or 0 if no class ID was previously assigned.

Definition at line 524 of file v8-persistent-handle.h.

References IndirectHandleBase::IsEmpty(), and IndirectHandleBase::slot().

Friends And Related Symbol Documentation

◆ Global

template<class T>
template<class F>
friend class Global
friend

Definition at line 202 of file v8-persistent-handle.h.

References Global.

Referenced by Global.

◆ internal::ValueHelper

template<class T>
friend class internal::ValueHelper
friend

Definition at line 210 of file v8-persistent-handle.h.

References IndirectHandleBase::IndirectHandleBase(), and V8_INLINE.

◆ Isolate

template<class T>
friend class Isolate
friend

Definition at line 195 of file v8-persistent-handle.h.

References Isolate.

Referenced by Get(), Global< T >::Global(), Global< T >::Global(), Isolate, Reset(), and Reset().

◆ Local

template<class T>
template<class F>
friend class Local
friend

Definition at line 198 of file v8-persistent-handle.h.

References Local.

Referenced by Get(), Global< T >::Global(), Local, operator!=(), operator==(), and Reset().

◆ Object

template<class T>
friend class Object
friend

Definition at line 209 of file v8-persistent-handle.h.

References Object.

Referenced by Object.

◆ Persistent

template<class T>
template<class F1, class F2>
friend class Persistent
friend

Persistent is a way to create a strong pointer from an off-heap object to another on-heap object. As long as the Persistent handle is alive the GC will keep the object pointed to alive. The Persistent handle is always a GC root from the point of view of the GC. Persistent must be constructed and destructed in the same thread.

Definition at line 200 of file v8-persistent-handle.h.

References Persistent.

Referenced by Persistent.

◆ PersistentBase

◆ PersistentValueMapBase

template<class T>
template<class F1, class F2, class F3>
friend class PersistentValueMapBase
friend

Definition at line 208 of file v8-persistent-handle.h.

References PersistentValueMapBase.

Referenced by PersistentValueMapBase.

◆ ReturnValue

template<class T>
template<class F>
friend class ReturnValue
friend

Definition at line 206 of file v8-persistent-handle.h.

References ReturnValue.

Referenced by ReturnValue.

◆ Utils

template<class T>
friend class Utils
friend

Definition at line 196 of file v8-persistent-handle.h.

References Utils.

Referenced by Utils.


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