blob: da6b136c2288a802193ca16c5c5618341930218b [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 GiantPrintArray = [];
var reuseObjects = false;
var PolymorphicFuncObjArr = [];
var PolyFuncArr = [];
function GetPolymorphicFunction() {
if (PolyFuncArr.length > 1) {
var myFunc = PolyFuncArr.shift();
PolyFuncArr.push(myFunc);
return myFunc;
}
else {
return PolyFuncArr[0];
}
}
function GetObjectwithPolymorphicFunction() {
if (reuseObjects) {
if (PolymorphicFuncObjArr.length > 1) {
var myFunc = PolymorphicFuncObjArr.shift();
PolymorphicFuncObjArr.push(myFunc);
return myFunc
}
else {
return PolymorphicFuncObjArr[0];
}
}
else {
var obj = {};
obj.polyfunc = GetPolymorphicFunction();
PolymorphicFuncObjArr.push(obj)
return obj
}
};
function InitPolymorphicFunctionArray(args) {
PolyFuncArr = [];
for (var i = 0; i < args.length; i++) {
PolyFuncArr.push(args[i])
}
}
;
function test0() {
var obj0 = {};
var arrObj0 = {};
var ary = new Array(10);
var FloatArr0 = 1;
var h = 1;
var __loopvar0 = 0;
do {
__loopvar0++;
// Snippet: Array Check hoist for nested loop where bailout happens before 2nd loop.
var v4916 = 0;
arrObj0[5] = "temp";
for (var v4917 = 0 ; v4917 < 3 ; v4917++) {
for (var v4918 = 0 ; v4918 < 3 ; v4918++) {
v4916 += arrObj0[v4918 + v4917];
}
if (shouldBailout) {
Object.defineProperty(arrObj0, "5", { get: function () { GiantPrintArray.push("getter"); return 5; }, configurable: true });
}
for (var v4919 = 0 ; v4919 < 3 ; v4919++) {
v4916 += arrObj0[v4919 + v4917];
}
1
}
GiantPrintArray.push(v4916);
var __loopvar3 = 0;
do {
__loopvar3++;
litObj4 = { prop0: 1, prop1: (ary.shift()), prop2: (ary.pop()), prop3: 1, prop4: 1, prop5: 1, prop6: 1, prop7: 1 };
var uniqobj2 = { prop0: (ary[((shouldBailout ? (ary[1] = 'x') : undefined), 1)], 1, 1, 1), prop1: 1 };
} while ((1) && __loopvar3 < 3)
arrObj0 = Object.prototype;
var id29 = (ary.push((h ^= -4.00753612819473E+18), FloatArr0[(((174 >= 0 ? 174 : 0)) & 0XF)], obj0.prop2))
;
} while ((1) && __loopvar0 < 3)
for (var i = 0; i < GiantPrintArray.length; i++) {
WScript.Echo(GiantPrintArray[i]);
};
};
// generate profile
test0();
// Run Simple JIT
test0();
// run JITted code
runningJITtedCode = true;
test0();
// run code with bailouts enabled
shouldBailout = true;
test0();