Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index d1a4782a011ef4245c92a64012dae493015879d0..f89665ef00226f20314232a0d1685d8e09002c8f 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -490,7 +490,7 @@ void HInstruction::InsertAfter(HInstruction* previous) { |
#ifdef DEBUG |
-void HInstruction::Verify() const { |
+void HInstruction::Verify() { |
// Verify that input operands are defined before use. |
HBasicBlock* cur_block = block(); |
for (int i = 0; i < OperandCount(); ++i) { |
@@ -517,6 +517,11 @@ void HInstruction::Verify() const { |
if (HasSideEffects() && !IsOsrEntry()) { |
ASSERT(next()->IsSimulate()); |
} |
+ |
+ // Verify that instructions that can be eliminated by GVN have overridden |
+ // HValue::DataEquals. The default implementation is UNREACHABLE. We |
+ // don't actually care whether DataEquals returns true or false here. |
+ if (CheckFlag(kUseGVN)) DataEquals(this); |
} |
#endif |
@@ -1388,7 +1393,7 @@ HValue* HAdd::EnsureAndPropagateNotMinusZero(BitVector* visited) { |
// Node-specific verification code is only included in debug mode. |
#ifdef DEBUG |
-void HPhi::Verify() const { |
+void HPhi::Verify() { |
ASSERT(OperandCount() == block()->predecessors()->length()); |
for (int i = 0; i < OperandCount(); ++i) { |
HValue* value = OperandAt(i); |
@@ -1400,49 +1405,49 @@ void HPhi::Verify() const { |
} |
-void HSimulate::Verify() const { |
+void HSimulate::Verify() { |
HInstruction::Verify(); |
ASSERT(HasAstId()); |
} |
-void HBoundsCheck::Verify() const { |
+void HBoundsCheck::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |
-void HCheckSmi::Verify() const { |
+void HCheckSmi::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |
-void HCheckNonSmi::Verify() const { |
+void HCheckNonSmi::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |
-void HCheckInstanceType::Verify() const { |
+void HCheckInstanceType::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |
-void HCheckMap::Verify() const { |
+void HCheckMap::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |
-void HCheckFunction::Verify() const { |
+void HCheckFunction::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |
-void HCheckPrototypeMaps::Verify() const { |
+void HCheckPrototypeMaps::Verify() { |
HInstruction::Verify(); |
ASSERT(HasNoUses()); |
} |