
// Copyright (c) 2013, 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=--optimization-counter-threshold=10 --no-use-osr --no-background-compilation

// Test allocation sinking with polymorphic inlining.

import "package:expect/expect.dart";

class A {
  foo(x) => ++x.f;
}

class B {
  foo(x) => --x.f;
}

class C {
  int f = 0;
}

test(obj) {
  var c = new C();
  return obj.foo(c);
}

main() {
  var a = new A();
  var b = new B();
  Expect.equals(1, test(a));
  Expect.equals(-1, test(b));
  for (var i = 0; i < 20; i++) test(a);
  Expect.equals(1, test(a));
  Expect.equals(-1, test(b));
}
