Index: src/hydrogen-instructions.h |
diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
index bf59159164c53b4e41ae52ee2d48d76625017a1b..c36388ee6abd359898fe1f57134b8e9f19311d81 100644 |
--- a/src/hydrogen-instructions.h |
+++ b/src/hydrogen-instructions.h |
@@ -4890,7 +4890,11 @@ class HShl: public HBitwiseBinaryOperation { |
virtual void UpdateRepresentation(Representation new_rep, |
HInferRepresentationPhase* h_infer, |
const char* reason) { |
- if (new_rep.IsSmi()) new_rep = Representation::Integer32(); |
+ if (new_rep.IsSmi() && |
+ !(right()->IsInteger32Constant() && |
+ right()->GetInteger32Constant() >= 0)) { |
+ new_rep = Representation::Integer32(); |
+ } |
HBitwiseBinaryOperation::UpdateRepresentation(new_rep, h_infer, reason); |
} |