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

var counter = 111;

function gen(w) {  // defeat compiler cache.
 var num = counter++;
  var Z = [ "", "", "", ];
  Z[w] = "%OptimizeOsr(); %PrepareFunctionForOptimization(f" + num + ")";
  var src =
    "function f" + num + "(a,b,c) {" +
    "  var x = 0;" +
    "  var y = 0;" +
    "  var z = 0;" +
    "  while (a > 0) { " + Z[0] + "; x += 19; a--; }" +
    "  while (b > 0) { " + Z[1] + "; y += 23; b--; }" +
    "  while (c > 0) { " + Z[2] + "; z += 29; c--; }" +
    "  return x + y + z;" +
    "} f" + num;
  return eval(src);
}
%PrepareFunctionForOptimization(gen);

function check(x,a,b,c) {
  for (var i = 0; i < 3; i++) {
    var f = gen(i);
    %PrepareFunctionForOptimization(f);
    assertEquals(x, f(a, b, c));
  }
}

check(213, 3,3,3);
check(365, 4,5,6);
check(6948, 99,98,97);
