// Copyright (c) 2014, 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=100 --no-background-compilation // Test lazy deoptimization at field guards with deferred loading. import "package:expect/expect.dart"; import "cha_deopt1_lib.dart"; import "cha_deopt1_deferred_lib.dart" deferred as d; var loaded = false; main() { for (var i = 0; i < 2000; i++) bla(); Expect.equals(42, bla()); d.loadLibrary().then((_) { loaded = true; Expect.equals("good horse", bla()); }); } make_t() { try { if (loaded) { return d.make_u(); } else { return new T(); } } catch (e) {} } bla() { var x = new X(); x.test(make_t()); return x.fld.m(); } class X { T fld = new T(); test(T t) { if (t != null) { T tmp = t; fld = tmp; } } }