summaryrefslogtreecommitdiff
path: root/chromium/v8/src/compiler/verifier.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/v8/src/compiler/verifier.cc')
-rw-r--r--chromium/v8/src/compiler/verifier.cc27
1 files changed, 21 insertions, 6 deletions
diff --git a/chromium/v8/src/compiler/verifier.cc b/chromium/v8/src/compiler/verifier.cc
index b5b3ab5a981..8b7e22459b9 100644
--- a/chromium/v8/src/compiler/verifier.cc
+++ b/chromium/v8/src/compiler/verifier.cc
@@ -482,8 +482,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
Node* control = NodeProperties::GetControlInput(node, 0);
CHECK_EQ(effect_count, control->op()->ControlInputCount());
CHECK_EQ(input_count, 1 + effect_count);
- // If the control input is a Merge, then make sure that at least one
- // of it's usages is non-phi.
+ // If the control input is a Merge, then make sure that at least one of
+ // its usages is non-phi.
if (control->opcode() == IrOpcode::kMerge) {
bool non_phi_use_found = false;
for (Node* use : control->uses()) {
@@ -954,8 +954,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kSpeculativeBigIntNegate:
CheckTypeIs(node, Type::BigInt());
break;
- case IrOpcode::kBigIntAsUintN:
- CheckValueInputIs(node, 0, Type::BigInt());
+ case IrOpcode::kSpeculativeBigIntAsUintN:
+ CheckValueInputIs(node, 0, Type::Any());
CheckTypeIs(node, Type::BigInt());
break;
case IrOpcode::kBigIntAdd:
@@ -1500,6 +1500,15 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kAssertType:
break;
+ case IrOpcode::kVerifyType:
+ if (NodeProperties::IsTyped(node)) {
+ Node* input = NodeProperties::GetValueInput(node, 0);
+ DCHECK(NodeProperties::IsTyped(input));
+ CHECK(NodeProperties::GetType(node).Equals(
+ NodeProperties::GetType(input)));
+ }
+ break;
+
case IrOpcode::kCheckFloat64Hole:
CheckValueInputIs(node, 0, Type::NumberOrHole());
CheckTypeIs(node, Type::NumberOrUndefined());
@@ -1658,8 +1667,12 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kWord64Rol:
case IrOpcode::kWord64Ror:
case IrOpcode::kWord64Clz:
- case IrOpcode::kWord64Popcnt:
case IrOpcode::kWord64Ctz:
+ case IrOpcode::kWord64RolLowerable:
+ case IrOpcode::kWord64RorLowerable:
+ case IrOpcode::kWord64ClzLowerable:
+ case IrOpcode::kWord64CtzLowerable:
+ case IrOpcode::kWord64Popcnt:
case IrOpcode::kWord64ReverseBits:
case IrOpcode::kWord64ReverseBytes:
case IrOpcode::kSimd128ReverseBytes:
@@ -1791,6 +1804,8 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
case IrOpcode::kFloat64ExtractHighWord32:
case IrOpcode::kFloat64InsertLowWord32:
case IrOpcode::kFloat64InsertHighWord32:
+ case IrOpcode::kWord32Select:
+ case IrOpcode::kWord64Select:
case IrOpcode::kFloat32Select:
case IrOpcode::kFloat64Select:
case IrOpcode::kInt32PairAdd:
@@ -1850,7 +1865,7 @@ void Verifier::Visitor::Check(Node* node, const AllNodes& all) {
// TODO(rossberg): Check.
break;
}
-} // NOLINT(readability/fn_size)
+}
void Verifier::Run(Graph* graph, Typing typing, CheckInputs check_inputs,
CodeType code_type) {