Lines Matching refs:node

17 #include "src/compiler/node-properties.h"
18 #include "src/compiler/node.h"
42 void CheckSwitch(Node* node, const AllNodes& all);
43 void Check(Node* node, const AllNodes& all);
51 void CheckNotTyped(Node* node) {
55 if (NodeProperties::IsTyped(node)) {
57 str << "TypeError: node #" << node->id() << ":" << *node->op()
62 void CheckTypeIs(Node* node, Type type) {
63 if (typing == TYPED && !NodeProperties::GetType(node).Is(type)) {
65 str << "TypeError: node #" << node->id() << ":" << *node->op() << " type "
66 << NodeProperties::GetType(node) << " is not " << type;
70 void CheckTypeMaybe(Node* node, Type type) {
71 if (typing == TYPED && !NodeProperties::GetType(node).Maybe(type)) {
73 str << "TypeError: node #" << node->id() << ":" << *node->op() << " type "
74 << NodeProperties::GetType(node) << " must intersect " << type;
78 void CheckValueInputIs(Node* node, int i, Type type) {
79 Node* input = NodeProperties::GetValueInput(node, i);
82 str << "TypeError: node #" << node->id() << ":" << *node->op()
89 void CheckOutput(Node* node, Node* use, int count, const char* kind) {
92 str << "GraphError: node #" << node->id() << ":" << *node->op()
93 << " does not produce " << kind << " output used by node #"
100 void Verifier::Visitor::CheckSwitch(Node* node, const AllNodes& all) {
108 Node::Uses uses = node->uses();
127 FATAL("Switch #%d illegally used by #%d:%s", node->id(), use->id(),
135 CHECK_EQ(node->op()->ControlOutputCount(), case_count + 1);
136 CheckNotTyped(node);
139 void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
140 int value_count = node->op()->ValueInputCount();
141 int context_count = OperatorProperties::GetContextInputCount(node->op());
143 OperatorProperties::GetFrameStateInputCount(node->op());
144 int effect_count = node->op()->EffectInputCount();
145 int control_count = node->op()->ControlInputCount();
152 CHECK_EQ(input_count, node->InputCount());
154 // If this node has any effect outputs, make sure that it is
157 if (code_type != kWasm && node->op()->EffectOutputCount() > 0) {
160 for (Edge edge : node->use_edges()) {
171 Node* frame_state = NodeProperties::GetFrameStateInput(node);
174 (node->opcode() == IrOpcode::kFrameState &&
180 Node* value = NodeProperties::GetValueInput(node, i);
181 CheckOutput(value, node, value->op()->ValueOutputCount(), "value");
184 CHECK(node->opcode() == IrOpcode::kParameter ||
185 node->opcode() == IrOpcode::kProjection ||
191 Node* context = NodeProperties::GetContextInput(node);
192 CheckOutput(context, node, context->op()->ValueOutputCount(), "context");
198 Node* effect = NodeProperties::GetEffectInput(node);
199 CheckOutput(effect, node, effect->op()->EffectOutputCount(), "effect");
204 Node* control = NodeProperties::GetControlInput(node, i);
205 CheckOutput(control, node, control->op()->ControlOutputCount(),
211 if (!node->op()->HasProperty(Operator::kNoThrow)) {
216 for (Edge edge : node->use_edges()) {
236 node->id(), node->op()->mnemonic(), discovered_if_success->id(),
243 node->id(), node->op()->mnemonic(), discovered_if_exception->id(),
251 node->id(), node->op()->mnemonic(), discovered_direct_use->id(),
257 switch (node->opcode()) {
263 CheckTypeIs(node, Type::Internal());
269 for (Node* use : node->uses()) {
280 CHECK_EQ(0, node->op()->ValueOutputCount());
281 CHECK_EQ(0, node->op()->EffectOutputCount());
282 CHECK_EQ(0, node->op()->ControlOutputCount());
284 for (const Node* input : node->inputs()) {
287 CheckNotTyped(node);
293 CheckValueInputIs(node, 0, Type::None());
294 CheckTypeIs(node, Type::None());
297 CheckTypeIs(node, Type::None());
298 for (Edge edge : node->use_edges()) {
310 for (const Node* use : node->uses()) {
319 CheckValueInputIs(node, 0, Type::Boolean());
320 CheckNotTyped(node);
325 Node* control = NodeProperties::GetControlInput(node, 0);
327 CheckNotTyped(node);
332 Node* input = NodeProperties::GetControlInput(node, 0);
334 CheckNotTyped(node);
339 Node* input = NodeProperties::GetControlInput(node, 0);
341 CheckTypeIs(node, Type::Any());
345 CheckSwitch(node, all);
351 NodeProperties::GetControlInput(node)->opcode());
352 CheckNotTyped(node);
356 CheckNotTyped(node);
357 // All loops need to be connected to a {Terminate} node to ensure they
360 for (const Node* use : node->uses()) {
371 CheckNotTyped(node);
378 CheckNotTyped(node);
384 for (const Node* use : node->uses()) {
389 CheckNotTyped(node);
397 NodeProperties::GetControlInput(node)->opcode());
399 for (const Node* use : node->uses()) {
404 CheckNotTyped(node);
410 // Parameters have the start node as inputs.
413 int const index = ParameterIndexOf(node->op());
414 StartNode start{NodeProperties::GetValueInput(node, 0)};
418 CheckTypeIs(node, Type::Any());
430 CheckNotTyped(node);
435 CheckTypeIs(node, Type::Number());
441 CheckTypeIs(node, Type::Any());
447 CheckTypeIs(node, Type::ExternalPointer());
454 CheckTypeIs(node, Type::Any());
458 int index = static_cast<int>(ProjectionIndexOf(node->op()));
459 Node* input = NodeProperties::GetValueInput(node, 0);
461 CheckTypeIs(node, Type::Any());
469 CheckValueInputIs(node, 0, Type::Boolean());
470 CheckTypeIs(node, Type::Any());
474 // Phi input count matches parent control node.
477 Node* control = NodeProperties::GetControlInput(node, 0);
484 CHECK(type_of(ValueInput(node, i))->Is(type_of(node)));
490 // This is only a temporary node for the typer.
494 // EffectPhi input count matches parent control node.
497 Node* control = NodeProperties::GetControlInput(node, 0);
516 Node* loop = NodeProperties::GetControlInput(node, 1);
522 Node* loop_exit = NodeProperties::GetControlInput(node, 0);
528 Node* loop_exit = NodeProperties::GetControlInput(node, 0);
533 CheckNotTyped(node);
542 Node* val = NodeProperties::GetValueInput(node, 0);
543 CHECK(NodeProperties::GetType(val).Is(NodeProperties::GetType(node)));
554 FrameState state{node};
588 CheckTypeIs(node, Type::Object());
613 CheckTypeIs(node, Type::Boolean());
617 CheckTypeIs(node, Type::NumericOrString());
634 CheckTypeIs(node, Type::Numeric());
638 CheckTypeIs(node, Type::Boolean());
641 CheckTypeIs(node, Type::Range(0, kMaxSafeInteger, zone));
644 CheckTypeIs(node, Type::Name());
648 CheckTypeIs(node, Type::Number());
651 CheckTypeIs(node, Type::Numeric());
654 CheckTypeIs(node, Type::String());
657 CheckTypeIs(node, Type::Receiver());
660 CheckValueInputIs(node, 0, Type::Any());
661 CheckValueInputIs(node, 1, Type::Any());
662 CheckTypeIs(node, Type::Number());
665 CheckValueInputIs(node, 0, Type::Any());
666 CheckValueInputIs(node, 1, Type::String());
667 CheckTypeIs(node, Type::Boolean());
670 CheckTypeIs(node, Type::Object());
673 CheckTypeIs(node, Type::ArrayOrOtherObject());
676 CheckTypeIs(node, Type::Array());
679 CheckTypeIs(node, Type::OtherObject());
682 CheckTypeIs(node, Type::OtherObject());
685 CheckTypeIs(node, Type::OtherObject());
688 CheckTypeIs(node, Type::BoundFunction());
691 CheckTypeIs(node, Type::Function());
694 CheckTypeIs(node, Type::OtherObject());
697 CheckTypeIs(node, Type::OtherObject());
700 CheckTypeIs(node, Type::Array());
703 CheckTypeIs(node, Type::OtherObject());
706 CheckTypeIs(node, Type::OtherObject());
709 CheckTypeIs(node, Type::OtherObject());
712 CheckTypeIs(node, Type::Array());
715 CheckTypeIs(node, Type::Array());
718 CheckTypeIs(node, Type::Array());
724 CheckTypeIs(node, Type::OtherObject());
727 CheckTypeIs(node, Type::Array());
730 CheckTypeIs(node, Type::Any());
731 CHECK(PropertyAccessOf(node->op()).feedback().IsValid());
734 CheckTypeIs(node, Type::Any());
737 CheckTypeIs(node, Type::Any());
740 CheckTypeIs(node, Type::Any());
741 CHECK(LoadGlobalParametersOf(node->op()).feedback().IsValid());
744 CheckNotTyped(node);
745 CHECK(PropertyAccessOf(node->op()).feedback().IsValid());
748 CheckNotTyped(node);
749 CHECK(PropertyAccessOf(node->op()).feedback().IsValid());
752 CheckNotTyped(node);
755 CheckNotTyped(node);
756 CHECK(StoreGlobalParametersOf(node->op()).feedback().IsValid());
759 CheckNotTyped(node);
761 DefineNamedOwnPropertyParametersOf(node->op()).feedback().IsValid());
764 CheckValueInputIs(node, 0, Type::Any());
765 CheckTypeIs(node, Type::Any());
769 CheckNotTyped(node);
770 CHECK(FeedbackParameterOf(node->op()).feedback().IsValid());
777 CheckTypeIs(node, Type::Boolean());
780 CheckTypeIs(node, Type::InternalizedString());
785 CheckValueInputIs(node, 0, Type::Any());
786 CheckTypeIs(node, Type::NonInternal());
790 CheckTypeIs(node, Type::Boolean());
793 CheckTypeIs(node, Type::Any());
796 CheckNotTyped(node);
802 CheckTypeIs(node, Type::OtherInternal());
810 CheckTypeIs(node, Type::Receiver());
817 CheckTypeIs(node, Type::Any());
821 CheckValueInputIs(node, 0, Type::Any());
822 CheckTypeIs(node, Type::OtherInternal());
825 CheckTypeIs(node, Type::Any());
828 CheckTypeIs(node, Type::Union(Type::Name(), Type::Undefined(), zone));
836 CheckTypeIs(node, Type::Any());
839 CheckNotTyped(node);
843 CheckTypeIs(node, Type::Any());
847 CheckNotTyped(node);
851 CheckTypeIs(node, Type::OtherObject());
855 CheckTypeIs(node, Type::SignedSmall());
859 CheckTypeIs(node, Type::Any());
863 CheckTypeIs(node, Type::Any());
867 CheckTypeIs(node, Type::Any());
872 CheckNotTyped(node);
876 CheckValueInputIs(node, 0, Type::Any());
877 CheckValueInputIs(node, 1, Type::Any());
878 CheckTypeIs(node, Type::OtherObject());
881 CheckValueInputIs(node, 0, Type::Any());
882 CheckValueInputIs(node, 1, Type::Any());
883 CheckTypeIs(node, Type::OtherObject());
886 CheckValueInputIs(node, 0, Type::Any());
887 CheckValueInputIs(node, 1, Type::Any());
888 CheckTypeIs(node, Type::OtherObject());
891 CheckValueInputIs(node, 0, Type::Any());
892 CheckValueInputIs(node, 1, Type::Any());
893 CheckTypeIs(node, Type::Undefined());
896 CheckValueInputIs(node, 0, Type::Any());
897 CheckValueInputIs(node, 1, Type::Any());
898 CheckValueInputIs(node, 2, Type::Any());
899 CheckValueInputIs(node, 3, Type::Any());
900 CheckTypeIs(node, Type::Receiver());
903 CheckValueInputIs(node, 0, Type::Any());
904 CheckValueInputIs(node, 1, Type::Any());
905 CheckTypeIs(node, Type::Receiver());
908 CheckValueInputIs(node, 0, Type::Any());
909 CheckValueInputIs(node, 1, Type::Any());
910 CheckValueInputIs(node, 2, Type::Any());
911 CheckTypeIs(node, Type::Undefined());
914 CheckValueInputIs(node, 0, Type::Any());
915 CheckValueInputIs(node, 1, Type::Any());
916 CheckTypeIs(node, Type::Undefined());
919 CheckValueInputIs(node, 0, Type::Any());
920 CheckTypeIs(node, Type::Boolean());
929 CheckNotTyped(node);
935 CheckValueInputIs(node, 0, Type::Boolean());
936 CheckTypeIs(node, Type::Boolean());
939 CheckValueInputIs(node, 0, Type::Number());
940 CheckValueInputIs(node, 1, Type::Number());
941 CheckTypeIs(node, Type::Boolean());
945 CheckValueInputIs(node, 0, Type::Number());
946 CheckValueInputIs(node, 1, Type::Number());
947 CheckTypeIs(node, Type::Boolean());
957 CheckTypeIs(node, Type::Number());
962 CheckTypeIs(node, Type::Boolean());
966 CheckTypeIs(node, Type::BigInt());
969 CheckTypeIs(node, Type::BigInt());
973 CheckValueInputIs(node, 0, Type::Any());
974 CheckTypeIs(node, Type::BigInt());
978 CheckValueInputIs(node, 0, Type::BigInt());
979 CheckValueInputIs(node, 1, Type::BigInt());
980 CheckTypeIs(node, Type::BigInt());
983 CheckValueInputIs(node, 0, Type::BigInt());
984 CheckTypeIs(node, Type::BigInt());
990 CheckValueInputIs(node, 0, Type::Number());
991 CheckValueInputIs(node, 1, Type::Number());
992 CheckTypeIs(node, Type::Number());
995 CheckValueInputIs(node, 0, Type::Number());
996 CheckValueInputIs(node, 1, Type::Number());
997 CheckTypeIs(node, Type::Number());
1002 CheckValueInputIs(node, 0, Type::Signed32());
1003 CheckValueInputIs(node, 1, Type::Signed32());
1004 CheckTypeIs(node, Type::Signed32());
1009 CheckTypeIs(node, Type::Signed32());
1013 CheckValueInputIs(node, 0, Type::Signed32());
1014 CheckValueInputIs(node, 1, Type::Unsigned32());
1015 CheckTypeIs(node, Type::Signed32());
1019 CheckTypeIs(node, Type::Signed32());
1022 CheckValueInputIs(node, 0, Type::Unsigned32());
1023 CheckValueInputIs(node, 1, Type::Unsigned32());
1024 CheckTypeIs(node, Type::Unsigned32());
1027 CheckTypeIs(node, Type::Unsigned32());
1030 CheckValueInputIs(node, 0, Type::Unsigned32());
1031 CheckValueInputIs(node, 1, Type::Unsigned32());
1032 CheckTypeIs(node, Type::Signed32());
1035 CheckValueInputIs(node, 0, Type::Unsigned32());
1036 CheckTypeIs(node, Type::Unsigned32());
1042 CheckValueInputIs(node, 0, Type::Number());
1043 CheckValueInputIs(node, 1, Type::Number());
1044 CheckTypeIs(node, Type::Number());
1073 CheckValueInputIs(node, 0, Type::Number());
1074 CheckTypeIs(node, Type::Number());
1077 CheckValueInputIs(node, 0, Type::Number());
1078 CheckTypeIs(node, Type::Boolean());
1081 CheckValueInputIs(node, 0, Type::Number());
1082 CheckTypeIs(node, Type::Signed32());
1085 CheckValueInputIs(node, 0, Type::Number());
1086 CheckTypeIs(node, Type::String());
1090 CheckValueInputIs(node, 0, Type::Number());
1091 CheckTypeIs(node, Type::Unsigned32());
1094 CheckValueInputIs(node, 0, Type::Any());
1095 CheckTypeIs(node, Type::Number());
1098 CheckValueInputIs(node, 0, Type::PlainPrimitive());
1099 CheckTypeIs(node, Type::Number());
1102 CheckValueInputIs(node, 0, Type::PlainPrimitive());
1103 CheckTypeIs(node, Type::Integral32());
1106 CheckValueInputIs(node, 0, Type::PlainPrimitive());
1107 CheckTypeIs(node, Type::Number());
1110 CheckValueInputIs(node, 0, TypeCache::Get()->kStringLengthType);
1111 CheckValueInputIs(node, 1, Type::String());
1112 CheckValueInputIs(node, 2, Type::String());
1113 CheckTypeIs(node, Type::String());
1118 CheckValueInputIs(node, 0, Type::String());
1119 CheckValueInputIs(node, 1, Type::String());
1120 CheckTypeIs(node, Type::Boolean());
1123 CheckValueInputIs(node, 0, Type::String());
1124 CheckTypeIs(node, Type::Number());
1127 CheckValueInputIs(node, 0, Type::String());
1128 CheckValueInputIs(node, 1, Type::Unsigned32());
1129 CheckTypeIs(node, Type::UnsignedSmall());
1132 CheckValueInputIs(node, 0, Type::String());
1133 CheckValueInputIs(node, 1, Type::Unsigned32());
1134 CheckTypeIs(node, Type::UnsignedSmall());
1137 CheckValueInputIs(node, 0, Type::Number());
1138 CheckTypeIs(node, Type::String());
1141 CheckValueInputIs(node, 0, Type::Number());
1142 CheckTypeIs(node, Type::String());
1145 CheckValueInputIs(node, 0, Type::String());
1146 CheckValueInputIs(node, 1, Type::Unsigned32());
1147 CheckTypeIs(node, Type::String());
1150 CheckValueInputIs(node, 0, Type::String());
1151 CheckValueInputIs(node, 1, Type::String());
1152 CheckValueInputIs(node, 2, Type::SignedSmall());
1153 CheckTypeIs(node, Type::SignedSmall());
1156 CheckValueInputIs(node, 0, Type::String());
1157 CheckTypeIs(node, TypeCache::Get()->kStringLengthType);
1161 CheckValueInputIs(node, 0, Type::String());
1162 CheckTypeIs(node, Type::String());
1165 CheckValueInputIs(node, 0, Type::String());
1166 CheckValueInputIs(node, 1, Type::SignedSmall());
1167 CheckValueInputIs(node, 2, Type::SignedSmall());
1168 CheckTypeIs(node, Type::String());
1171 CheckTypeIs(node, Type::Boolean());
1175 CheckValueInputIs(node, 0, Type::Any());
1176 CheckValueInputIs(node, 1, Type::Any());
1177 CheckTypeIs(node, Type::Boolean());
1180 CheckValueInputIs(node, 0, Type::Number());
1181 CheckValueInputIs(node, 1, Type::Number());
1182 CheckTypeIs(node, Type::Boolean());
1198 CheckValueInputIs(node, 0, Type::Any());
1199 CheckTypeIs(node, Type::Boolean());
1202 CheckValueInputIs(node, 0, Type::NumberOrHole());
1203 CheckTypeIs(node, Type::Boolean());
1206 CheckValueInputIs(node, 0, Type::Number());
1207 CheckTypeIs(node, Type::Boolean());
1211 CheckValueInputIs(node, 0, Type::Number());
1212 CheckTypeIs(node, Type::Boolean());
1215 CheckValueInputIs(node, 0, Type::Any());
1216 CheckTypeIs(node, Type::Boolean());
1219 CheckValueInputIs(node, 0, Type::Number());
1220 CheckTypeIs(node, Type::Boolean());
1223 CheckValueInputIs(node, 0, Type::Any());
1224 CheckTypeIs(node, Type::Boolean());
1227 CheckValueInputIs(node, 0, Type::Number());
1228 CheckTypeIs(node, Type::Boolean());
1231 CheckValueInputIs(node, 0, Type::Any());
1232 CheckTypeIs(node, Type::Boolean());
1235 CheckValueInputIs(node, 0, Type::Any());
1236 CheckTypeIs(node, Type::SignedSmall());
1239 CheckValueInputIs(node, 0, Type::Any());
1240 CheckValueInputIs(node, 1, Type::Signed32());
1241 CheckTypeIs(node, Type::SignedSmall());
1245 CheckTypeIs(node, TypeCache::Get()->kArgumentsLengthType);
1249 CheckValueInputIs(node, 0,
1251 CheckTypeIs(node, Type::OtherInternal());
1254 CheckValueInputIs(node, 0,
1256 CheckTypeIs(node, Type::OtherInternal());
1259 CheckValueInputIs(node, 0, TypeCache::Get()->kStringLengthType);
1260 CheckValueInputIs(node, 1, Type::String());
1261 CheckValueInputIs(node, 2, Type::String());
1262 CheckTypeIs(node, Type::String());
1265 CheckTypeIs(node, Type::String());
1268 CheckValueInputIs(node, 0, Type::PlainNumber());
1271 // CheckValueInputIs(node, 0, Type::PlainNumber());
1274 CheckValueInputIs(node, 0, Type::Any());
1275 CheckValueInputIs(node, 1, Type::Internal());
1276 CheckTypeIs(node, Type::Internal());
1279 CheckValueInputIs(node, 0, Type::Any());
1280 CheckValueInputIs(node, 1, Type::Internal());
1281 CheckValueInputIs(node, 2, Type::Unsigned31());
1282 CheckValueInputIs(node, 3, Type::Unsigned31());
1283 CheckTypeIs(node, Type::Internal());
1286 CheckValueInputIs(node, 0, Type::Any());
1287 CheckNotTyped(node);
1295 // CheckValueInputIs(node, 0, from));
1296 // CheckTypeIs(node, to));
1306 // CheckValueInputIs(node, 0, from));
1307 // CheckTypeIs(node, to));
1317 // CheckValueInputIs(node, 0, from));
1318 // CheckTypeIs(node, to));
1326 // CheckValueInputIs(node, 0, from));
1327 // CheckTypeIs(node, to));
1338 // CheckValueInputIs(node, 0, from));
1339 // CheckTypeIs(node, to));
1347 // CheckValueInputIs(node, 0, from));
1348 // CheckTypeIs(node, to));
1356 // CheckValueInputIs(node, 0, from));
1357 // CheckTypeIs(node, to));
1367 // CheckValueInputIs(node, 0, from));
1368 // CheckTypeIs(node, to));
1378 // CheckValueInputIs(node, 0, from));
1379 // CheckTypeIs(node, to));
1389 // CheckValueInputIs(node, 0, from));
1390 // CheckTypeIs(node, to));
1398 // CheckValueInputIs(node, 0, from));
1399 // CheckTypeIs(node, to));
1407 // CheckValueInputIs(node, 0, from));
1408 // CheckTypeIs(node, to));
1412 CheckValueInputIs(node, 0, Type::BigInt());
1413 CheckTypeIs(node, Type::BigInt());
1416 CheckValueInputIs(node, 0, Type::SignedBigInt64());
1417 CheckTypeIs(node, Type::SignedBigInt64());
1420 CheckValueInputIs(node, 0, Type::UnsignedBigInt64());
1421 CheckTypeIs(node, Type::UnsignedBigInt64());
1428 CheckValueInputIs(node, 0, Type::Any());
1429 CheckValueInputIs(node, 1, TypeCache::Get()->kPositiveSafeInteger);
1430 CheckTypeIs(node, TypeCache::Get()->kPositiveSafeInteger);
1434 CheckValueInputIs(node, 0, Type::Any());
1435 CheckTypeIs(node, Type::Function());
1438 CheckValueInputIs(node, 0, Type::Any());
1441 CheckValueInputIs(node, 0, Type::Boolean());
1442 CheckNotTyped(node);
1445 CheckValueInputIs(node, 0, Type::Any());
1446 CheckTypeIs(node, Type::InternalizedString());
1449 CheckValueInputIs(node, 0, Type::Any());
1450 CheckNotTyped(node);
1453 CheckValueInputIs(node, 0, Type::Any());
1454 CheckTypeIs(node, Type::Boolean());
1457 CheckValueInputIs(node, 0, Type::Any());
1458 CheckTypeIs(node, Type::Number());
1461 CheckValueInputIs(node, 0, Type::Any());
1462 CheckTypeIs(node, Type::Receiver());
1465 CheckValueInputIs(node, 0, Type::Any());
1466 CheckTypeIs(node, Type::ReceiverOrNullOrUndefined());
1469 CheckValueInputIs(node, 0, Type::Any());
1472 CheckValueInputIs(node, 0, Type::Any());
1473 CheckTypeIs(node, Type::String());
1476 CheckValueInputIs(node, 0, Type::Any());
1477 CheckTypeIs(node, Type::Symbol());
1480 CheckValueInputIs(node, 0, Type::Any());
1481 CheckValueInputIs(node, 1, Type::Any());
1482 CheckTypeIs(node, Type::Receiver());
1516 CheckValueInputIs(node, 0, Type::NumberOrHole());
1517 CheckTypeIs(node, Type::NumberOrUndefined());
1520 CheckValueInputIs(node, 0, Type::Any());
1521 CheckTypeIs(node, Type::NonInternal());
1524 CheckValueInputIs(node, 0, Type::Any());
1525 CheckTypeIs(node, Type::NonInternal());
1529 CheckValueInputIs(node, 0, Type::InternalizedString());
1530 CheckValueInputIs(node, 1, Type::Any());
1531 CheckNotTyped(node);
1534 CheckValueInputIs(node, 0, Type::Symbol());
1535 CheckValueInputIs(node, 1, Type::Any());
1536 CheckNotTyped(node);
1540 CheckValueInputIs(node, 0, Type::Any());
1541 CheckValueInputIs(node, 1, Type::SignedSmall());
1542 CheckTypeIs(node, Type::NonInternal());
1548 // CheckValueInputIs(node, 0, Type::Object());
1549 // CheckTypeIs(node, FieldAccessOf(node->op()).type);
1555 // CheckValueInputIs(node, 0, Type::Object());
1556 // CheckTypeIs(node, ElementAccessOf(node->op()).type));
1560 CheckValueInputIs(node, 0, Type::Receiver());
1570 // CheckValueInputIs(node, 0, Type::Object());
1571 // CheckValueInputIs(node, 1, FieldAccessOf(node->op()).type));
1572 CheckNotTyped(node);
1577 // CheckValueInputIs(node, 0, Type::Object());
1578 // CheckValueInputIs(node, 1, ElementAccessOf(node->op()).type));
1579 CheckNotTyped(node);
1586 CheckNotTyped(node);
1589 CheckNotTyped(node);
1592 CheckNotTyped(node);
1595 CheckNotTyped(node);
1598 CheckNotTyped(node);
1601 CheckNotTyped(node);
1604 CheckValueInputIs(node, 0, Type::Number());
1605 CheckTypeIs(node, Type::Number());
1608 CheckNotTyped(node);
1611 CheckTypeIs(node, TypeGuardTypeOf(node->op()));
1615 Type type = NodeProperties::GetType(node);
1617 CHECK(type.Equals(NodeProperties::GetType(node->InputAt(0))));
1618 CHECK(type.Equals(NodeProperties::GetType(node->InputAt(1))));
1623 CheckTypeIs(node, Type::Number());
1626 CheckValueInputIs(node, 0, Type::Any());
1627 CheckTypeIs(node, Type::BigInt());
1631 CheckValueInputIs(node, 0, Type::Any()); // receiver
1640 CheckTypeIs(node, Type::Any());
1641 CheckValueInputIs(node, 0, Type::Any()); // callee
1881 for (Node* node : all.reachable) visitor.Check(node, all);
1886 Node* node = proj->InputAt(0);
1887 for (Node* other : node->uses()) {
1890 other->InputAt(0) == node &&
1892 FATAL("Node #%d:%s has duplicate projections #%d and #%d", node->id(),
1893 node->op()->mnemonic(), proj->id(), other->id());
1902 static bool HasDominatingDef(Schedule* schedule, Node* node,
1908 if (block->NodeAt(use_pos) == node) return true;
1914 if (node == block->control_input()) return true;
1934 Node* node, int use_pos) {
1935 for (int j = node->op()->ValueInputCount() - 1; j >= 0; j--) {
1937 if (node->opcode() == IrOpcode::kPhi) {
1941 Node* input = node->InputAt(j);
1942 if (!HasDominatingDef(schedule, node->InputAt(j), block, use_block,
1945 node->id(), node->op()->mnemonic(), block->rpo_number(), j,
1952 if (node->op()->ControlInputCount() == 1 &&
1953 node->opcode() != IrOpcode::kEnd) {
1954 Node* ctl = NodeProperties::GetControlInput(node);
1955 if (!Dominates(schedule, ctl, node)) {
1957 node->id(), node->op()->mnemonic(), block->rpo_number(), ctl->id(),
2039 // Compute a set of all the nodes that dominate a given node by using
2059 // First time visiting the node. S.doms = B U B.doms
2125 Node* node = block->NodeAt(i);
2126 CheckInputsDominate(schedule, block, node, static_cast<int>(i) - 1);
2135 void Verifier::VerifyNode(Node* node) {
2136 DCHECK_EQ(OperatorProperties::GetTotalInputCount(node->op()),
2137 node->InputCount());
2138 // If this node has no effect or no control outputs,
2140 bool check_no_control = node->op()->ControlOutputCount() == 0;
2141 bool check_no_effect = node->op()->EffectOutputCount() == 0;
2142 bool check_no_frame_state = node->opcode() != IrOpcode::kFrameState;
2144 for (Edge edge : node->use_edges()) {
2158 if (OperatorProperties::GetFrameStateInputCount(node->op()) > 0) {
2159 Node* input = NodeProperties::GetFrameStateInput(node);
2166 for (int i = 0; i < node->op()->EffectInputCount(); i++) {
2167 Node* input = NodeProperties::GetEffectInput(node, i);
2172 for (int i = 0; i < node->op()->ControlInputCount(); i++) {
2173 Node* input = NodeProperties::GetControlInput(node, i);