| Index: pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| diff --git a/pkg/compiler/lib/src/cps_ir/type_propagation.dart b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| index 906ed6f531333462d5c04577672944bcb82a697b..c89173ad0cf60ca506e49032c8a664a98529417c 100644
|
| --- a/pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| +++ b/pkg/compiler/lib/src/cps_ir/type_propagation.dart
|
| @@ -1233,10 +1233,12 @@ class TransformingVisitor extends DeepRecursiveVisitor {
|
| return cps;
|
| }
|
| Continuation fail = cps.letCont();
|
| - Primitive isTooSmall = cps.applyBuiltin(
|
| - BuiltinOperator.NumLt,
|
| - <Primitive>[index, cps.makeZero()]);
|
| - cps.ifTruthy(isTooSmall).invokeContinuation(fail);
|
| + if (!typeSystem.isDefinitelyNonNegativeInt(index.type)) {
|
| + Primitive isTooSmall = cps.applyBuiltin(
|
| + BuiltinOperator.NumLt,
|
| + <Primitive>[index, cps.makeZero()]);
|
| + cps.ifTruthy(isTooSmall).invokeContinuation(fail);
|
| + }
|
| Primitive isTooLarge = cps.applyBuiltin(
|
| BuiltinOperator.NumGe,
|
| <Primitive>[index, cps.letPrim(new GetLength(list))]);
|
|
|