Index: src/compiler/bytecode-graph-builder.cc |
diff --git a/src/compiler/bytecode-graph-builder.cc b/src/compiler/bytecode-graph-builder.cc |
index f6790a863d735b6c8622b45cfdb4f94c0379c72c..acf12ef8594da23d2e22cb39da6a7127d44919e5 100644 |
--- a/src/compiler/bytecode-graph-builder.cc |
+++ b/src/compiler/bytecode-graph-builder.cc |
@@ -2072,11 +2072,25 @@ void BytecodeGraphBuilder::BuildJumpIfEqual(Node* comperand) { |
} |
void BytecodeGraphBuilder::BuildJumpIfFalse() { |
- BuildJumpIfNot(environment()->LookupAccumulator()); |
+ NewBranch(environment()->LookupAccumulator()); |
+ Environment* if_true_environment = environment()->Copy(); |
+ environment()->BindAccumulator(jsgraph()->FalseConstant()); |
+ NewIfFalse(); |
+ MergeIntoSuccessorEnvironment(bytecode_iterator().GetJumpTargetOffset()); |
+ if_true_environment->BindAccumulator(jsgraph()->TrueConstant()); |
+ set_environment(if_true_environment); |
+ NewIfTrue(); |
} |
void BytecodeGraphBuilder::BuildJumpIfTrue() { |
- BuildJumpIf(environment()->LookupAccumulator()); |
+ NewBranch(environment()->LookupAccumulator()); |
+ Environment* if_false_environment = environment()->Copy(); |
+ environment()->BindAccumulator(jsgraph()->TrueConstant()); |
+ NewIfTrue(); |
+ MergeIntoSuccessorEnvironment(bytecode_iterator().GetJumpTargetOffset()); |
+ if_false_environment->BindAccumulator(jsgraph()->FalseConstant()); |
+ set_environment(if_false_environment); |
+ NewIfFalse(); |
} |
void BytecodeGraphBuilder::BuildJumpIfToBooleanTrue() { |