Index: src/hydrogen.cc |
diff --git a/src/hydrogen.cc b/src/hydrogen.cc |
index ed21567e51b1a8f455fbf4bd0c00771808ce2273..9a517e0d75ec597459699cbc0a329dd1d7f89c70 100644 |
--- a/src/hydrogen.cc |
+++ b/src/hydrogen.cc |
@@ -784,11 +784,16 @@ HBoundsCheck* HGraphBuilder::AddBoundsCheck(HValue* index, |
HValue* length, |
BoundsCheckKeyMode key_mode, |
Representation r) { |
- HCheckSmiOrInt32* checked_index = |
- new(graph()->zone()) HCheckSmiOrInt32(index); |
- AddInstruction(checked_index); |
+ if (!index->type().IsSmi()) { |
+ index = new(graph()->zone()) HCheckSmiOrInt32(index); |
+ AddInstruction(HCheckSmiOrInt32::cast(index)); |
+ } |
+ if (!length->type().IsSmi()) { |
+ length = new(graph()->zone()) HCheckSmiOrInt32(length); |
+ AddInstruction(HCheckSmiOrInt32::cast(length)); |
+ } |
HBoundsCheck* result = new(graph()->zone()) HBoundsCheck( |
- checked_index, length, key_mode, r); |
+ index, length, key_mode, r); |
AddInstruction(result); |
return result; |
} |