5#ifndef V8_OBJECTS_INSTANCE_TYPE_CHECKER_H_
6#define V8_OBJECTS_INSTANCE_TYPE_CHECKER_H_
21#define INSTANCE_TYPE_CHECKERS_SINGLE(V) \
22 TORQUE_INSTANCE_CHECKERS_SINGLE_FULLY_DEFINED(V) \
23 TORQUE_INSTANCE_CHECKERS_SINGLE_ONLY_DECLARED(V) \
24 V(BigInt, BIGINT_TYPE) \
25 V(FixedArrayExact, FIXED_ARRAY_TYPE)
27#define INSTANCE_TYPE_CHECKERS_RANGE(V) \
28 TORQUE_INSTANCE_CHECKERS_RANGE_FULLY_DEFINED(V) \
29 TORQUE_INSTANCE_CHECKERS_RANGE_ONLY_DECLARED(V) \
30 V(CallableJSFunction, FIRST_CALLABLE_JS_FUNCTION_TYPE, \
31 LAST_CALLABLE_JS_FUNCTION_TYPE)
33#define INSTANCE_TYPE_CHECKERS_CUSTOM(V) \
36 V(FreeSpaceOrFiller) \
38 V(InternalizedString) \
39 V(MaybeReadOnlyJSObject) \
42#define INSTANCE_TYPE_CHECKERS(V) \
43 INSTANCE_TYPE_CHECKERS_SINGLE(V) \
44 INSTANCE_TYPE_CHECKERS_RANGE(V) \
45 INSTANCE_TYPE_CHECKERS_CUSTOM(V)
47namespace InstanceTypeChecker {
48#define IS_TYPE_FUNCTION_DECL(Type, ...) \
49 V8_INLINE constexpr bool Is##Type(InstanceType instance_type); \
50 V8_INLINE bool Is##Type(Tagged<Map> map);
54#undef IS_TYPE_FUNCTION_DECL
56#if V8_STATIC_ROOTS_BOOL
65 StaticReadOnlyRootsPointerTable[
static_cast<size_t>(
71constexpr Tagged_t kStringMapLowerBound = 0;
74constexpr Tagged_t kStringMapUpperBound =
75 StaticReadOnlyRoot::kThinOneByteStringMap;
77#define ASSERT_IS_LAST_STRING_MAP(instance_type, size, name, Name) \
78 static_assert(StaticReadOnlyRoot::k##Name##Map <= kStringMapUpperBound);
80#undef ASSERT_IS_LAST_STRING_MAP
#define IS_TYPE_FUNCTION_DECL(Type)
#define INSTANCE_TYPE_CHECKERS(V)
constexpr Tagged_t kNonJsReceiverMapLimit
@ kFirstJSReceiverMapRoot
#define STRING_TYPE_LIST(V)