function dummy() { }

(function InlinedFunctionTestContext() {
  var f = function() { }

  function g() {
   var s = "hey";
   dummy();  // Force a deopt point.
   if (f()) return s;
  }

  g();
  g();
  g();
  %OptimizeFunctionOnNextCall(g);
  f = function() { return true; }
  assertEquals("hey", g());
})();

(function InlinedConstructorReturnTestContext() {
  function c() { return 1; }

  var f = function() { return !(new c());  }

  function g() {
   var s = "hey";
   dummy();  // Force a deopt point.
   if (f()) return s;
  }

  g();
  g();
  g();
  %OptimizeFunctionOnNextCall(g);
  f = function() { return true; }
  assertEquals("hey", g());
})();

(function InlinedConstructorNoReturnTestContext() {
  function c() { }

  var f = function() { return !(new c());  }

  function g() {
   var s = "hey";
   dummy();  // Force a deopt point.
   if (f()) return s;
  }

  g();
  g();
  g();
  %OptimizeFunctionOnNextCall(g);
  f = function() { return true; }
  assertEquals("hey", g());
})();
