v8 12.4.254 (node 22.4.1)
V8 is Google's open source JavaScript engine
|
Data Structures | |
class | DisallowGarbageCollectionScope |
class | HeapConsistency |
class | HeapState |
class | NoGarbageCollectionScope |
struct | ObjectSizeTrait |
struct | ObjectSizeTrait< T, false > |
struct | ObjectSizeTrait< T, true > |
Typedefs | |
template<typename T > | |
using | CrossThreadPersistent = internal::BasicCrossThreadPersistent< T, internal::StrongCrossThreadPersistentPolicy > |
template<typename T > | |
using | WeakCrossThreadPersistent = internal::BasicCrossThreadPersistent< T, internal::WeakCrossThreadPersistentPolicy > |
template<typename T > | |
using | UncompressedMember = internal::BasicMember< T, internal::StrongMemberTag, internal::DijkstraWriteBarrierPolicy, internal::DefaultMemberCheckingPolicy, internal::RawPointer > |
Functions | |
template<typename T > | |
void | FreeUnreferencedObject (HeapHandle &heap_handle, T &object) |
template<typename T > | |
bool | Resize (T &object, AdditionalBytes additional_bytes) |
using CrossThreadPersistent = internal::BasicCrossThreadPersistent< T, internal::StrongCrossThreadPersistentPolicy> |
DO NOT USE: Has known caveats, see below.
CrossThreadPersistent allows retaining objects from threads other than the thread the owning heap is operating on.
Known caveats:
Definition at line 445 of file cross-thread-persistent.h.
using UncompressedMember = internal::BasicMember< T, internal::StrongMemberTag, internal::DijkstraWriteBarrierPolicy, internal::DefaultMemberCheckingPolicy, internal::RawPointer> |
using WeakCrossThreadPersistent = internal::BasicCrossThreadPersistent< T, internal::WeakCrossThreadPersistentPolicy> |
DO NOT USE: Has known caveats, see below.
CrossThreadPersistent allows weakly retaining objects from threads other than the thread the owning heap is operating on.
Known caveats:
Definition at line 460 of file cross-thread-persistent.h.
void FreeUnreferencedObject | ( | HeapHandle & | heap_handle, |
T & | object | ||
) |
Informs the garbage collector that object
can be immediately reclaimed. The destructor may not be invoked immediately but only on next garbage collection.
It is up to the embedder to guarantee that no other object holds a reference to object
after calling FreeUnreferencedObject()
. In case such a reference exists, it's use results in a use-after-free.
To aid in using the API, FreeUnreferencedObject()
may be called from destructors on objects that would be reclaimed in the same garbage collection cycle.
heap_handle | The corresponding heap. |
object | Reference to an object that is of type GarbageCollected and should be immediately reclaimed. |
Definition at line 61 of file explicit-management.h.
References ExplicitManagementImpl::subtle::FreeUnreferencedObject.
bool Resize | ( | T & | object, |
AdditionalBytes | additional_bytes | ||
) |
Tries to resize object
of type T
with additional bytes on top of sizeof(T). Resizing is only useful with trailing inlined storage, see e.g. MakeGarbageCollected(AllocationHandle&, AdditionalBytes)
.
Resize()
performs growing or shrinking as needed and may skip the operation for internal reasons, see return value.
It is up to the embedder to guarantee that in case of shrinking a larger object down, the reclaimed area is not used anymore. Any subsequent use results in a use-after-free.
The object
must be live when calling Resize()
.
object | Reference to an object that is of type GarbageCollected and should be resized. |
additional_bytes | Bytes in addition to sizeof(T) that the object should provide. |
Definition at line 90 of file explicit-management.h.
References ExplicitManagementImpl::subtle::Resize, and AdditionalBytes::value.