| 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?");
|
| }
|
|
|
|
|
|
|