Chromium Code Reviews| Index: tests/compiler/dart2js/licm_test.dart |
| =================================================================== |
| --- tests/compiler/dart2js/licm_test.dart (revision 0) |
| +++ tests/compiler/dart2js/licm_test.dart (revision 0) |
| @@ -0,0 +1,34 @@ |
| +// Copyright (c) 2013, 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. |
| + |
| +// Check that we hoist instructions in a loop condition, even if that |
| +// condition involves control flow. |
| + |
| +import 'package:expect/expect.dart'; |
| + |
| +import 'compiler_helper.dart'; |
| + |
| +const String TEST = ''' |
| +var a = [1]; |
| + |
| +main() { |
| + int count = int.parse('42') == 42 ? 42 : null; |
| + for (int i = 0; i < count && i < a[0]; i++) { |
| + print(i); |
| + } |
| + a.removeLast(); |
| + // Ensure we don't try to generate a bailout method based on a check |
| + // of [count]. |
| + count.removeLast(); |
| +} |
| +'''; |
| + |
| +main() { |
| + String generated = compile(TEST, entry: 'main'); |
| + int checkIndex = generated.indexOf('if (count == null)'); |
|
karlklose
2013/08/15 12:58:02
Consider testing this with a regular expression li
ngeoffray
2013/08/15 13:55:29
Done.
|
| + int loopIndex = generated.indexOf('while (true)'); |
| + Expect.isTrue(checkIndex != -1); |
| + Expect.isTrue(loopIndex != -1); |
| + Expect.isTrue(checkIndex < loopIndex); |
| +} |