| Index: src/hydrogen-instructions.cc
|
| diff --git a/src/hydrogen-instructions.cc b/src/hydrogen-instructions.cc
|
| index 11cc901b38ccfccf7a3607f99e1088b47b7f4ac9..b353cdb2cc514acd7f31bc1752c92faff3f10ff7 100644
|
| --- a/src/hydrogen-instructions.cc
|
| +++ b/src/hydrogen-instructions.cc
|
| @@ -829,9 +829,8 @@ void HBoundsCheck::InferRepresentation(HInferRepresentation* h_infer) {
|
| !length()->representation().IsTagged()) {
|
| r = Representation::Integer32();
|
| } else if (index()->representation().IsTagged() ||
|
| - (index()->IsConstant() &&
|
| - HConstant::cast(index())->HasInteger32Value() &&
|
| - Smi::IsValid(HConstant::cast(index())->Integer32Value()))) {
|
| + (index()->ActualValue()->IsConstant() &&
|
| + HConstant::cast(index()->ActualValue())->HasSmiValue())) {
|
| // If the index is tagged, or a constant that holds a Smi, allow the length
|
| // to be tagged, since it is usually already tagged from loading it out of
|
| // the length field of a JSArray. This allows for direct comparison without
|
| @@ -2392,6 +2391,14 @@ HType HCheckSmi::CalculateInferredType() {
|
| }
|
|
|
|
|
| +void HCheckSmiOrInt32::InferRepresentation(HInferRepresentation* h_infer) {
|
| + ASSERT(CheckFlag(kFlexibleRepresentation));
|
| + Representation r = value()->representation().IsTagged()
|
| + ? Representation::Tagged() : Representation::Integer32();
|
| + UpdateRepresentation(r, h_infer, "checksmiorint32");
|
| +}
|
| +
|
| +
|
| HType HPhi::CalculateInferredType() {
|
| HType result = HType::Uninitialized();
|
| for (int i = 0; i < OperandCount(); ++i) {
|
|
|