OLD | NEW |
| (Empty) |
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 | |
3 // BSD-style license that can be found in the LICENSE file. | |
4 // | |
5 // Tests optimization: transform double.toInt() to DoubleToSmi | |
6 // unless we encounter a non-Smi result, in which case we deoptimize and | |
7 // optimize it later to DoubleToInt. | |
8 | |
9 import "package:expect/expect.dart"; | |
10 | |
11 main() { | |
12 for (int i = 0; i < 600; i++) { | |
13 Expect.equals(100, foo(100, 1.2)); | |
14 } | |
15 // Deoptimize 'foo', d2smi -> d2int. | |
16 Expect.equals(36507222016 * 2, foo(2, 36507222016.6)); | |
17 for (int i = 0; i < 600; i++) { | |
18 Expect.equals(100, foo(100, 1.2)); | |
19 } | |
20 Expect.equals(36507222016 * 2, foo(2, 36507222016.6)); | |
21 } | |
22 | |
23 foo(n, a) { | |
24 int k = 0; | |
25 for (int i = 0; i < n; i++) { | |
26 k += goo(a); | |
27 } | |
28 return k; | |
29 } | |
30 | |
31 goo(a) { | |
32 return a.toInt(); | |
33 } | |
OLD | NEW |