5#ifndef INCLUDE_V8_TRACED_HANDLE_H_
6#define INCLUDE_V8_TRACED_HANDLE_H_
28class BasicTracedReferenceExtractor;
87 reinterpret_cast<std::atomic<void*>*
>(&
slot())->store(
88 new_val, std::memory_order_relaxed);
95 return reinterpret_cast<std::atomic<const void*> const*
>(&
slot())->load(
96 std::memory_order_relaxed);
102 template <
typename F>
104 template <
typename U>
140#ifdef V8_ENABLE_CHECKS
143 return this->
template value<T>();
160 template <
typename F>
163 template <
typename F>
165 template <
typename F>
167 template <
typename F>
196 static_assert(std::is_base_of<T, S>::value,
"type check");
200 this->slot() = this->NewFromNonEmptyValue(
201 isolate, *that, &this->slot(),
217 static_assert(std::is_base_of<T, S>::value,
"type check");
221 this->slot() = this->NewFromNonEmptyValue(
222 isolate, *that, &this->slot(),
233 *
this = std::move(other);
240 template <
typename S>
243 *
this = std::move(other);
259 template <
typename S>
315 reinterpret_cast<internal::Isolate*
>(isolate),
348 return !(lhs == rhs);
354 return !(lhs == rhs);
360 return !(rhs == lhs);
366 static_assert(std::is_base_of<T, S>::value,
"type check");
371 this->SetSlotThreadSafe(this->NewFromNonEmptyValue(
372 isolate, *other, &this->slot(),
381 static_assert(std::is_base_of<T, S>::value,
"type check");
386 this->SetSlotThreadSafe(this->NewFromNonEmptyValue(
387 isolate, *other, &this->slot(),
396 static_assert(std::is_base_of<T, S>::value,
"type check");
397 *
this = std::move(rhs.template As<T>());
405 static_assert(std::is_base_of<T, S>::value,
"type check");
406 *
this = rhs.template As<T>();
Definition: v8-traced-handle.h:125
friend class Object
Definition: v8-traced-handle.h:162
friend class ReturnValue
Definition: v8-traced-handle.h:168
BasicTracedReference< S > & As() const
Definition: v8-traced-handle.h:133
T * operator->() const
Definition: v8-traced-handle.h:139
Local< T > Get(Isolate *isolate) const
Definition: v8-traced-handle.h:130
friend class Local
Definition: v8-traced-handle.h:161
friend class TracedReference
Definition: v8-traced-handle.h:164
friend class BasicTracedReference
Definition: v8-traced-handle.h:166
Definition: v8-isolate.h:210
Definition: v8-local-handle.h:258
static Local< T > New(Isolate *isolate, Local< T > that)
Definition: v8-local-handle.h:338
Definition: v8-traced-handle.h:56
void Reset()
Definition: v8-traced-handle.h:321
TracedReferenceBase()=default
friend class internal::BasicTracedReferenceExtractor
Definition: v8-traced-handle.h:101
const void * GetSlotThreadSafe() const
Definition: v8-traced-handle.h:94
friend bool operator==(const TracedReferenceBase &, const Local< U > &)
Definition: v8-traced-handle.h:335
Local< Value > Get(Isolate *isolate) const
Definition: v8-traced-handle.h:67
void SetSlotThreadSafe(void *new_val)
Definition: v8-traced-handle.h:86
bool IsEmptyThreadSafe() const
Definition: v8-traced-handle.h:76
Definition: v8-traced-handle.h:177
TracedReference(TracedReference &&other) noexcept
Definition: v8-traced-handle.h:231
TracedReference(Isolate *isolate, Local< S > that)
Definition: v8-traced-handle.h:195
TracedReference(const TracedReference &other)
Definition: v8-traced-handle.h:250
TracedReference< S > & As() const
Definition: v8-traced-handle.h:302
TracedReference(TracedReference< S > &&other) noexcept
Definition: v8-traced-handle.h:241
TracedReference()=default
TracedReference & operator=(const TracedReference< S > &rhs)
TracedReference(const TracedReference< S > &other)
Definition: v8-traced-handle.h:260
TracedReference & operator=(TracedReference< S > &&rhs) noexcept
TracedReference(Isolate *isolate, Local< S > that, IsDroppable)
Definition: v8-traced-handle.h:215
TracedReference & operator=(TracedReference &&rhs) noexcept
Definition: v8-traced-handle.h:411
Definition: v8-handle-base.h:53
internal::Address *const & slot() const
Definition: v8-handle-base.h:79
bool IsEmpty() const
Definition: v8-handle-base.h:56
static bool EqualHandles(const T1 &lhs, const T2 &rhs)
Definition: v8-internal.h:1485
static Address ValueAsAddress(const T *value)
Definition: v8-internal.h:1457
TracedReferenceHandling
Definition: v8-traced-handle.h:35
TracedReferenceStoreMode
Definition: v8-traced-handle.h:30
void CopyTracedReference(const internal::Address *const *from, internal::Address **to)
void DisposeTracedReference(internal::Address *global_handle)
internal::Address * GlobalizeTracedReference(internal::Isolate *isolate, internal::Address value, internal::Address *slot, TracedReferenceStoreMode store_mode, internal::TracedReferenceHandling reference_handling)
uintptr_t Address
Definition: v8-internal.h:31
void MoveTracedReference(internal::Address **from, internal::Address **to)
Definition: libplatform.h:15
bool operator!=(const TracedReferenceBase &lhs, const TracedReferenceBase &rhs)
Definition: v8-traced-handle.h:346
bool operator==(const TracedReferenceBase &lhs, const TracedReferenceBase &rhs)
Definition: v8-traced-handle.h:329
Definition: v8-traced-handle.h:179
#define V8_EXPORT
Definition: v8config.h:762
#define V8_INLINE
Definition: v8config.h:477
#define V8_DEPRECATED(message)
Definition: v8config.h:572
#define V8_UNLIKELY(condition)
Definition: v8config.h:626