Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index a685198ba6288e54e0913695f6e6f4e5cc797f09..377dbf5c0e81dcc2c8c9738ba5a149c78358ecf4 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -794,7 +794,7 @@ void HInstruction::Verify() { |
// Verify that instructions that may have side-effects are followed |
// by a simulate instruction. |
- if (HasObservableSideEffects() && !IsOsrEntry()) { |
+ if (HasObservableSideEffects() && !IsOsrEntry() && !IsControlInstruction()) { |
ASSERT(next()->IsSimulate()); |
} |
@@ -1011,6 +1011,21 @@ void HControlInstruction::PrintDataTo(StringStream* stream) { |
} |
+#ifdef DEBUG |
+void HControlInstruction::Verify() { |
+ HInstruction::Verify(); |
+ if (!HasObservableSideEffects()) return; |
+ for (HSuccessorIterator it(this); !it.Done(); it.Advance()) { |
+ // For ControlInstructions we need to verify that the successors all start |
+ // with a Simulate. |
+ HInstruction* first = it.Current()->first()->next(); |
+ ASSERT(first->IsSimulate() || |
+ (first->IsLeaveInlined() && first->next()->IsSimulate())); |
+ } |
+} |
+#endif |
+ |
+ |
void HUnaryControlInstruction::PrintDataTo(StringStream* stream) { |
value()->PrintNameTo(stream); |
HControlInstruction::PrintDataTo(stream); |
@@ -2823,10 +2838,14 @@ Range* HLoadKeyed::InferRange(Zone* zone) { |
} |
-void HCompareGeneric::PrintDataTo(StringStream* stream) { |
+void HCompareGenericAndBranch::PrintDataTo(StringStream* stream) { |
stream->Add(Token::Name(token())); |
stream->Add(" "); |
- HBinaryOperation::PrintDataTo(stream); |
+ left()->PrintNameTo(stream); |
+ stream->Add(" "); |
+ right()->PrintNameTo(stream); |
+ if (CheckFlag(kCanOverflow)) stream->Add(" !"); |
+ if (CheckFlag(kBailoutOnMinusZero)) stream->Add(" -0?"); |
} |