Index: src/crankshaft/hydrogen-instructions.cc |
diff --git a/src/crankshaft/hydrogen-instructions.cc b/src/crankshaft/hydrogen-instructions.cc |
index a9c6228cd35c096636a22d9e2358434dfd48e5cc..9277bcfa7880bc70cabd772371f68c63b979100a 100644 |
--- a/src/crankshaft/hydrogen-instructions.cc |
+++ b/src/crankshaft/hydrogen-instructions.cc |
@@ -3267,11 +3267,26 @@ bool HIsStringAndBranch::KnownSuccessorBlock(HBasicBlock** block) { |
bool HIsUndetectableAndBranch::KnownSuccessorBlock(HBasicBlock** block) { |
+ if (known_successor_index() != kNoKnownSuccessorIndex) { |
+ *block = SuccessorAt(known_successor_index()); |
+ return true; |
+ } |
if (FLAG_fold_constants && value()->IsConstant()) { |
*block = HConstant::cast(value())->IsUndetectable() |
? FirstSuccessor() : SecondSuccessor(); |
return true; |
} |
+ if (value()->type().IsNull() || value()->type().IsUndefined()) { |
+ *block = FirstSuccessor(); |
+ return true; |
+ } |
+ if (value()->type().IsBoolean() || |
+ value()->type().IsSmi() || |
+ value()->type().IsString() || |
+ value()->type().IsJSReceiver()) { |
+ *block = SecondSuccessor(); |
+ return true; |
+ } |
*block = NULL; |
return false; |
} |