Chromium Code Reviews| Index: runtime/vm/intermediate_language.cc |
| =================================================================== |
| --- runtime/vm/intermediate_language.cc (revision 16324) |
| +++ runtime/vm/intermediate_language.cc (working copy) |
| @@ -2500,6 +2500,11 @@ |
| return; |
| } |
| if ((range_ == NULL) && |
| + (recognized_kind() == MethodRecognizer::kByteArrayBaseLength)) { |
| + range_ = new Range(RangeBoundary::FromConstant(0), RangeBoundary::MaxSmi()); |
| + return; |
| + } |
| + if ((range_ == NULL) && |
| (recognized_kind() == MethodRecognizer::kStringBaseLength)) { |
| range_ = new Range(RangeBoundary::FromConstant(0), |
| RangeBoundary::FromConstant(String::kMaxElements)); |
| @@ -2714,9 +2719,30 @@ |
| } |
| +bool CheckArrayBoundInstr::IsFixedLengthArrayType(intptr_t cid) { |
| + switch (cid) { |
| + case kArrayCid: |
| + case kImmutableArrayCid: |
| + case kInt8ArrayCid: |
| + case kUint8ArrayCid: |
| + case kInt16ArrayCid: |
| + case kUint16ArrayCid: |
| + case kInt32ArrayCid: |
| + case kUint32ArrayCid: |
| + case kInt64ArrayCid: |
| + case kUint64ArrayCid: |
| + case kFloat32ArrayCid: |
| + case kFloat64ArrayCid: |
|
Vyacheslav Egorov (Google)
2013/01/07 11:47:09
Make sure that LengthOffsetFor can return offset f
Florian Schneider
2013/01/07 14:24:49
Done. Changed LengthOffsetFor to handle the same a
|
| + return true; |
| + default: |
| + return false; |
| + } |
| +} |
| + |
| + |
| bool CheckArrayBoundInstr::IsRedundant(RangeBoundary length) { |
| // Check that array has an immutable length. |
| - if ((array_type() != kArrayCid) && (array_type() != kImmutableArrayCid)) { |
| + if (!IsFixedLengthArrayType(array_type())) { |
| return false; |
| } |