| 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;
|
| }
|
|
|