5#ifndef V8_HANDLES_MAYBE_HANDLES_H_
6#define V8_HANDLES_MAYBE_HANDLES_H_
77 return address() == other.address();
97#ifdef V8_ENABLE_DIRECT_HANDLE
102 template <
typename To,
typename From>
148#ifdef V8_ENABLE_DIRECT_HANDLE
160 template <
typename S,
typename = std::enable_if_t<is_subtype_v<S, T>>>
167 template <
typename S,
typename = std::enable_if_t<is_subtype_v<S, T>>>
174 template <
typename S,
typename = std::enable_if_t<is_subtype_v<S, T>>>
181 template <
typename S,
typename = std::enable_if_t<is_subtype_v<S, T>>>
199 template <
typename S>
211 bool equals(MaybeHandle<T> other)
const {
212 return address() == other.address();
231 friend class MaybeHandle;
233 template <
typename To,
typename From>
251 :
handle_(object, local_heap) {}
253 template <
typename S>
257 template <
typename S>
261 template <
typename S>
265 template <
typename S>
274 return handle_.ToHandleChecked();
276 template <
typename S>
292 template <
typename To,
typename From>
295 template <
typename U>
298 template <
typename U>
335 return handle_.ToHandleChecked();
static V8_INLINE const DirectHandle null()
V8_INLINE MaybeDirectHandle(IndirectHandle< S > handle)
friend class DirectHandle
V8_INLINE MaybeDirectHandle(Tagged< T > object, LocalIsolate *isolate)
friend class MaybeDirectHandle
V8_INLINE DirectHandle< T > ToHandleChecked() const
V8_INLINE void Check() const
friend MaybeIndirectHandle< U > indirect_handle(MaybeDirectHandle< U >, LocalIsolate *)
V8_INLINE MaybeDirectHandle(MaybeDirectHandle< S > handle)
friend MaybeIndirectHandle< U > indirect_handle(MaybeDirectHandle< U >, Isolate *)
friend MaybeDirectHandle< To > UncheckedCast(MaybeDirectHandle< From > value)
V8_INLINE MaybeDirectHandle(NullMaybeHandleType)
V8_INLINE MaybeDirectHandle(Tagged< T > object, LocalHeap *local_heap)
V8_WARN_UNUSED_RESULT V8_INLINE bool ToHandle(DirectHandle< S > *out) const
V8_INLINE MaybeDirectHandle(DirectHandle< S > handle)
V8_INLINE MaybeDirectHandle(Tagged< T > object, Isolate *isolate)
V8_INLINE MaybeDirectHandle(MaybeIndirectHandle< S > handle)
MaybeIndirectHandle< T > handle_
V8_INLINE MaybeDirectHandle()=default
V8_INLINE void Assert() const
V8_INLINE bool is_null() const
V8_INLINE Handle< T > ToHandleChecked() const
bool equals(MaybeHandle< T > other) const
V8_INLINE MaybeHandle()=default
V8_INLINE MaybeHandle(MaybeHandle< S > maybe_handle)
V8_WARN_UNUSED_RESULT V8_INLINE bool ToHandle(Handle< S > *out) const
friend MaybeIndirectHandle< To > UncheckedCast(MaybeHandle< From > value)
V8_INLINE MaybeHandle(NullMaybeHandleType)
V8_INLINE MaybeHandle(Handle< S > handle)
V8_INLINE void Assert() const
V8_WARN_UNUSED_RESULT V8_INLINE bool ToHandle(DirectHandle< S > *out) const
V8_INLINE Address address() const
V8_INLINE MaybeHandle(Address *location)
V8_INLINE void Check() const
bool is_identical_to(const MaybeObjectDirectHandle &other) const
MaybeDirectHandle< Object > handle_
Tagged< MaybeObject > operator*() const
static MaybeObjectDirectHandle Weak(DirectHandle< Object > object)
HeapObjectReferenceType reference_type_
MaybeObjectDirectHandle(DirectHandle< Object > object)
MaybeObjectDirectHandle(DirectHandle< Object > object, HeapObjectReferenceType reference_type)
HeapObjectReferenceType reference_type() const
DirectHandle< Object > object() const
Tagged< MaybeObject > operator->() const
MaybeObjectDirectHandle()
static MaybeObjectDirectHandle Weak(Tagged< Object > object, Isolate *isolate)
HeapObjectReferenceType reference_type_
bool is_identical_to(const MaybeObjectHandle &other) const
static MaybeObjectHandle Weak(Tagged< Object > object, Isolate *isolate)
Tagged< MaybeObject > operator->() const
HeapObjectReferenceType reference_type() const
IndirectHandle< Object > object() const
Tagged< MaybeObject > operator*() const
MaybeHandle< Object > handle_
LinkageLocation location_
V8_INLINE IndirectHandle< T > handle(Tagged< T > object, Isolate *isolate)
constexpr NullMaybeHandleType kNullMaybeHandle
constexpr Address kTaggedNullAddress
MaybeHandle< T > MaybeIndirectHandle
static constexpr bool is_subtype_v
std::ostream & operator<<(std::ostream &os, AtomicMemoryOrder order)
#define DCHECK_NOT_NULL(val)
#define CHECK_NOT_NULL(val)
#define DCHECK_NE(v1, v2)
#define CHECK_NE(lhs, rhs)
#define V8_WARN_UNUSED_RESULT