test116.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. var GiantPrintArray = [];
  6. var reuseObjects = false;
  7. var PolymorphicFuncObjArr = [];
  8. var PolyFuncArr = [];
  9. function GetPolymorphicFunction() {
  10. if(PolyFuncArr.length > 1) {
  11. var myFunc = PolyFuncArr.shift();
  12. PolyFuncArr.push(myFunc);
  13. return myFunc;
  14. }
  15. else {
  16. return PolyFuncArr[0];
  17. }
  18. }
  19. function GetObjectwithPolymorphicFunction() {
  20. if(reuseObjects) {
  21. if(PolymorphicFuncObjArr.length > 1) {
  22. var myFunc = PolymorphicFuncObjArr.shift();
  23. PolymorphicFuncObjArr.push(myFunc);
  24. return myFunc
  25. }
  26. else {
  27. return PolymorphicFuncObjArr[0];
  28. }
  29. }
  30. else {
  31. var obj = {};
  32. obj.polyfunc = GetPolymorphicFunction();
  33. PolymorphicFuncObjArr.push(obj)
  34. return obj
  35. }
  36. };
  37. function InitPolymorphicFunctionArray() {
  38. for(var i = 0; i < arguments.length; i++) {
  39. PolyFuncArr.push(arguments[i])
  40. }
  41. }
  42. ;
  43. function test0() {
  44. var obj0 = {};
  45. var obj1 = {};
  46. var arrObj0 = {};
  47. var func0 = function(argArrObj0, argFunc1, argMath2, argArr3) {
  48. arrObj0.prop0 = argArr3.push(arrObj0.prop0);
  49. GiantPrintArray.push(arrObj0.prop0);
  50. var _y = argArr3.length;
  51. var _x = argArr3[_y];
  52. GiantPrintArray.push(_x);
  53. }
  54. var func1 = function(argMath4) {
  55. (obj0.length = (c++));
  56. }
  57. var func2 = function(argMath5, argArrObj6, argFunc7) {
  58. GiantPrintArray.push('obj1.prop0 = ' + (obj1.prop0 | 0));
  59. }
  60. obj0.method0 = func1;
  61. var f64 = new Float64Array(256);
  62. var FloatArr0 = [];
  63. var c = 1;
  64. var aliasOfobj0 = obj0;;
  65. var aliasOfarrObj0 = arrObj0;;
  66. var aliasOfFloatArr0 = FloatArr0;;
  67. function bar0(argFunc8, argArrObj9, argMath10, argArrObj11) {
  68. arrObj0.prop0 = 1;
  69. }
  70. if((bar0(1, 1, 1, 1) >= func2.call(arrObj0, obj0.method0.call(obj1, 1), 1, 1))) {
  71. }
  72. else {
  73. aliasOfFloatArr0[(2)] = 1;
  74. }
  75. var __loopvar1 = 0;
  76. for(var strvar0 in f64) {
  77. if(strvar0.indexOf('method') != -1) continue;
  78. if(__loopvar1++ > 3) break;
  79. func0.call(aliasOfobj0, 1, 1, 1, aliasOfFloatArr0);
  80. // Snippet switch2
  81. aliasOfarrObj0.prop0 = (function() {
  82. switch(Object.keys(obj0).length) {
  83. case 1:
  84. return 1;
  85. case 2:
  86. return aliasOfarrObj0.length;
  87. case 3:
  88. return 1;
  89. case 4:
  90. case 5:
  91. case "1":
  92. return 1;
  93. case "2":
  94. return 1;
  95. case "3":
  96. return 1;
  97. case "4":
  98. return 1;
  99. }
  100. })();
  101. }
  102. };
  103. // generate profile
  104. test0();
  105. // run JITted code
  106. runningJITtedCode = true;
  107. test0();
  108. WScript.Echo("pass");