| 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());
|
| }
|
|
|