| Index: tests/language/deopt_inlined_function_lazy_test.dart
|
| diff --git a/tests/language/deopt_inlined_function_test.dart b/tests/language/deopt_inlined_function_lazy_test.dart
|
| similarity index 50%
|
| copy from tests/language/deopt_inlined_function_test.dart
|
| copy to tests/language/deopt_inlined_function_lazy_test.dart
|
| index d4a5e84b8e8d4274af816ae921ef4b2b653af24d..362631eb2f894fd490dfbbe4ef99fcd72ea89777 100644
|
| --- a/tests/language/deopt_inlined_function_test.dart
|
| +++ b/tests/language/deopt_inlined_function_lazy_test.dart
|
| @@ -1,22 +1,18 @@
|
| // Copyright (c) 2012, 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.
|
| -// Test deoptimization caused by running code that did not collect type
|
| -// feedback before.
|
| +// Test lazy deoptimization from within an inlined function.
|
| +// VMOptions=--deoptimize_alot
|
|
|
| -class A {
|
| - deopt_here() => 1;
|
| +call_native(x) {
|
| + // Wrap in try to avoid inlining.
|
| + // Use a large int so the intrinsifier does not fire.
|
| + try { return x + 12342353257893275483274832; } finally { }
|
| }
|
|
|
| -class B {
|
| - deopt_here() => 2;
|
| -}
|
| -
|
| -var obj = new A();
|
| -
|
| bar(x) {
|
| + if (x < 0) call_native(x);
|
| x = 42;
|
| - obj.deopt_here();
|
| return x;
|
| }
|
|
|
| @@ -29,6 +25,6 @@ main() {
|
| Expect.equals(42, foo(1));
|
| for (var i = 0; i < 2000; i++) foo(7);
|
| Expect.equals(42, foo(2));
|
| - obj = new B();
|
| - Expect.equals(42, foo(3));
|
| + // Call the runtime to trigger lazy deopt with foo/bar on the stack.
|
| + Expect.equals(42, foo(-1));
|
| }
|
|
|