v8
V8 is Google’s open source high-performance JavaScript and WebAssembly engine, written in C++.
Loading...
Searching...
No Matches
constants.h
Go to the documentation of this file.
1// Copyright 2019 the V8 project authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef V8_TORQUE_CONSTANTS_H_
6#define V8_TORQUE_CONSTANTS_H_
7
8#include <cstring>
9#include <string>
10
11#include "src/base/flags.h"
12
13namespace v8 {
14namespace internal {
15namespace torque {
16
17static const char* const CONSTEXPR_TYPE_PREFIX = "constexpr ";
18static const char* const NEVER_TYPE_STRING = "never";
19static const char* const CONSTEXPR_BOOL_TYPE_STRING = "constexpr bool";
20static const char* const CONSTEXPR_STRING_TYPE_STRING = "constexpr string";
21static const char* const CONSTEXPR_INTPTR_TYPE_STRING = "constexpr intptr";
22static const char* const CONSTEXPR_INSTANCE_TYPE_TYPE_STRING =
23 "constexpr InstanceType";
24static const char* const BOOL_TYPE_STRING = "bool";
25static const char* const VOID_TYPE_STRING = "void";
26static const char* const ARGUMENTS_TYPE_STRING = "Arguments";
27static const char* const CONTEXT_TYPE_STRING = "Context";
28static const char* const NO_CONTEXT_TYPE_STRING = "NoContext";
29static const char* const NATIVE_CONTEXT_TYPE_STRING = "NativeContext";
30static const char* const JS_FUNCTION_TYPE_STRING = "JSFunction";
31static const char* const MAP_TYPE_STRING = "Map";
32static const char* const OBJECT_TYPE_STRING = "Object";
33static const char* const HEAP_OBJECT_TYPE_STRING = "HeapObject";
34static const char* const TAGGED_ZERO_PATTERN_TYPE_STRING = "TaggedZeroPattern";
35static const char* const JSANY_TYPE_STRING = "JSAny";
36static const char* const JSOBJECT_TYPE_STRING = "JSObject";
37static const char* const SMI_TYPE_STRING = "Smi";
38static const char* const TAGGED_TYPE_STRING = "Tagged";
39static const char* const STRONG_TAGGED_TYPE_STRING = "StrongTagged";
40static const char* const UNINITIALIZED_TYPE_STRING = "Uninitialized";
41static const char* const UNINITIALIZED_HEAP_OBJECT_TYPE_STRING =
42 "UninitializedHeapObject";
43static const char* const RAWPTR_TYPE_STRING = "RawPtr";
44static const char* const EXTERNALPTR_TYPE_STRING = "ExternalPointer";
45static const char* const CPPHEAPPTR_TYPE_STRING = "CppHeapPointer";
46static const char* const TRUSTEDPTR_TYPE_STRING = "TrustedPointer";
47static const char* const PROTECTEDPTR_TYPE_STRING = "ProtectedPointer";
48static const char* const DISPATCH_HANDLE_TYPE_STRING = "DispatchHandle";
49static const char* const CONST_STRING_TYPE_STRING = "constexpr string";
50static const char* const STRING_TYPE_STRING = "String";
51static const char* const NUMBER_TYPE_STRING = "Number";
52static const char* const BUILTIN_POINTER_TYPE_STRING = "BuiltinPtr";
53static const char* const INTPTR_TYPE_STRING = "intptr";
54static const char* const UINTPTR_TYPE_STRING = "uintptr";
55static const char* const INT64_TYPE_STRING = "int64";
56static const char* const UINT64_TYPE_STRING = "uint64";
57static const char* const INT31_TYPE_STRING = "int31";
58static const char* const INT32_TYPE_STRING = "int32";
59static const char* const UINT31_TYPE_STRING = "uint31";
60static const char* const UINT32_TYPE_STRING = "uint32";
61static const char* const INT16_TYPE_STRING = "int16";
62static const char* const UINT16_TYPE_STRING = "uint16";
63static const char* const INT8_TYPE_STRING = "int8";
64static const char* const UINT8_TYPE_STRING = "uint8";
65static const char* const BINT_TYPE_STRING = "bint";
66static const char* const CHAR8_TYPE_STRING = "char8";
67static const char* const CHAR16_TYPE_STRING = "char16";
68static const char* const FLOAT16_RAW_BITS_TYPE_STRING = "float16_raw_bits";
69static const char* const FLOAT32_TYPE_STRING = "float32";
70static const char* const FLOAT64_TYPE_STRING = "float64";
72 "float64_or_undefined_or_hole";
73static const char* const CONST_INT31_TYPE_STRING = "constexpr int31";
74static const char* const CONST_INT32_TYPE_STRING = "constexpr int32";
75static const char* const CONST_FLOAT64_TYPE_STRING = "constexpr float64";
76static const char* const INTEGER_LITERAL_TYPE_STRING =
77 "constexpr IntegerLiteral";
78static const char* const TORQUE_INTERNAL_NAMESPACE_STRING = "torque_internal";
79static const char* const MUTABLE_REFERENCE_TYPE_STRING = "MutableReference";
80static const char* const CONST_REFERENCE_TYPE_STRING = "ConstReference";
81static const char* const MUTABLE_SLICE_TYPE_STRING = "MutableSlice";
82static const char* const CONST_SLICE_TYPE_STRING = "ConstSlice";
83static const char* const WEAK_TYPE_STRING = "Weak";
84static const char* const SMI_TAGGED_TYPE_STRING = "SmiTagged";
85static const char* const LAZY_TYPE_STRING = "Lazy";
86static const char* const UNINITIALIZED_ITERATOR_TYPE_STRING =
87 "UninitializedIterator";
89 "_generic_type_instantiation_namespace";
90static const char* const FIXED_ARRAY_BASE_TYPE_STRING = "FixedArrayBase";
91static const char* const WEAK_HEAP_OBJECT = "WeakHeapObject";
92static const char* const STATIC_ASSERT_MACRO_STRING = "StaticAssert";
93
94static const char* const ANNOTATION_ABSTRACT = "@abstract";
96 "@hasSameInstanceTypeAsParent";
97static const char* const ANNOTATION_DO_NOT_GENERATE_CPP_CLASS =
98 "@doNotGenerateCppClass";
99static const char* const ANNOTATION_CUSTOM_MAP = "@customMap";
100static const char* const ANNOTATION_CUSTOM_CPP_CLASS = "@customCppClass";
102 "@highestInstanceTypeWithinParentClassRange";
104 "@lowestInstanceTypeWithinParentClassRange";
106 "@reserveBitsInInstanceType";
107static const char* const ANNOTATION_INSTANCE_TYPE_VALUE =
108 "@apiExposedInstanceTypeValue";
109static const char* const ANNOTATION_IF = "@if";
110static const char* const ANNOTATION_IFNOT = "@ifnot";
111static const char* const ANNOTATION_GENERATE_BODY_DESCRIPTOR =
112 "@generateBodyDescriptor";
113static const char* const ANNOTATION_GENERATE_UNIQUE_MAP = "@generateUniqueMap";
114static const char* const ANNOTATION_GENERATE_FACTORY_FUNCTION =
115 "@generateFactoryFunction";
116static const char* const ANNOTATION_EXPORT = "@export";
117static const char* const ANNOTATION_DO_NOT_GENERATE_CAST = "@doNotGenerateCast";
118static const char* const ANNOTATION_USE_PARENT_TYPE_CHECKER =
119 "@useParentTypeChecker";
120static const char* const ANNOTATION_CPP_OBJECT_DEFINITION =
121 "@cppObjectDefinition";
123 "@cppObjectLayoutDefinition";
124static const char* const ANNOTATION_SAME_ENUM_VALUE_AS = "@sameEnumValueAs";
125// Generate C++ accessors with relaxed store semantics.
126// Weak<T> and Tagged<MaybeObject> fields always use relaxed store.
127static const char* const ANNOTATION_CPP_RELAXED_STORE = "@cppRelaxedStore";
128// Generate C++ accessors with relaxed load semantics.
129static const char* const ANNOTATION_CPP_RELAXED_LOAD = "@cppRelaxedLoad";
130// Generate C++ accessors with release store semantics.
131static const char* const ANNOTATION_CPP_RELEASE_STORE = "@cppReleaseStore";
132// Generate C++ accessors with acquire load semantics.
133static const char* const ANNOTATION_CPP_ACQUIRE_LOAD = "@cppAcquireLoad";
134// Generate BodyDescriptor using IterateCustomWeakPointers.
135static const char* const ANNOTATION_CUSTOM_WEAK_MARKING = "@customWeakMarking";
136// Do not generate an interface descriptor for this builtin.
138 "@customInterfaceDescriptor";
139// Automatically generates a call to IncrementUseCounter at the start of a
140// builtin.
141static const char* const ANNOTATION_INCREMENT_USE_COUNTER =
142 "@incrementUseCounter";
143
144inline bool IsConstexprName(const std::string& name) {
145 return name.substr(0, std::strlen(CONSTEXPR_TYPE_PREFIX)) ==
147}
148
149inline std::string GetNonConstexprName(const std::string& name) {
150 if (!IsConstexprName(name)) return name;
151 return name.substr(std::strlen(CONSTEXPR_TYPE_PREFIX));
152}
153
154inline std::string GetConstexprName(const std::string& name) {
155 if (IsConstexprName(name)) return name;
157}
158
160 kNone = 0,
161 kTransient = 1 << 0,
162 kConstexpr = 1 << 1,
163 kUseParentTypeChecker = 1 << 2,
164};
166
167enum class ClassFlag {
168 kNone = 0,
169 kExtern = 1 << 0,
170 kTransient = 1 << 1,
171 kAbstract = 1 << 2,
172 kIsShape = 1 << 3,
177 kUndefinedLayout = 1 << 8,
179 kExport = 1 << 10,
180 kDoNotGenerateCast = 1 << 11,
181 kGenerateUniqueMap = 1 << 12,
182 kGenerateFactoryFunction = 1 << 13,
183 kCppObjectDefinition = 1 << 14,
185};
187
188enum class StructFlag { kNone = 0, kExport = 1 << 0 };
190
192 kNone,
193 kRelaxed,
195};
196
197} // namespace torque
198} // namespace internal
199} // namespace v8
200
201#endif // V8_TORQUE_CONSTANTS_H_
static const char *const INT31_TYPE_STRING
Definition constants.h:57
static const char *const JS_FUNCTION_TYPE_STRING
Definition constants.h:30
static const char *const SMI_TYPE_STRING
Definition constants.h:37
static const char *const NEVER_TYPE_STRING
Definition constants.h:18
static const char *const ANNOTATION_GENERATE_BODY_DESCRIPTOR
Definition constants.h:111
static const char *const TORQUE_INTERNAL_NAMESPACE_STRING
Definition constants.h:78
static const char *const ANNOTATION_HIGHEST_INSTANCE_TYPE_WITHIN_PARENT
Definition constants.h:101
static const char *const JSANY_TYPE_STRING
Definition constants.h:35
static const char *const FLOAT32_TYPE_STRING
Definition constants.h:69
static const char *const ANNOTATION_DO_NOT_GENERATE_CAST
Definition constants.h:117
static const char *const NO_CONTEXT_TYPE_STRING
Definition constants.h:28
static const char *const TAGGED_TYPE_STRING
Definition constants.h:38
static const char *const WEAK_HEAP_OBJECT
Definition constants.h:91
static const char *const JSOBJECT_TYPE_STRING
Definition constants.h:36
static const char *const BOOL_TYPE_STRING
Definition constants.h:24
static const char *const WEAK_TYPE_STRING
Definition constants.h:83
static const char *const BUILTIN_POINTER_TYPE_STRING
Definition constants.h:52
static const char *const HEAP_OBJECT_TYPE_STRING
Definition constants.h:33
static const char *const INT16_TYPE_STRING
Definition constants.h:61
static const char *const UINT64_TYPE_STRING
Definition constants.h:56
static const char *const FLOAT16_RAW_BITS_TYPE_STRING
Definition constants.h:68
static const char *const ANNOTATION_CUSTOM_MAP
Definition constants.h:99
static const char *const PROTECTEDPTR_TYPE_STRING
Definition constants.h:47
static const char *const CONST_SLICE_TYPE_STRING
Definition constants.h:82
static const char *const INT8_TYPE_STRING
Definition constants.h:63
static const char *const CPPHEAPPTR_TYPE_STRING
Definition constants.h:45
static const char *const INT32_TYPE_STRING
Definition constants.h:58
static const char *const UNINITIALIZED_HEAP_OBJECT_TYPE_STRING
Definition constants.h:41
static const char *const ANNOTATION_USE_PARENT_TYPE_CHECKER
Definition constants.h:118
static const char *const NATIVE_CONTEXT_TYPE_STRING
Definition constants.h:29
static const char *const ANNOTATION_CPP_ACQUIRE_LOAD
Definition constants.h:133
static const char *const CONSTEXPR_INTPTR_TYPE_STRING
Definition constants.h:21
static const char *const UINT8_TYPE_STRING
Definition constants.h:64
static const char *const ANNOTATION_RESERVE_BITS_IN_INSTANCE_TYPE
Definition constants.h:105
static const char *const ANNOTATION_CUSTOM_INTERFACE_DESCRIPTOR
Definition constants.h:137
static const char *const FLOAT64_OR_UNDEFINED_OR_HOLE_TYPE_STRING
Definition constants.h:71
static const char *const ANNOTATION_DO_NOT_GENERATE_CPP_CLASS
Definition constants.h:97
static const char *const VOID_TYPE_STRING
Definition constants.h:25
static const char *const UINTPTR_TYPE_STRING
Definition constants.h:54
static const char *const BINT_TYPE_STRING
Definition constants.h:65
static const char *const CONST_REFERENCE_TYPE_STRING
Definition constants.h:80
static const char *const MUTABLE_SLICE_TYPE_STRING
Definition constants.h:81
static const char *const TAGGED_ZERO_PATTERN_TYPE_STRING
Definition constants.h:34
static const char *const ANNOTATION_IF
Definition constants.h:109
static const char *const STRING_TYPE_STRING
Definition constants.h:50
static const char *const ANNOTATION_IFNOT
Definition constants.h:110
static const char *const ANNOTATION_CPP_RELAXED_LOAD
Definition constants.h:129
static const char *const CONSTEXPR_TYPE_PREFIX
Definition constants.h:17
static const char *const UINT16_TYPE_STRING
Definition constants.h:62
static const char *const UINT32_TYPE_STRING
Definition constants.h:60
static const char *const RAWPTR_TYPE_STRING
Definition constants.h:43
static const char *const STATIC_ASSERT_MACRO_STRING
Definition constants.h:92
static const char *const EXTERNALPTR_TYPE_STRING
Definition constants.h:44
static const char *const CHAR8_TYPE_STRING
Definition constants.h:66
static const char *const ANNOTATION_CUSTOM_WEAK_MARKING
Definition constants.h:135
static const char *const ANNOTATION_SAME_ENUM_VALUE_AS
Definition constants.h:124
static const char *const ANNOTATION_CPP_RELAXED_STORE
Definition constants.h:127
static const char *const NUMBER_TYPE_STRING
Definition constants.h:51
static const char *const INTPTR_TYPE_STRING
Definition constants.h:53
static const char *const INT64_TYPE_STRING
Definition constants.h:55
static const char *const ANNOTATION_CUSTOM_CPP_CLASS
Definition constants.h:100
static const char *const CONSTEXPR_BOOL_TYPE_STRING
Definition constants.h:19
static const char *const ANNOTATION_CPP_OBJECT_LAYOUT_DEFINITION
Definition constants.h:122
static const char *const MUTABLE_REFERENCE_TYPE_STRING
Definition constants.h:79
static const char *const CONSTEXPR_INSTANCE_TYPE_TYPE_STRING
Definition constants.h:22
static const char *const CONST_FLOAT64_TYPE_STRING
Definition constants.h:75
static const char *const UNINITIALIZED_TYPE_STRING
Definition constants.h:40
static const char *const CONSTEXPR_STRING_TYPE_STRING
Definition constants.h:20
static const char *const FIXED_ARRAY_BASE_TYPE_STRING
Definition constants.h:90
static const char *const ANNOTATION_CPP_RELEASE_STORE
Definition constants.h:131
static const char *const SMI_TAGGED_TYPE_STRING
Definition constants.h:84
static const char *const ANNOTATION_GENERATE_FACTORY_FUNCTION
Definition constants.h:114
static const char *const ANNOTATION_EXPORT
Definition constants.h:116
static const char *const ANNOTATION_LOWEST_INSTANCE_TYPE_WITHIN_PARENT
Definition constants.h:103
static const char *const ANNOTATION_CPP_OBJECT_DEFINITION
Definition constants.h:120
static const char *const TRUSTEDPTR_TYPE_STRING
Definition constants.h:46
static const char *const CONST_INT31_TYPE_STRING
Definition constants.h:73
static const char *const LAZY_TYPE_STRING
Definition constants.h:85
static const char *const INTEGER_LITERAL_TYPE_STRING
Definition constants.h:76
static const char *const GENERIC_TYPE_INSTANTIATION_NAMESPACE_STRING
Definition constants.h:88
static const char *const DISPATCH_HANDLE_TYPE_STRING
Definition constants.h:48
static const char *const ANNOTATION_INCREMENT_USE_COUNTER
Definition constants.h:141
static const char *const CONST_STRING_TYPE_STRING
Definition constants.h:49
static const char *const STRONG_TAGGED_TYPE_STRING
Definition constants.h:39
static const char *const ANNOTATION_HAS_SAME_INSTANCE_TYPE_AS_PARENT
Definition constants.h:95
bool IsConstexprName(const std::string &name)
Definition constants.h:144
std::string GetConstexprName(const std::string &name)
Definition constants.h:154
std::string GetNonConstexprName(const std::string &name)
Definition constants.h:149
static const char *const ARGUMENTS_TYPE_STRING
Definition constants.h:26
static const char *const UNINITIALIZED_ITERATOR_TYPE_STRING
Definition constants.h:86
static const char *const ANNOTATION_INSTANCE_TYPE_VALUE
Definition constants.h:107
static const char *const OBJECT_TYPE_STRING
Definition constants.h:32
static const char *const FLOAT64_TYPE_STRING
Definition constants.h:70
static const char *const ANNOTATION_ABSTRACT
Definition constants.h:94
static const char *const CONTEXT_TYPE_STRING
Definition constants.h:27
static const char *const ANNOTATION_GENERATE_UNIQUE_MAP
Definition constants.h:113
static const char *const CHAR16_TYPE_STRING
Definition constants.h:67
static const char *const MAP_TYPE_STRING
Definition constants.h:31
static const char *const CONST_INT32_TYPE_STRING
Definition constants.h:74
static const char *const UINT31_TYPE_STRING
Definition constants.h:59
too high values may cause the compiler to set high thresholds for inlining to as much as possible avoid inlined allocation of objects that cannot escape trace load stores from virtual maglev objects use TurboFan fast string builder analyze liveness of environment slots and zap dead values trace TurboFan load elimination emit data about basic block usage in builtins to this enable builtin reordering when run mksnapshot flag for emit warnings when applying builtin profile data verify register allocation in TurboFan randomly schedule instructions to stress dependency tracking enable store store elimination in TurboFan rewrite far to near simulate GC compiler thread race related to allow float parameters to be passed in simulator mode JS Wasm Run additional turbo_optimize_inlined_js_wasm_wrappers enable experimental feedback collection in generic lowering enable Turboshaft s WasmLoadElimination enable Turboshaft s low level load elimination for JS enable Turboshaft s escape analysis for string concatenation use enable Turbolev features that we want to ship in the not too far future trace individual Turboshaft reduction steps trace intermediate Turboshaft reduction steps invocation count threshold for early optimization Enables optimizations which favor memory size over execution speed Enables sampling allocation profiler with X as a sample interval min size of a semi the new space consists of two semi spaces max size of the Collect garbage after Collect garbage after keeps maps alive for< n > old space garbage collections print one detailed trace line in name
Definition flags.cc:2086