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

function C() { }

function f(b) {
  var o = new C();
  // Create out-of-object properties only on one branch so that escape
  // analysis does not analyze the property array away.
  if (b) o.t = 1.1;
  %_DeoptimizeNow();
  return o.t;
}
%PrepareFunctionForOptimization(f);

// Finish slack tracking for C.
for (var i = 0; i < 1000; i++) new C();

f(true);
f(true);
f(false);

%OptimizeFunctionOnNextCall(f);

assertEquals(1.1, f(true));