5#ifndef V8_OBJECTS_CASTING_H_
6#define V8_OBJECTS_CASTING_H_
45template <
typename T,
typename U>
49template <
typename T,
typename U>
51template <
typename T,
typename U>
53template <
typename T,
typename U>
54inline bool Is(DirectHandle<U> value);
55template <
typename T,
typename U>
56inline bool Is(MaybeDirectHandle<U> value);
60template <
typename To,
typename From>
64template <
typename To,
typename From>
66template <
typename To,
typename From>
68template <
typename To,
typename From>
70template <
typename To,
typename From>
76template <
typename To,
typename From>
78 if (!
Is<To>(value))
return false;
82template <
typename To,
typename From>
84 if (!
Is<To>(value))
return false;
88template <
typename To,
typename From>
90 if (!
Is<To>(value))
return false;
94template <
typename To,
typename From>
96 if (!
Is<To>(value))
return false;
100template <
typename To,
typename From>
103 if (!
Is<To>(value))
return false;
107template <
typename To,
typename From>
110 if (!
Is<To>(value))
return false;
114template <
typename To,
typename From>
116 if (!
Is<To>(value))
return false;
123#define INIT_SOURCE_LOCATION_IN_DEBUG v8::SourceLocation::Current()
125#define INIT_SOURCE_LOCATION_IN_DEBUG v8::SourceLocation()
143 DCHECK(GCAwareObjectTypeCheck<T>(
object,
heap));
149template <
typename To,
typename From>
156template <
typename To,
typename From>
164template <
typename To,
typename From>
172template <
typename To,
typename From>
180template <
typename To,
typename From>
191template <
typename To,
typename From>
195template <
typename To,
typename From>
200template <
typename To,
typename From>
204template <
typename To,
typename From>
213template <
typename T,
typename U>
217 if (!value.IsStrongOrSmi())
return false;
224template <
typename T,
typename...
U>
226 using UnionU =
Union<
U...>;
244 template <
typename U>
248 if (value.IsCleared())
return true;
272 return value.IsHeapObject();
279#undef INIT_SOURCE_LOCATION_IN_DEBUG
#define INIT_SOURCE_LOCATION_IN_DEBUG
bool TryCast(Tagged< From > value, Tagged< To > *out)
Tagged< T > MakeStrong(Tagged< T > value)
static constexpr bool is_maybe_weak_v
bool Is(IndirectHandle< U > value)
Tagged(T object) -> Tagged< T >
MaybeHandle< T > MaybeIndirectHandle
Tagged< T > GCSafeCast(Tagged< Object > object, const Heap *heap)
static constexpr bool is_subtype_v
Handle< To > UncheckedCast(Handle< From > value)
Handle< T > IndirectHandle
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
#define DCHECK_WITH_MSG_AND_LOC(condition, message, location)
#define DCHECK(condition)
#define V8_PRETTY_FUNCTION_VALUE_OR(ELSE)
static bool AllowFrom(Tagged< Object > value)
static bool AllowFrom(Tagged< HeapObject > value)
static bool AllowFrom(Tagged< U > value)
static bool AllowFrom(Tagged< Object > value)
static bool AllowFrom(Tagged< Object > value)
static bool AllowFrom(Tagged< HeapObject > value)