OLD | NEW |
1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 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 | 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 // Test deoptimization caused by running code that did not collect type | 4 // Test deoptimization caused by running code that did not collect type |
5 // feedback before. | 5 // feedback before. |
6 | 6 |
7 testStoreIndexed() { | 7 testStoreIndexed() { |
8 test(a, i, v, flag) { | 8 test(a, i, v, flag) { |
9 if (flag) { | 9 if (flag) { |
10 // No type feedback in first pass | 10 // No type feedback in first pass |
11 return a[i] = v; | 11 return a[i] = v; |
12 } else { | 12 } else { |
13 return a[i] = i; | 13 return a[i] = i; |
14 } | 14 } |
15 } | 15 } |
16 | 16 |
17 var a = new List.fixedLength(10); | 17 var a = new List(10); |
18 for (var i = 0; i < 2000; i++) { | 18 for (var i = 0; i < 2000; i++) { |
19 var r = test(a, 3, 888, false); | 19 var r = test(a, 3, 888, false); |
20 Expect.equals(3, r); | 20 Expect.equals(3, r); |
21 Expect.equals(3, a[3]); | 21 Expect.equals(3, a[3]); |
22 } | 22 } |
23 // Deopt. | 23 // Deopt. |
24 var r = test(a, 3, 888, true); | 24 var r = test(a, 3, 888, true); |
25 Expect.equals(888, r); | 25 Expect.equals(888, r); |
26 Expect.equals(888, a[3]); | 26 Expect.equals(888, a[3]); |
27 } | 27 } |
(...skipping 16 matching lines...) Expand all Loading... |
44 var r = test(10, true); | 44 var r = test(10, true); |
45 Expect.equals(11, r); | 45 Expect.equals(11, r); |
46 } | 46 } |
47 | 47 |
48 | 48 |
49 main() { | 49 main() { |
50 for (var i = 0; i < 2000; i++) {} | 50 for (var i = 0; i < 2000; i++) {} |
51 testStoreIndexed(); | 51 testStoreIndexed(); |
52 testIncrLocal(); | 52 testIncrLocal(); |
53 } | 53 } |
OLD | NEW |