OLD | NEW |
(Empty) | |
| 1 // Copyright (c) 2014, 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 that safepoints associated with slowpaths don't mark non-existing values |
| 5 // alive. |
| 6 // VMOptions=--optimization-counter-threshold=5 --no-inline_alloc --gc_at_instan
ce_allocation=_Double |
| 7 |
| 8 class C { |
| 9 final next; |
| 10 C(this.next); |
| 11 } |
| 12 |
| 13 |
| 14 noop(a1, a2, a3, a4, a5, a6, a7, a8, a9) => 0; |
| 15 |
| 16 crash(f, i) { |
| 17 final obj1 = new C(null); |
| 18 final obj2 = new C(obj1); |
| 19 final obj3 = new C(obj2); |
| 20 final obj4 = new C(obj3); |
| 21 final obj5 = new C(obj4); |
| 22 final obj6 = new C(obj5); |
| 23 final obj7 = new C(obj6); |
| 24 final obj8 = new C(obj7); |
| 25 final obj9 = new C(obj8); |
| 26 |
| 27 f(obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9); |
| 28 f(obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8, obj9); |
| 29 |
| 30 final d1 = (i + 0).toDouble(); |
| 31 final d2 = (i + 1).toDouble(); |
| 32 final d3 = (i + 2).toDouble(); |
| 33 final d4 = (i + 3).toDouble(); |
| 34 final d5 = (i + 4).toDouble(); |
| 35 final d6 = (i + 5).toDouble(); |
| 36 final d7 = (i + 6).toDouble(); |
| 37 final d8 = (i + 7).toDouble(); |
| 38 final d9 = (i + 8).toDouble(); |
| 39 |
| 40 f(d1, d2, d3, d4, d5, d6, d7, d8, d9); |
| 41 f(d1, d2, d3, d4, d5, d6, d7, d8, d9); |
| 42 } |
| 43 |
| 44 main() { |
| 45 for (var i = 0; i < 10; i++) { |
| 46 print(i); |
| 47 crash(noop, 10); |
| 48 } |
| 49 } |
OLD | NEW |