| Index: runtime/vm/intermediate_language.cc
|
| ===================================================================
|
| --- runtime/vm/intermediate_language.cc (revision 15556)
|
| +++ runtime/vm/intermediate_language.cc (working copy)
|
| @@ -2460,10 +2460,33 @@
|
| RangeBoundary::FromConstant(Array::kMaxElements));
|
| return;
|
| }
|
| + if ((range_ == NULL) &&
|
| + (recognized_kind() == MethodRecognizer::kStringBaseLength)) {
|
| + range_ = new Range(RangeBoundary::FromConstant(0),
|
| + RangeBoundary::FromConstant(String::kMaxElements));
|
| + return;
|
| + }
|
| Definition::InferRange();
|
| }
|
|
|
|
|
| +
|
| +void StringCharCodeAtInstr::InferRange() {
|
| + switch (class_id_) {
|
| + case kOneByteStringCid:
|
| + range_ = new Range(RangeBoundary::FromConstant(0),
|
| + RangeBoundary::FromConstant(0xFF));
|
| + break;
|
| + case kTwoByteStringCid:
|
| + range_ = new Range(RangeBoundary::FromConstant(0),
|
| + RangeBoundary::FromConstant(0xFFFF));
|
| + break;
|
| + default:
|
| + UNIMPLEMENTED();
|
| + }
|
| +}
|
| +
|
| +
|
| void LoadIndexedInstr::InferRange() {
|
| switch (class_id()) {
|
| case kExternalUint8ArrayCid:
|
|
|