| // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| // VMOptions=--stacktrace-every=3 --optimization-counter-threshold=10 --no-background-compilation |
| |
| // @dart = 2.9 |
| |
| // Test generating stacktraces with inlining and deferred code. |
| // Regression test for issue dartbug.com/22331 |
| |
| class A { |
| final N; |
| final inc; |
| var next; |
| A(this.N, this.inc) { |
| next = this; |
| } |
| } |
| |
| foo(o, value) { |
| for (var i = 0; i < o.N; i += o.inc) { |
| if (value < i) { |
| throw ""; |
| } |
| o = o.next; |
| } |
| return value; |
| } |
| |
| @pragma('vm:never-inline') |
| baz(x, y, z) => z; |
| |
| bar(o) { |
| var value = 0x100000000 + o.inc; |
| baz(0, 0, foo(o, value)); |
| } |
| |
| main() { |
| var o = new A(10, 1); |
| for (var i = 0; i < 100; i++) bar(o); |
| bar(new A(100000, 1)); |
| } |