| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- //-------------------------------------------------------------------------------------------------------
- // 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() {
- for(var i = 0; i < arguments.length; i++) {
- PolyFuncArr.push(arguments[i])
- }
- }
- ;
- function getFirst23Elements(value, index, array) {
- return index < 23;
- }
- function sumOfArrayElements(prev, curr, index, array) {
- return prev + curr;
- }
- ;
- function test0() {
- var obj0 = {};
- var obj1 = {};
- var arrObj0 = {};
- var func2 = function() {
- var __loopvar3 = 0;
- for(var strvar0 in i16) {
- if(strvar0.indexOf('method') != -1) continue;
- if(__loopvar3++ > 3) break;
- c = 1;
- obj1 = obj0;
- arrObj0 = obj0;
- }
- e = (ary.unshift(f, c, arrObj0.length, arrObj0.length, c, f, g, f, a, h, __loopvar3, h, this.prop0, arrObj0.prop0, obj1.length));
- }
- obj0.method0 = func2;
- arrObj0.method0 = func2;
- var ary = new Array(10);
- var i16 = new Int16Array(256);
- var a = 1;
- var e = 1;
- var f = 1;
- var g = 1;
- var h = 1;
- obj0.length = 1;
- function bar0() {
- (h /= (((~arrObj0.method0.call(obj1)) * (1 instanceof ((typeof Number == 'function') ? Number : Object)) - (obj1.prop0 &= 1)) + (-(1 & obj0.prop1))));
- }
- function bar1() {
- e <<= bar0.call(obj0);
- bar0.call(obj0);
- }
- var __protoObj2_proto = {};
- __protoObj2_proto.x = Math.pow(bar1(), 1);
- var __protoObj1__proto = Object.create(__protoObj2_proto);;
- var __protoinstanceobj__proto = Object.create(__protoObj1__proto);
- var __varforproto = __protoinstanceobj__proto.x + __protoinstanceobj__proto.x;
- __varforproto += __protoinstanceobj__proto.x + __protoinstanceobj__proto.x;
- __varforproto += __protoinstanceobj__proto.x + __protoinstanceobj__proto.x;
- GiantPrintArray.push(__varforproto);
- if(shouldBailout)
- __protoObj1__proto.__proto__ = { x: "hello" };
- __varforproto += __protoinstanceobj__proto.x + __protoinstanceobj__proto.x;
- GiantPrintArray.push(__varforproto);
- WScript.Echo('sumOfary = ' + ary.filter(getFirst23Elements).reduce(sumOfArrayElements, 0));;
- };
- // generate profile
- test0();
- test0();
- // Run Simple JIT
- test0();
- test0();
- // run JITted code
- runningJITtedCode = true;
- test0();
- // run code with bailouts enabled
- shouldBailout = true;
- test0();
- // Baseline output:
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- //
- //
- // Test output:
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = -Infinity
- // sumOfary = Infinity
- // sumOfary = Infinity
- //
|