Chromium Code Reviews| Index: tests/language/inline_value_context_test.dart |
| diff --git a/tests/language/inline_value_context_test.dart b/tests/language/inline_value_context_test.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..223b9de3679ef72e6b71374f47efe3afd8059cff |
| --- /dev/null |
| +++ b/tests/language/inline_value_context_test.dart |
| @@ -0,0 +1,40 @@ |
| +// 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 inlining of simple function with control flow in a value context. |
| +// Optimize and inline method foo. Call later via 'B' and cause deoptimization. |
| + |
| +class A { |
| + int foo(x) { |
| + if (x > 0) { |
| + return 1; |
| + } else { |
| + return 0; |
| + } |
| + } |
| +} |
| + |
| +class B { |
| + int foo(x) { |
| + if (x > 0) { |
| + return 0; |
| + } else { |
| + return 1; |
| + } |
| + } |
| +} |
| + |
| +class InlineValueContext { |
| + static testMain() { |
| + var o = new A(); |
| + int sum = 0; |
| + for (int i = 0; i < 5000; i++) sum += o.foo(42); |
| + o = new B(); |
| + sum += o.foo(42); // <-- Deoptimizing. |
| + Expect.equals(5000, sum); |
| + } |
| +} |
| + |
| +main() { |
| + InlineValueContext.testMain(); |
|
srdjan
2012/09/26 13:13:33
Since testMain runs only once, the optimized versi
zerny-google
2012/09/27 10:21:46
Indeed. This should really be a test with two nest
|
| +} |