18 op_typer_(
broker, zone()) {}
25 switch (node->opcode()) {
26 case IrOpcode::kNumberLessThan: {
31 if (left_type.
Is(Type::PlainNumber()) &&
32 right_type.
Is(Type::PlainNumber())) {
33 if (left_type.
Max() < right_type.
Min()) {
35 }
else if (left_type.
Min() >= right_type.
Max()) {
42 case IrOpcode::kTypeGuard: {
48#define DECLARE_CASE(Name) \
49 case IrOpcode::k##Name: { \
50 new_type = op_typer_.Name(NodeProperties::GetType(node->InputAt(0)), \
51 NodeProperties::GetType(node->InputAt(1))); \
58#define DECLARE_CASE(Name) \
59 case IrOpcode::k##Name: { \
60 new_type = op_typer_.Name(NodeProperties::GetType(node->InputAt(0))); \
73 if (!original_type.
Is(restricted)) {
static Type GetType(const Node *node)
static void SetType(Node *node, Type type)
Type TypeTypeGuard(const Operator *sigma_op, Type input)
Type singleton_false() const
Type singleton_true() const
~TypeNarrowingReducer() final
TypeNarrowingReducer(Editor *editor, JSGraph *jsgraph, JSHeapBroker *broker)
Reduction Reduce(Node *node) final
JSGraph * jsgraph() const
static Type Intersect(Type type1, Type type2, Zone *zone)
#define DECLARE_CASE(x,...)
#define SIMPLIFIED_NUMBER_UNOP_LIST(V)
#define SIMPLIFIED_NUMBER_BINOP_LIST(V)