| Index: runtime/vm/intermediate_language.cc
|
| diff --git a/runtime/vm/intermediate_language.cc b/runtime/vm/intermediate_language.cc
|
| index 5ea37aa7cca3e7cb81557f082958a62fef01970d..6f183d89f1c6e45845bed6fee8735f9943366035 100644
|
| --- a/runtime/vm/intermediate_language.cc
|
| +++ b/runtime/vm/intermediate_language.cc
|
| @@ -1368,6 +1368,16 @@ Definition* LoadFieldInstr::Canonicalize(FlowGraph* flow_graph) {
|
| IsFixedLengthArrayCid(call->Type()->ToCid())) {
|
| return call->ArgumentAt(1);
|
| }
|
| + // For arrays with guarded lengths, replace the length load
|
| + // with a constant.
|
| + LoadFieldInstr* load_array = instance()->definition()->AsLoadField();
|
| + if (load_array != NULL) {
|
| + const Field* field = load_array->field();
|
| + if ((field != NULL) && (field->guarded_list_length() >= 0)) {
|
| + return flow_graph->GetConstant(
|
| + Smi::Handle(Smi::New(field->guarded_list_length())));
|
| + }
|
| + }
|
| return this;
|
| }
|
|
|
|
|