| // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | |
| // for details. All rights reserved. Use of this source code is governed by a | |
| // BSD-style license that can be found in the LICENSE file. | |
| // Test program for correct optimizations related to types fo allocated lists. | |
| // VMOptions=--optimization-counter-threshold=10 | |
| import "package:expect/expect.dart"; | |
| main() { | |
| // Trigger optimization of 'test' method. | |
| for (int i = 0; i < 20; i++) { | |
| test(2); | |
| } | |
| } | |
| test(n) { | |
| var a = []; // Growable list. | |
| var b = new List<dynamic>.filled(10, null); // Fixed size list. | |
| var c = const [1, 2, 3, 4]; // Constant array. | |
| // In optimized mode the class checks will be eliminated since the | |
| // constructors above provide information about exact types. | |
| a.add(4); | |
| b[0] = 5; | |
| Expect.equals(4, a[0]); | |
| Expect.equals(5, b[0]); | |
| // Test bound check elimination. | |
| Expect.equals(2, c[1]); | |
| // Test elimination of array length computation. | |
| var v = c[n]; | |
| Expect.equals(v, c[n]); | |
| } |