5#ifndef V8_CODEGEN_TNODE_H_
6#define V8_CODEGEN_TNODE_H_
109#ifdef V8_ENABLE_SANDBOX
119#ifdef V8_COMPRESS_POINTERS
145#ifdef V8_COMPRESS_POINTERS
151#ifdef V8_ENABLE_SANDBOX
163template <
class T1,
class T2>
178 return (type1 == type2) ? type1
184template <
class Type,
class Enable =
void>
189template <
class Type,
class Enable>
217template <
class HeapObjectSubtype>
220 std::enable_if_t<std::is_base_of_v<HeapObject, HeapObjectSubtype> ||
221 std::is_base_of_v<HeapObjectLayout, HeapObjectSubtype>>> {
225template <
class HeapObjectSubtype>
228 std::enable_if_t<std::is_base_of_v<HeapObject, HeapObjectSubtype> ||
229 std::is_base_of_v<HeapObjectLayout, HeapObjectSubtype>>>
::
242template <
class T,
class... Ts>
248 "no common representation");
258template <
class Type,
class Enable =
void>
267 T::kMachineType.representation();
293 std::is_base_of<UntaggedT, T>::value ||
294 std::is_same<ExternalReference, T>::value;
298template <
class T1,
class T2>
300 static const bool value =
310 static_assert(
is_tagged,
"union types are only possible for tagged values");
321 static const bool value =
true;
325 static const bool value =
true;
328template <
class T,
class U>
364template <
class... Ts,
class U>
366 static const bool value =
367 std::disjunction_v<types_have_common_values<Ts, U>...>;
369template <
class T,
class... Us>
371 static const bool value =
372 std::disjunction_v<types_have_common_values<T, Us>...>;
374template <
class... Ts,
class... Us>
376 static const bool value =
411 explicit operator bool()
const {
return node_ !=
nullptr; }
416 template <
typename U>
430 static_assert(!std::is_same_v<T, T>,
431 "Don't write TNode<Tagged<T>>, just write TNode<T> directly.");
constexpr bool IsTagged() const
static constexpr MachineType Float64()
static constexpr MachineType Pointer()
static constexpr MachineType Uint8()
static constexpr MachineType Int32()
static constexpr MachineType Simd128()
static constexpr MachineType AnyTagged()
static constexpr MachineType Uint64()
static constexpr MachineType Uint32()
static constexpr MachineType SandboxedPointer()
static constexpr MachineType TaggedSigned()
static constexpr MachineType Uint16()
static constexpr MachineType Int16()
static constexpr MachineType Float32()
static constexpr MachineType Int64()
static constexpr MachineType None()
static constexpr MachineType TaggedPointer()
static constexpr MachineType UintPtr()
static constexpr MachineType Int8()
static constexpr MachineRepresentation PointerRepresentation()
static constexpr MachineType IntPtr()
SloppyTNode(const TNode< U > &other) V8_NOEXCEPT
SloppyTNode(compiler::Node *node)
void LazyTemplateChecks() const
TNode(const TNode &other) V8_NOEXCEPT
TNode(const TNode< U > &other) V8_NOEXCEPT
TNode(compiler::Node *node)
static TNode UncheckedCast(compiler::Node *node)
TNode operator=(TNode other)
constexpr MachineType CommonMachineType(MachineType type1, MachineType type2)
UnionOf< Object, MaybeObject > AnyTaggedT
static constexpr bool is_taggable_v
typename detail::FlattenUnionHelper< Union<>, Ts... >::type UnionOf
constexpr bool IsMachineRepresentationOf(MachineRepresentation r)
constexpr MachineRepresentation PhiMachineRepresentationOf
UnionOf< Context, Smi > ContextOrEmptyContext
#define DCHECK_NOT_NULL(val)
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static const MachineRepresentation kMachineRepresentation
static constexpr MachineType kMachineType
static const MachineRepresentation kMachineRepresentation
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static const MachineRepresentation kMachineRepresentation
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static constexpr MachineType kMachineType
static const MachineRepresentation kMachineRepresentation
static const MachineRepresentation kMachineRepresentation
static const MachineRepresentation kMachineRepresentation
static const bool is_tagged
#define T1(name, string, precedence)
#define T2(name, string, precedence)