function foo(p) { if (p) { var x = 42; (function() { x = 43; })(); x++; var realResult = x; (function() { x = 44; })(); var fakeResult = x; return realResult; } var y = 45; (function() { y = 46; })(); y++; var realResult2 = y; (function() { y = 47; })(); var fakeResult2 = y; return realResult2; } noInline(foo); for (var i = 0; i < 10000; ++i) { var result = foo(i & 1); if (result != ((i & 1) ? 44 : 47)) throw "Error: bad result with i = " + i + ": " + result; }