OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011, 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 // Test deoptimization caused by running code that did not collect type | |
5 // feedback before. | |
6 | |
7 testStoreIndexed() { | |
8 test(a, i, v, flag) { | |
9 if (flag) { | |
10 // No type feedback in first pass | |
11 return a[i] = v; | |
12 } else { | |
13 return a[i] = i; | |
14 } | |
15 } | |
16 | |
17 var a = new List(10); | |
18 for (var i = 0; i < 2000; i++) { | |
19 var r = test(a, 3, 888, false); | |
20 Expect.equals(3, r); | |
21 Expect.equals(3, a[3]); | |
22 } | |
23 // Deopt. | |
24 var r = test(a, 3, 888, true); | |
25 Expect.equals(888, r); | |
26 Expect.equals(888, a[3]); | |
27 } | |
28 | |
29 testIncrLocal() { | |
30 test(a, flag) { | |
31 if (flag) { | |
32 a++; | |
33 return a; | |
34 } else { | |
35 return -1; | |
36 } | |
37 } | |
38 | |
39 for (var i = 0; i < 2000; i++) { | |
40 var r = test(10, false); | |
41 Expect.equals(-1, r); | |
42 } | |
43 // Deopt. | |
44 var r = test(10, true); | |
45 Expect.equals(11, r); | |
46 } | |
47 | |
48 | |
49 main() { | |
50 for (var i = 0; i < 2000; i++) {} | |
51 testStoreIndexed(); | |
52 testIncrLocal(); | |
53 } | |
OLD | NEW |