| Index: runtime/vm/flow_graph_optimizer.cc
|
| ===================================================================
|
| --- runtime/vm/flow_graph_optimizer.cc (revision 17135)
|
| +++ runtime/vm/flow_graph_optimizer.cc (working copy)
|
| @@ -598,7 +598,11 @@
|
| value_check = call->ic_data()->AsUnaryClassChecksForArgNr(2);
|
| }
|
| break;
|
| + case kInt8ArrayCid:
|
| case kUint8ArrayCid:
|
| + case kUint8ClampedArrayCid:
|
| + case kInt16ArrayCid:
|
| + case kUint16ArrayCid:
|
| // Check that value is always smi.
|
| value_check = call->ic_data()->AsUnaryClassChecksForArgNr(2);
|
| if ((value_check.NumberOfChecks() != 1) ||
|
| @@ -649,14 +653,19 @@
|
| type_args = new Value(load_type_args);
|
| break;
|
| }
|
| + case kInt8ArrayCid:
|
| case kUint8ArrayCid:
|
| + case kUint8ClampedArrayCid:
|
| + case kInt16ArrayCid:
|
| + case kUint16ArrayCid:
|
| + ASSERT(value_type.IsIntType());
|
| + // Fall through.
|
| case kFloat32ArrayCid:
|
| case kFloat64ArrayCid: {
|
| ConstantInstr* null_constant = new ConstantInstr(Object::ZoneHandle());
|
| InsertBefore(call, null_constant, NULL, Definition::kValue);
|
| instantiator = new Value(null_constant);
|
| type_args = new Value(null_constant);
|
| - ASSERT((class_id != kUint8ArrayCid) || value_type.IsIntType());
|
| ASSERT((class_id != kFloat32ArrayCid && class_id != kFloat64ArrayCid) ||
|
| value_type.IsDoubleType());
|
| ASSERT(value_type.IsInstantiated());
|
| @@ -720,9 +729,12 @@
|
| case kGrowableObjectArrayCid:
|
| case kFloat32ArrayCid:
|
| case kFloat64ArrayCid:
|
| + case kInt8ArrayCid:
|
| case kUint8ArrayCid:
|
| case kUint8ClampedArrayCid:
|
| case kExternalUint8ArrayCid:
|
| + case kInt16ArrayCid:
|
| + case kUint16ArrayCid:
|
| // Acceptable load index classes.
|
| break;
|
| default:
|
|
|