| OLD | NEW |
| 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 // | 4 // |
| 5 // Tests optimization: transform double.toInt() to DoubleToSmi | 5 // Tests optimization: transform double.toInt() to DoubleToSmi |
| 6 // unless we encounter a non-Smi result, in which case we deoptimize and | 6 // unless we encounter a non-Smi result, in which case we deoptimize and |
| 7 // optimize it later to DoubleToInt. | 7 // optimize it later to DoubleToInt. |
| 8 | 8 |
| 9 import "package:expect/expect.dart"; | |
| 10 | |
| 11 | 9 |
| 12 main() { | 10 main() { |
| 13 for (int i = 0; i < 600; i++) { | 11 for (int i = 0; i < 600; i++) { |
| 14 Expect.equals(100, foo(100, 1.2)); | 12 Expect.equals(100, foo(100, 1.2)); |
| 15 } | 13 } |
| 16 // Deoptimize 'foo', d2smi -> d2int. | 14 // Deoptimize 'foo', d2smi -> d2int. |
| 17 Expect.equals(36507222016 * 2, foo(2, 36507222016.6)); | 15 Expect.equals(36507222016 * 2, foo(2, 36507222016.6)); |
| 18 for (int i = 0; i < 600; i++) { | 16 for (int i = 0; i < 600; i++) { |
| 19 Expect.equals(100, foo(100, 1.2)); | 17 Expect.equals(100, foo(100, 1.2)); |
| 20 } | 18 } |
| 21 Expect.equals(36507222016 * 2, foo(2, 36507222016.6)); | 19 Expect.equals(36507222016 * 2, foo(2, 36507222016.6)); |
| 22 } | 20 } |
| 23 | 21 |
| 24 | 22 |
| 25 foo(n, a) { | 23 foo(n, a) { |
| 26 int k = 0; | 24 int k = 0; |
| 27 for (int i = 0; i < n; i++) { | 25 for (int i = 0; i < n; i++) { |
| 28 k += goo(a); | 26 k += goo(a); |
| 29 } | 27 } |
| 30 return k; | 28 return k; |
| 31 } | 29 } |
| 32 | 30 |
| 33 | 31 |
| 34 goo(a) { | 32 goo(a) { |
| 35 return a.toInt(); | 33 return a.toInt(); |
| 36 } | 34 } |
| OLD | NEW |