Index: src/hydrogen-instructions.cc |
diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc |
index effafdc685ce25a321ace2787ec4779949a81437..ada19f610f6e7d48ddf9bf3a8ebc34e682de18f8 100644 |
--- a/src/hydrogen-instructions.cc |
+++ b/src/hydrogen-instructions.cc |
@@ -3251,11 +3251,27 @@ bool HIsObjectAndBranch::KnownSuccessorBlock(HBasicBlock** block) { |
bool HIsStringAndBranch::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())->HasStringValue() |
? FirstSuccessor() : SecondSuccessor(); |
return true; |
} |
+ if (value()->type().IsString()) { |
+ *block = FirstSuccessor(); |
+ return true; |
+ } |
+ if (value()->type().IsSmi() || |
+ value()->type().IsNull() || |
+ value()->type().IsBoolean() || |
+ value()->type().IsUndefined() || |
+ value()->type().IsJSObject()) { |
+ *block = SecondSuccessor(); |
+ return true; |
+ } |
*block = NULL; |
return false; |
} |