// 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

import "deferred_load_inval_code_lib.dart" deferred as d;

bool loaded = false;

var x = 0;

bla() {
  if (loaded) {
    // Loading the library should have invalidated the optimized
    // code containing the NSME. Now expect this call to succeed.
    d.foo();
  } else {
    // Do some "busy work" to trigger optimization.
    for (var i = 0; i < 100; i++) {
      x++;
    }
  }
}

warmup() {
  for (int i = 1; i < 1000; i++) {
    bla();
  }
}

main() {
  warmup();
  d.loadLibrary().then((_) {
    loaded = true;
    bla();
  });
}
