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

'use strict';

function f(abort, n, a, b) {
  if (abort) return;
  var x = a ? true : "" + a;
  if (!a) {
    var dead = n + 1 + 1;
    if(!b) {
      x = dead;
    }
    if (x) {
      x = false;
    }
    if (b) {
      x = false;
    }
  }
  return x + 1;
}
f(false, 5); f(false, 6); f(false, 7); f(false, 8);

function g(abort, a, b) {
  return f(abort, "abc", a, b);
}

g(true); g(true); g(true); g(true);

%OptimizeFunctionOnNextCall(g);
g(false);
