blob: e00e2cb3119180727537857da51d758dfd5fd2d6 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
var shouldBailout = false;
var failed = 0;
var valueCalls = 0;
function FAILED(x) {
WScript.Echo("FAILED #", x);
failed++;
}
function test0() {
var func2 = function () {
return (g <= h);
}
var g = 1;
var h = 1;
obj.x = 1;
if (shouldBailout) { h = { valueOf: function () { valueCalls++; return 3; } } }
if ((func2(g))) {
} else {
FAILED(1);
}
return obj.x;
};
function test1() {
var func2 = function () {
return (g <= h);
}
var g = 1;
var h = 1;
obj.x = 1;
if (shouldBailout) { h = { valueOf: function () { valueCalls++; return 3; } } }
if ((!func2(g))) {
FAILED(2);
}
return obj.x;
};
function test2() {
var func2 = function () {
return (g > h);
}
var g = 0;
var h = 1;
obj.x = 1;
if (shouldBailout) { h = { valueOf: function () { valueCalls++; return 3; } } }
if ((func2(g))) {
FAILED(3);
}
return obj.x;
};
function test3() {
var func2 = function () {
return (g == h);
}
var g = 0;
var h = 1;
obj.x = 1;
if (shouldBailout) { h = { valueOf: function () { valueCalls++; return 3; } } }
if ((func2(g))) {
FAILED(4);
}
return obj.x;
};
function test4() {
var func2 = function () {
return (g != h);
}
var g = 3;
var h = 3;
obj.x = 1;
if (shouldBailout) { h = { valueOf: function () { valueCalls++; return 3; } } }
if ((func2(g))) {
FAILED(5);
}
return obj.x;
};
var obj = new Object();
obj.x = 1;
// generate profile
test0();
test1();
test2();
test3();
test4();
// run JITted code
test0();
test1();
test2();
test3();
test4();
// run code with bailouts enabled
shouldBailout = true;
test0();
test1();
test2();
test3();
test4();
if (valueCalls != 5)
{
FAILED(6);
}
if (failed == 0) {
WScript.Echo("Passed");
}