// 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 deoptimization caused by running code that did not collect type // feedback before. // VMOptions=--optimization-counter-threshold=10 --no-use-osr import "package:expect/expect.dart"; testStoreIndexed() { test(a, i, v, flag) { if (flag) { // No type feedback in first pass return a[i] = v; } else { return a[i] = i; } } var a = new List(10); for (var i = 0; i < 20; i++) { var r = test(a, 3, 888, false); Expect.equals(3, r); Expect.equals(3, a[3]); } // Deopt. var r = test(a, 3, 888, true); Expect.equals(888, r); Expect.equals(888, a[3]); } testIncrLocal() { test(a, flag) { if (flag) { a++; return a; } else { return -1; } } for (var i = 0; i < 20; i++) { var r = test(10, false); Expect.equals(-1, r); } // Deopt. var r = test(10, true); Expect.equals(11, r); } main() { for (var i = 0; i < 20; i++) {} testStoreIndexed(); testIncrLocal(); }