Index: src/compiler/node-properties.cc |
diff --git a/src/compiler/node-properties.cc b/src/compiler/node-properties.cc |
index ac768a7d37f1781f8404c8ad0414ba93997bda8b..19ca5dd1b655c8bf727799fb4c7d75b46161f61f 100644 |
--- a/src/compiler/node-properties.cc |
+++ b/src/compiler/node-properties.cc |
@@ -120,8 +120,9 @@ bool NodeProperties::IsControlEdge(Edge edge) { |
// static |
bool NodeProperties::IsExceptionalCall(Node* node) { |
- for (Node* const use : node->uses()) { |
- if (use->opcode() == IrOpcode::kIfException) return true; |
+ for (Edge const edge : node->use_edges()) { |
+ if (!NodeProperties::IsControlEdge(edge)) continue; |
+ if (edge.from()->opcode() == IrOpcode::kIfException) return true; |
} |
return false; |
} |
@@ -228,11 +229,11 @@ void NodeProperties::CollectControlProjections(Node* node, Node** projections, |
index = 1; |
break; |
case IrOpcode::kIfSuccess: |
- DCHECK_EQ(IrOpcode::kCall, node->opcode()); |
+ DCHECK(!node->op()->HasProperty(Operator::kNoThrow)); |
index = 0; |
break; |
case IrOpcode::kIfException: |
- DCHECK_EQ(IrOpcode::kCall, node->opcode()); |
+ DCHECK(!node->op()->HasProperty(Operator::kNoThrow)); |
index = 1; |
break; |
case IrOpcode::kIfValue: |