// Copyright (c) 2011, 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 instance getters. // Three classes access always the same field. Optimize method foo and inline // getter for classes 'A' and 'B'. Call later via 'C' and cause deoptimization. // VMOptions=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation import "package:expect/expect.dart"; class A { int f; A(this.f) {} int foo() { return f; // <-- inline getter for classes 'A' and 'B'. } } class B extends A { B() : super(2) {} } class C extends A { C() : super(10) {} } class InlineGetterTest { static testMain() { var a = new A(1); var b = new B(); int sum = 0; for (int i = 0; i < 20; i++) { sum += a.foo(); sum += b.foo(); } var c = new C(); sum += c.foo(); // <-- Deoptimizing. Expect.equals(70, sum); } } main() { InlineGetterTest.testMain(); }