| Index: src/hydrogen.cc
|
| diff --git a/src/hydrogen.cc b/src/hydrogen.cc
|
| index 8e9fe00034964da47b342582dec75cea8cedc16a..1afa6603aaa31a308969e9f7a15ba92e67e7d61f 100644
|
| --- a/src/hydrogen.cc
|
| +++ b/src/hydrogen.cc
|
| @@ -3567,7 +3567,10 @@ class BoundsCheckBbData: public ZoneObject {
|
| HConstant(new_offset, Representation::Integer32());
|
| if (*add == NULL) {
|
| new_constant->InsertBefore(check);
|
| - *add = new(BasicBlock()->zone()) HAdd(NULL,
|
| + // Because of the bounds checks elimination algorithm, the index is always
|
| + // an HAdd or an HSub here, so we can safely cast to an HBinaryOperation.
|
| + HValue* context = HBinaryOperation::cast(check->index())->context();
|
| + *add = new(BasicBlock()->zone()) HAdd(context,
|
| original_value,
|
| new_constant);
|
| (*add)->AssumeRepresentation(representation);
|
|
|