// Copyright 2014 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax --block-concurrent-recompilation
// Flags: --no-concurrent-osr

function Ctor() {
  this.a = 1;
}

function get_closure() {
  return function add_field(obj, osr) {
    obj.c = 3;
    var x = 0;
    if (osr) %OptimizeOsr();
    for (var i = 0; i < 10; i++) {
      x = i + 1;
    }
    return x;
  }
}

var f1 = get_closure();
f1(new Ctor(), false);
f1(new Ctor(), false);

%OptimizeFunctionOnNextCall(f1, "concurrent");

// Kick off concurrent recompilation and OSR.
var o = new Ctor();
f1(o, true);
assertOptimized(f1, "no sync");

// Flush the optimizing compiler's queue.
%NotifyContextDisposed();
assertUnoptimized(f1, "no sync");

// Trigger deopt.
o.c = 2.2;

var f2 = get_closure();
f2(new Ctor(), true);
