text: //-------------------------------------------------------------------------------------------------------
  // 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
  //
  