5#ifndef V8_COMPILER_SIMPLIFIED_LOWERING_VERIFIER_H_
6#define V8_COMPILER_SIMPLIFIED_LOWERING_VERIFIER_H_
23 std::optional<Type> type = std::nullopt;
37 DCHECK_EQ(node->opcode(), IrOpcode::kSLVerifierHint);
64 DCHECK(type.Is(Type::Machine()));
71 if (node->id() <
data_.size()) {
72 return data_[node->id()].type;
79 if (
data_.size() <= node->id()) {
80 data_.resize(node->id() + 1);
94 auto type_opt =
GetType(node->InputAt(input_index));
95 return type_opt.has_value() ? *type_opt :
Type::None();
100 data_[node->id()].truncation = truncation;
108 if (input->id() <
data_.size()) {
109 return data_[input->id()].truncation;
111 return any_truncation;
125 const Type& type)
const;
void push_back(const T &value)
static bool IsMachineConstantOpcode(Value value)
static Type GetType(const Node *node)
static bool IsTyped(const Node *node)
Node * InputAt(int index) const
Type InputType(Node *node, int input_index) const
const ZoneUnorderedMap< Node *, ZoneVector< Node * > > & machine_uses_of_constants() const
void RecordHint(Node *node)
void RecordMachineUsesOfConstant(Node *constant, Node::Uses uses)
void SetType(Node *node, const Type &type)
SimplifiedLoweringVerifier(Zone *zone, TFGraph *graph)
ZoneVector< Node * > hints_
Truncation GeneralizeTruncation(const Truncation &truncation, const Type &type) const
ZoneUnorderedMap< Node *, ZoneVector< Node * > > machine_uses_of_constants_
ZoneVector< PerNodeData > data_
const ZoneVector< Node * > & inserted_hints() const
void ReportInvalidTypeCombination(Node *node, const std::vector< Type > &types)
Zone * graph_zone() const
void CheckType(Node *node, const Type &type)
void VisitNode(Node *node, OperationTyper &op_typer)
Truncation InputTruncation(Node *node, int input_index) const
Truncation JoinTruncation(const Truncation &t1, const Truncation &t2, const Truncation &t3)
void ResizeDataIfNecessary(Node *node)
void SetTruncation(Node *node, const Truncation &truncation)
std::optional< Type > GetType(Node *node) const
Truncation JoinTruncation(const Truncation &t1, const Truncation &t2)
void CheckAndSet(Node *node, const Type &type, const Truncation &trunc)
static Truncation Any(IdentifyZeros identify_zeros=kDistinguishZeros)
void vector_append(V &v, const C &container)
#define DCHECK(condition)
#define DCHECK_EQ(v1, v2)