v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
types.h File Reference
#include <algorithm>
#include <optional>
#include <set>
#include <string>
#include <vector>
#include "src/torque/ast.h"
#include "src/torque/constants.h"
#include "src/torque/source-positions.h"
#include "src/torque/utils.h"
Include dependency graph for types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  v8::internal::torque::TypeBase
 
struct  v8::internal::torque::SpecializationKey< T >
 
struct  v8::internal::torque::TypeChecker
 
class  v8::internal::torque::Type
 
struct  v8::internal::torque::NameAndType
 
struct  v8::internal::torque::Field
 
class  v8::internal::torque::TopType
 
class  v8::internal::torque::AbstractType
 
class  v8::internal::torque::BuiltinPointerType
 
struct  v8::internal::torque::TypeLess
 
class  v8::internal::torque::UnionType
 
struct  v8::internal::torque::BitField
 
class  v8::internal::torque::BitFieldStructType
 
class  v8::internal::torque::AggregateType
 
class  v8::internal::torque::StructType
 
class  v8::internal::torque::ClassType
 
class  v8::internal::torque::VisitResult
 
class  v8::internal::torque::VisitResultVector
 
struct  v8::internal::torque::LabelDefinition
 
struct  v8::internal::torque::LabelDeclaration
 
struct  v8::internal::torque::ParameterTypes
 
struct  v8::internal::torque::Signature
 

Namespaces

namespace  v8
 
namespace  v8::internal
 
namespace  v8::internal::torque
 

Macros

#define DECLARE_TYPE_BOILERPLATE(x)
 

Typedefs

using v8::internal::torque::TypeVector = std::vector<const Type*>
 
using v8::internal::torque::MaybeSpecializationKey = std::optional<SpecializationKey<GenericType>>
 
using v8::internal::torque::NameAndTypeVector = std::vector<NameAndType>
 
using v8::internal::torque::LabelDefinitionVector = std::vector<LabelDefinition>
 
using v8::internal::torque::LabelDeclarationVector = std::vector<LabelDeclaration>
 
using v8::internal::torque::NameVector = std::vector<Identifier*>
 

Enumerations

enum class  v8::internal::torque::ObjectSlotKind : uint8_t { v8::internal::torque::kNoPointer , v8::internal::torque::kStrongPointer , v8::internal::torque::kMaybeObjectPointer , v8::internal::torque::kCustomWeakPointer }
 
enum class  v8::internal::torque::ParameterMode { v8::internal::torque::kProcessImplicit , v8::internal::torque::kIgnoreImplicit }
 

Functions

size_t v8::internal::torque::hash_value (const TypeVector &types)
 
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const NameAndType &name_and_type)
 
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const Field &field)
 
bool v8::internal::torque::operator< (const Type &a, const Type &b)
 
const Typev8::internal::torque::SubtractType (const Type *a, const Type *b)
 
std::optional< ObjectSlotKindv8::internal::torque::Combine (ObjectSlotKind a, ObjectSlotKind b)
 
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const Type &t)
 
template<bool success = false>
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const Type *t)
 
std::ostream & v8::internal::torque::operator<< (base::CheckMessageStream &os, const Type *t)
 
VisitResult v8::internal::torque::ProjectStructField (VisitResult structure, const std::string &fieldname)
 
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const TypeVector &types)
 
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const ParameterTypes &p)
 
void v8::internal::torque::PrintSignature (std::ostream &os, const Signature &sig, bool with_names)
 
std::ostream & v8::internal::torque::operator<< (std::ostream &os, const Signature &sig)
 
bool v8::internal::torque::IsAssignableFrom (const Type *to, const Type *from)
 
TypeVector v8::internal::torque::LowerType (const Type *type)
 
size_t v8::internal::torque::LoweredSlotCount (const Type *type)
 
TypeVector v8::internal::torque::LowerParameterTypes (const TypeVector &parameters)
 
TypeVector v8::internal::torque::LowerParameterTypes (const ParameterTypes &parameter_types, size_t arg_count)
 
std::optional< std::tuple< size_t, std::string > > v8::internal::torque::SizeOf (const Type *type)
 
bool v8::internal::torque::IsAnyUnsignedInteger (const Type *type)
 
bool v8::internal::torque::IsAllowedAsBitField (const Type *type)
 
bool v8::internal::torque::IsPointerSizeIntegralType (const Type *type)
 
bool v8::internal::torque::Is32BitIntegralType (const Type *type)
 
std::optional< NameAndTypev8::internal::torque::ExtractSimpleFieldArraySize (const ClassType &class_type, Expression *array_size)
 

Macro Definition Documentation

◆ DECLARE_TYPE_BOILERPLATE

#define DECLARE_TYPE_BOILERPLATE ( x)
Value:
static x* cast(TypeBase* declarable) { \
DCHECK(declarable->Is##x()); \
return static_cast<x*>(declarable); \
} \
static const x* cast(const TypeBase* declarable) { \
DCHECK(declarable->Is##x()); \
return static_cast<const x*>(declarable); \
} \
static x* DynamicCast(TypeBase* declarable) { \
if (!declarable) return nullptr; \
if (!declarable->Is##x()) return nullptr; \
return static_cast<x*>(declarable); \
} \
static const x* DynamicCast(const TypeBase* declarable) { \
if (!declarable) return nullptr; \
if (!declarable->Is##x()) return nullptr; \
return static_cast<const x*>(declarable); \
}
int x
uint32_t cast

Definition at line 65 of file types.h.