5#ifndef V8_TORQUE_TYPE_ORACLE_H_
6#define V8_TORQUE_TYPE_ORACLE_H_
24 std::string generated,
const Type* non_constexpr_version,
26 auto ptr = std::unique_ptr<AbstractType>(
27 new AbstractType(parent, flags, std::move(name), std::move(generated),
28 non_constexpr_version, specialized_from));
30 if (non_constexpr_version) {
31 DCHECK(ptr->IsConstexpr());
34 Get().nominal_types_.push_back(std::move(ptr));
40 auto ptr = std::unique_ptr<StructType>(
43 Get().aggregate_types_.push_back(std::move(ptr));
49 auto ptr = std::unique_ptr<BitFieldStructType>(
52 Get().bit_field_struct_types_.push_back(std::move(ptr));
57 ClassFlags flags,
const std::string& generates,
63 Get().aggregate_types_.push_back(std::move(type));
74 if (
result->function_pointer_type_id() ==
98 const Type* reference_type,
bool* is_const =
nullptr);
140 static const std::vector<const BuiltinPointerType*>&
142 return Get().all_builtin_pointer_types_;
146 if (std::optional<const Type*> single = type.GetSingleMember()) {
149 return Get().union_types_.Add(std::move(type));
153 if (a->IsSubtypeOf(b))
return b;
161 const Type* source_type) {
162 std::unique_ptr<TopType>
type(
new TopType(std::move(reason), source_type));
164 Get().top_types_.push_back(std::move(type));
257 return Get().GetBuiltinType(
376 while (from !=
nullptr) {
379 if (std::optional<const Callable*> specialization =
380 from_constexpr->GetSpecialization({to, from})) {
381 if ((*specialization)->signature().GetExplicitTypes() ==
387 from = from->parent();
393 static const std::vector<std::unique_ptr<BitFieldStructType>>&
398 static std::vector<const ClassType*>
GetClasses();
421 std::vector<std::unique_ptr<Namespace>>
static std::vector< GenericCallable * > LookupGeneric(const std::string &name)
static const Type * LookupGlobalType(const QualifiedName &name)
static GenericType * LookupGlobalUniqueGenericType(const std::string &name)
static GenericType * LookupUniqueGenericType(const QualifiedName &name)
static const Type * GetConstexprStringType()
static const Type * GetStrongTaggedType()
static GenericType * GetSmiTaggedGeneric()
static Namespace * CreateGenericTypeInstantiationNamespace()
static const Type * GetUninitializedHeapObjectType()
static const Type * GetJSFunctionType()
static const Type * GetUint31Type()
static const Type * GetStringType()
static const Type * GetFloat64Type()
static const Type * GetConstexprInstanceTypeType()
static const Type * GetUnionType(UnionType type)
static const Type * GetConstexprIntPtrType()
Deduplicator< UnionType > union_types_
static const Type * GetUint32Type()
std::vector< std::unique_ptr< AggregateType > > aggregate_types_
static std::vector< const ClassType * > GetClasses()
static const Type * GetConstFloat64Type()
static const Type * GetInt8Type()
static const Type * GetRawPtrType()
static const AbstractType * GetAbstractType(const Type *parent, std::string name, AbstractTypeFlags flags, std::string generated, const Type *non_constexpr_version, MaybeSpecializationKey specialized_from)
static const Type * GetNoContextType()
static const std::vector< std::unique_ptr< AggregateType > > & GetAggregateTypes()
static const Type * GetConstReferenceType(const Type *referenced_type)
static const Type * GetConstexprBoolType()
static const Type * GetUnionType(const Type *a, const Type *b)
static const Type * GetTaggedType()
static const Type * GetHeapObjectType()
static std::optional< const Type * > ImplicitlyConvertableFrom(const Type *to, const Type *from)
static const Type * GetUint8Type()
std::vector< const BuiltinPointerType * > all_builtin_pointer_types_
static const std::vector< const BuiltinPointerType * > & AllBuiltinPointerTypes()
static BitFieldStructType * GetBitFieldStructType(const Type *parent, const BitFieldStructDeclaration *decl)
static GenericType * GetConstSliceGeneric()
static const Type * GetArgumentsType()
static const Type * GetUninitializedIteratorType()
static GenericType * GetMutableReferenceGeneric()
static const Type * GetFixedArrayBaseType()
static size_t FreshTypeId()
static const Type * GetUint64Type()
Deduplicator< BuiltinPointerType > function_pointer_types_
static const Type * GetUint16Type()
static const Type * GetExternalPointerType()
std::vector< std::unique_ptr< BitFieldStructType > > bit_field_struct_types_
static const BuiltinPointerType * GetBuiltinPointerType(TypeVector argument_types, const Type *return_type)
static const Type * GetObjectType()
static const Type * GetNativeContextType()
static const Type * GetMutableSliceType(const Type *referenced_type)
static const Type * GetVoidType()
static const Type * GetInt32Type()
static const Type * GetNumberType()
std::vector< std::unique_ptr< Type > > top_types_
static const Type * GetInt64Type()
const Type * GetBuiltinType(const QualifiedName &name)
static std::optional< const Type * > MatchReferenceGeneric(const Type *reference_type, bool *is_const=nullptr)
static const Type * GetTaggedZeroPatternType()
static const Type * GetGenericTypeInstance(GenericType *generic_type, TypeVector arg_types)
static const Type * GetConstInt32Type()
static const Type * GetUIntPtrType()
static void FinalizeAggregateTypes()
static const Type * GetJSObjectType()
static const TopType * GetTopType(std::string reason, const Type *source_type)
static const Type * GetIntPtrType()
static GenericType * GetMutableSliceGeneric()
static const Type * GetReferenceType(const Type *referenced_type, bool is_const)
static const Type * GetBoolType()
static const Type * GetSmiType()
static const Type * GetMapType()
static const Type * GetContextType()
static const Type * GetTrustedPointerType()
static GenericType * GetReferenceGeneric(bool is_const)
static ClassType * GetClassType(const Type *parent, const std::string &name, ClassFlags flags, const std::string &generates, ClassDeclaration *decl, const TypeAlias *alias)
static GenericType * GetWeakGeneric()
static const Type * GetProtectedPointerType()
static const Type * GetJSAnyType()
static GenericType * GetLazyGeneric()
std::vector< std::unique_ptr< Namespace > > generic_type_instantiation_namespaces_
static GenericType * GetConstReferenceGeneric()
static const Type * GetMutableReferenceType(const Type *referenced_type)
static const Type * GetConstSliceType(const Type *referenced_type)
const Type * GetBuiltinType(const std::string &name)
static const Type * GetNeverType()
static const Type * GetIntegerLiteralType()
static const Type * GetDispatchHandleType()
static const Type * GetConstStringType()
static const std::vector< std::unique_ptr< BitFieldStructType > > & GetBitFieldStructTypes()
static const Type * GetFloat64OrUndefinedOrHoleType()
static StructType * GetStructType(const StructDeclaration *decl, MaybeSpecializationKey specialized_from)
static const Type * GetInt16Type()
static const Type * GetConstInt31Type()
static const Type * GetCppHeapPointerType()
std::vector< std::unique_ptr< Type > > nominal_types_
static const Type * GetUninitializedType()
virtual void SetConstexprVersion(const Type *type) const
virtual bool IsSubtypeOf(const Type *supertype) const
static UnionType FromType(const Type *t)
std::optional< TNode< JSArray > > a
ZoneVector< RpoNumber > & result
static const char *const JS_FUNCTION_TYPE_STRING
static const char *const SMI_TYPE_STRING
static const char *const NEVER_TYPE_STRING
static const char *const TORQUE_INTERNAL_NAMESPACE_STRING
static const char *const JSANY_TYPE_STRING
static const char *const NO_CONTEXT_TYPE_STRING
static const char *const TAGGED_TYPE_STRING
static const char *const JSOBJECT_TYPE_STRING
static const char *const BOOL_TYPE_STRING
static const char *const WEAK_TYPE_STRING
static const char *const BUILTIN_POINTER_TYPE_STRING
static const char *const HEAP_OBJECT_TYPE_STRING
static const char *const INT16_TYPE_STRING
static const char *const UINT64_TYPE_STRING
static const char *const PROTECTEDPTR_TYPE_STRING
static const char *const CONST_SLICE_TYPE_STRING
static constexpr const char *const kFromConstexprMacroName
static const char *const INT8_TYPE_STRING
static const char *const CPPHEAPPTR_TYPE_STRING
static const char *const INT32_TYPE_STRING
static const char *const UNINITIALIZED_HEAP_OBJECT_TYPE_STRING
static const char *const NATIVE_CONTEXT_TYPE_STRING
static const char *const CONSTEXPR_INTPTR_TYPE_STRING
static const char *const UINT8_TYPE_STRING
static const char *const FLOAT64_OR_UNDEFINED_OR_HOLE_TYPE_STRING
static const char *const VOID_TYPE_STRING
static const char *const UINTPTR_TYPE_STRING
static const char *const CONST_REFERENCE_TYPE_STRING
static const char *const MUTABLE_SLICE_TYPE_STRING
static const char *const TAGGED_ZERO_PATTERN_TYPE_STRING
static const char *const STRING_TYPE_STRING
static const char *const UINT16_TYPE_STRING
static const char *const UINT32_TYPE_STRING
static const char *const RAWPTR_TYPE_STRING
static const char *const EXTERNALPTR_TYPE_STRING
static const char *const NUMBER_TYPE_STRING
static const char *const INTPTR_TYPE_STRING
std::optional< SpecializationKey< GenericType > > MaybeSpecializationKey
static const char *const INT64_TYPE_STRING
static const char *const CONSTEXPR_BOOL_TYPE_STRING
static const char *const MUTABLE_REFERENCE_TYPE_STRING
static const char *const CONSTEXPR_INSTANCE_TYPE_TYPE_STRING
static const char *const CONST_FLOAT64_TYPE_STRING
static const char *const UNINITIALIZED_TYPE_STRING
static const char *const CONSTEXPR_STRING_TYPE_STRING
static const char *const FIXED_ARRAY_BASE_TYPE_STRING
static const char *const SMI_TAGGED_TYPE_STRING
static const char *const TRUSTEDPTR_TYPE_STRING
static const char *const CONST_INT31_TYPE_STRING
static const char *const LAZY_TYPE_STRING
static const char *const INTEGER_LITERAL_TYPE_STRING
static const char *const DISPATCH_HANDLE_TYPE_STRING
std::vector< const Type * > TypeVector
static const char *const CONST_STRING_TYPE_STRING
static const char *const STRONG_TAGGED_TYPE_STRING
Namespace * CurrentNamespace()
static const char *const ARGUMENTS_TYPE_STRING
static const char *const UNINITIALIZED_ITERATOR_TYPE_STRING
static const char *const OBJECT_TYPE_STRING
static const char *const FLOAT64_TYPE_STRING
static const char *const CONTEXT_TYPE_STRING
static const char *const MAP_TYPE_STRING
static const char *const CONST_INT32_TYPE_STRING
static const char *const UINT31_TYPE_STRING
#define DCHECK(condition)