redefer-recursive-inlinees.js 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013
  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. // Test that recursive inlinees are properly tracked by redeferral. Run with -recyclerconcurrentstress to trigger frequent redeferral.
  6. var shouldBailout = false;
  7. var runningJITtedCode = false;
  8. var reuseObjects = false;
  9. var randomGenerator = function(inputseed) {
  10. var seed = inputseed;
  11. return function() {
  12. // Robert Jenkins' 32 bit integer hash function.
  13. seed = ((seed + 0x7ed55d16) + (seed << 12)) & 0xffffffff;
  14. seed = ((seed ^ 0xc761c23c) ^ (seed >>> 19)) & 0xffffffff;
  15. seed = ((seed + 0x165667b1) + (seed << 5)) & 0xffffffff;
  16. seed = ((seed + 0xd3a2646c) ^ (seed << 9)) & 0xffffffff;
  17. seed = ((seed + 0xfd7046c5) + (seed << 3)) & 0xffffffff;
  18. seed = ((seed ^ 0xb55a4f09) ^ (seed >>> 16)) & 0xffffffff;
  19. return (seed & 0xfffffff) / 0x10000000;
  20. };
  21. };;
  22. var intArrayCreatorCount = 0;
  23. function GenerateArray(seed, arrayType, arraySize, missingValuePercent, typeOfDeclaration) {
  24. Math.random = randomGenerator(seed);
  25. var result, codeToExecute, thisArrayName, maxMissingValues = Math.floor(arraySize * missingValuePercent), noOfMissingValuesAdded = 0;
  26. var contents = [];
  27. var isVarArray = arrayType == 'var';
  28. function IsMissingValue(allowedMissingValues) {
  29. return Math.floor(Math.random() * 100) < allowedMissingValues
  30. }
  31. thisArrayName = 'tempIntArr' + intArrayCreatorCount++;
  32. for (var arrayIndex = 0; arrayIndex < arraySize; arrayIndex++) {
  33. if (isVarArray && arrayIndex != 0) {
  34. arrayType = Math.floor(Math.random() * 100) < 50 ? 'int' : 'float';
  35. }
  36. if(noOfMissingValuesAdded < maxMissingValues && IsMissingValue(missingValuePercent)) {
  37. noOfMissingValuesAdded++;
  38. contents.push('');
  39. } else {
  40. var randomValueGenerated;
  41. if (arrayType == 'int') {
  42. randomValueGenerated = Math.floor(Math.random() * seed);
  43. } else if (arrayType == 'float') {
  44. randomValueGenerated = Math.random() * seed;
  45. } else if (arrayType == 'var') {
  46. randomValueGenerated = '\'' + (Math.random() * seed).toString(36) + '\'';
  47. }
  48. contents.push(randomValueGenerated);
  49. }
  50. }
  51. if(contents.length == 1 && typeOfDeclaration == 'constructor') {
  52. contents.push(Math.floor(Math.random() * seed));
  53. }
  54. if(typeOfDeclaration == 'literal') {
  55. codeToExecute = 'var ' + thisArrayName + ' = [' + contents.join() + '];';
  56. } else {
  57. codeToExecute = 'var ' + thisArrayName + ' = new Array(' + contents.join() + ');';
  58. }
  59. codeToExecute += 'result = ' + thisArrayName + ';';
  60. eval(codeToExecute);
  61. return result;
  62. }
  63. ;
  64. function getRoundValue(n) {
  65. if(n % 1 == 0) // int number
  66. return n % 2147483647;
  67. else // float number
  68. return n.toFixed(8);
  69. return n;
  70. };
  71. var print = WScript.Echo;
  72. WScript.Echo = function(n) { if(!n) print(n); else print(formatOutput(n.toString())); };
  73. function formatOutput(n) {{
  74. return n.replace(/[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/g, function(match) {{return getRoundValue(parseFloat(match));}} );
  75. }};
  76. function sumOfArrayElements(prev, curr, index, array) {
  77. return (typeof prev == "number" && typeof curr == "number") ? curr + prev : 0
  78. }
  79. ;
  80. var __counter = 0;
  81. function test0(){
  82. var loopInvariant = shouldBailout ? 5 : 12;
  83. var GiantPrintArray = [];
  84. __counter++;;
  85. function makeArrayLength(x) { if(x < 1 || x > 4294967295 || x != x || isNaN(x) || !isFinite(x)) return 100; else return Math.floor(x) & 0xffff; };;
  86. function leaf() { return 100; };
  87. var obj0 = {};
  88. var protoObj0 = {};
  89. var obj1 = {};
  90. var protoObj1 = {};
  91. var arrObj0 = {};
  92. var litObj0 = {prop1: 3.14159265358979};
  93. var litObj1 = {prop0: 0, prop1: 1};
  94. var arrObj0 = {};
  95. var func0 = function(argMath0,argMath1 = (-148 >> (((! this.prop0) | 3) << ary[(((Object.prototype.prop1 >= 0 ? Object.prototype.prop1 : 0)) & 0XF)])),argMath2 = (((new RegExp('xyz')) instanceof ((typeof Number == 'function' ) ? Number : Object)), ary[(((Object.prototype.prop1 >= 0 ? Object.prototype.prop1 : 0)) & 0XF)], (ary.unshift(ary[(((leaf() >= 0 ? leaf() : 0)) & 0XF)], argMath1, (leaf() * (argMath0 + Math.round(-1.62608014185702E+18))), leaf(), argMath1))),argMath3){
  96. if(shouldBailout){
  97. return 'somestring'
  98. }
  99. litObj1.prop0=((argMath0 != obj0.prop1)&&(this.prop1 >= argMath2));
  100. return (~ 1815727712.1);
  101. };
  102. var func1 = function(){
  103. var __loopvar1 = loopInvariant + 8,__loopSecondaryVar1_0 = loopInvariant,__loopSecondaryVar1_1 = loopInvariant - 3;
  104. LABEL0:
  105. for (var _strvar0 in f32) {
  106. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  107. __loopvar1 -= 3;
  108. __loopSecondaryVar1_0 += 3;
  109. __loopSecondaryVar1_1++;
  110. f32[_strvar0] = -5.39327267986099E+18;
  111. var func5 = function(){
  112. var __loopvar3 = loopInvariant - 6,__loopSecondaryVar3_0 = loopInvariant - 3;
  113. LABEL0:
  114. LABEL1:
  115. do {
  116. if (__loopvar3 > loopInvariant) break;
  117. if (__loopSecondaryVar3_0 === loopInvariant) break;
  118. __loopvar3 += 2;
  119. __loopSecondaryVar3_0++;
  120. } while((('caller' & (func0(obj1,(! b),-72,leaf) * func0.call(Object.prototype , litObj0, (_strvar0 -= 1738924735.1), uic8[(_strvar0) & 255], leaf) + 'caller'))))
  121. return func0(litObj1,'caller','caller',leaf);
  122. };
  123. func5();
  124. }
  125. function func6 (){
  126. GiantPrintArray.push('obj0.prop2 = ' + (obj0.prop2|0));
  127. if(shouldBailout){
  128. return 'somestring'
  129. }
  130. var func7 = function(argMath4){
  131. return -738581528;
  132. };
  133. return func7.call(obj0 , /(?!.(\b\s)+.\b\W(?=\b.))/gi);
  134. }
  135. return uic8[(obj1.prop2) & 255];
  136. };
  137. var func2 = function(...argArr5){
  138. return arguments[((((argArr5.reverse()) >= 0 ? (argArr5.reverse()) : 0)) & 0XF)];
  139. };
  140. var func3 = function(){
  141. var fPolyProp = function (o) {
  142. if (o!==undefined) {
  143. WScript.Echo(o.prop0 + ' ' + o.prop1 + ' ' + o.prop2);
  144. }
  145. };
  146. fPolyProp(litObj0);
  147. fPolyProp(litObj1);
  148. obj0 = obj0;
  149. protoObj1.length= makeArrayLength((- ((protoObj1.prop0 > arrObj0.prop1)||(obj1.prop2 < protoObj0.prop0))));
  150. return obj1.prop1;
  151. };
  152. var func4 = function(){
  153. obj1.prop0=arrObj0[(12)];
  154. eval("'use strict';");
  155. return ui16.length;
  156. };
  157. obj0.method0 = func0;
  158. obj0.method1 = func2;
  159. obj1.method0 = func1;
  160. obj1.method1 = func1;
  161. arrObj0.method0 = func4;
  162. arrObj0.method1 = func1;
  163. Object.prototype.method0 = arrObj0.method0;
  164. Object.prototype.method1 = func4;
  165. var ary = new Array(10);
  166. var i8 = new Int8Array(256);
  167. var i16 = new Int16Array(256);
  168. var i32 = new Int32Array(256);
  169. var ui8 = new Uint8Array(256);
  170. var ui16 = new Uint16Array(256);
  171. var ui32 = new Uint32Array(256);
  172. var f32 = new Float32Array(256);
  173. var f64 = new Float64Array(256);
  174. var uic8 = new Uint8ClampedArray(256);
  175. var IntArr0 = new Array(65537,-252,-7534443540062868480,-139912883,183,4294967295,-8,-3534281615684059136,-2147483646);
  176. var IntArr1 = new Array();
  177. var FloatArr0 = [-1.65663272360615E+18,65537,-9.18570115267099E+18];
  178. var VarArr0 = [protoObj1,8.1039954840962E+18,-2859983991833802752,-162068960,186382691,489218302.1,-2147483649,-287597399,6.50325114561036E+18,-975199350.9,0];
  179. var a = 254;
  180. var b = -265919721;
  181. arrObj0[0] = -154;
  182. arrObj0[1] = 74;
  183. arrObj0[2] = 2;
  184. arrObj0[3] = 493847347.1;
  185. arrObj0[4] = -1220404880;
  186. arrObj0[5] = -1.79800004203085E+17;
  187. arrObj0[6] = -1116565737;
  188. arrObj0[7] = -9.11168563055195E+18;
  189. arrObj0[8] = -1325194954.9;
  190. arrObj0[9] = 1950420840;
  191. arrObj0[10] = -127;
  192. arrObj0[11] = 21;
  193. arrObj0[12] = 2147483650;
  194. arrObj0[13] = 65537;
  195. arrObj0[14] = -6.30345011183866E+18;
  196. arrObj0[arrObj0.length-1] = 138;
  197. arrObj0.length = makeArrayLength(2);
  198. ary[0] = -680817128;
  199. ary[1] = -527813232;
  200. ary[2] = -832088952;
  201. ary[3] = 99;
  202. ary[4] = 980156429.1;
  203. ary[5] = 0;
  204. ary[6] = -1920459204;
  205. ary[7] = -1073741824;
  206. ary[8] = 191;
  207. ary[9] = -93163429;
  208. ary[10] = -7.55165157285184E+18;
  209. ary[11] = -2147483646;
  210. ary[12] = -2147483648;
  211. ary[13] = 210;
  212. ary[14] = 2147483647;
  213. ary[ary.length-1] = 5.65030043299318E+18;
  214. ary.length = makeArrayLength(-997651294);
  215. Object.prototype.prop0 = -2147483646;
  216. Object.prototype.prop1 = -1435611367.9;
  217. Object.prototype.prop2 = 2147483650;
  218. Object.prototype.length = makeArrayLength(1167596854);
  219. var protoObj0 = Object.create(obj0);
  220. var protoObj1 = Object.create(obj1);
  221. var aliasOfi8 = i8;;
  222. this.prop0 = -2125793252.9;
  223. this.prop1 = 0;
  224. obj0.prop0 = 9.18874020750804E+18;
  225. obj0.prop1 = -1263508179.9;
  226. obj0.prop2 = -984620769.9;
  227. obj0.length = makeArrayLength(-1.33525439363332E+18);
  228. protoObj0.prop0 = -498747962;
  229. protoObj0.prop1 = 4294967295;
  230. protoObj0.prop2 = 745478336;
  231. protoObj0.length = makeArrayLength(-5330384.9);
  232. obj1.prop0 = -1306917901.9;
  233. obj1.prop1 = -1051552568;
  234. obj1.prop2 = -1062743416;
  235. obj1.length = makeArrayLength(219466416.1);
  236. protoObj1.prop0 = 596169680;
  237. protoObj1.prop1 = 251;
  238. protoObj1.prop2 = 957019650.1;
  239. protoObj1.length = makeArrayLength(3);
  240. arrObj0.prop0 = -93;
  241. arrObj0.prop1 = 92507008.1;
  242. arrObj0.prop2 = 65537;
  243. arrObj0.length = makeArrayLength(1250292512.1);
  244. Object.prototype.prop0 = 2043613941;
  245. Object.prototype.prop1 = -973764540;
  246. Object.prototype.prop2 = -7.58318524387149E+18;
  247. Object.prototype.length = makeArrayLength(5.44936228952327E+18);
  248. IntArr1[3] = -367883042;
  249. IntArr1[0] = -1336332573;
  250. IntArr1[IntArr1.length] = -637078889;
  251. IntArr1[2] = 5.63258304547574E+18;
  252. FloatArr0[5] = -119993699;
  253. FloatArr0[3] = -8.92058227174718E+16;
  254. FloatArr0[FloatArr0.length] = 65536;
  255. FloatArr0[7] = -1915497990.9;
  256. FloatArr0[4] = 979829498;
  257. var proxyHandler = {};
  258. proxyHandler['deleteProperty'] = function(target, property) {
  259. WScript.Echo('DeleteProperty trap called');
  260. return Reflect.deleteProperty(target, property);
  261. }
  262. proxyHandler['definePropery'] = function(target, property, descriptor) {
  263. WScript.Echo('DefinePropery trap called');
  264. Reflect.defineProperty(target, property, descriptor);
  265. }
  266. proxyHandler['apply'] = function(target, thisArg, argumentsList) {
  267. WScript.Echo('Apply trap called');
  268. return Reflect.apply(target, thisArg, argumentsList);
  269. }
  270. proxyHandler['construct'] = function(target, argumentsList) {
  271. WScript.Echo('Construct trap called');
  272. return Reflect.construct(target, argumentsList);
  273. }
  274. ;
  275. Object.prototype.prop0 = 'caller';
  276. var uniqobj0 = [obj1, protoObj1];
  277. var uniqobj1 = uniqobj0[__counter%uniqobj0.length];
  278. uniqobj1.method1();
  279. var func8 = function(argMath6){
  280. var __loopvar1 = loopInvariant - 6,__loopSecondaryVar1_0 = loopInvariant;
  281. LABEL0:
  282. while((argMath6)) {
  283. __loopvar1 += 2;
  284. __loopSecondaryVar1_0++;
  285. if (__loopvar1 == loopInvariant + 2) break;
  286. var uniqobj2 = [protoObj0, obj0, obj0];
  287. var uniqobj3 = uniqobj2[__counter%uniqobj2.length];
  288. uniqobj3.method0(obj0,protoObj0.prop0,Math.cos(this.prop0),leaf);
  289. function func9 () {
  290. }
  291. var uniqobj4 = new func9();
  292. }
  293. return arrObj0.method1.call(litObj0 );
  294. };
  295. var __loopvar0 = loopInvariant;
  296. LABEL0:
  297. for(;;) {
  298. __loopvar0--;
  299. if (__loopvar0 < loopInvariant - 4) break;
  300. //Snippet:getter9.ecs flag getter setter to data property
  301. //<no-strict> : This tag indicates that this snippet should not be inserted in a strict mode test case. This is not a comment for Exprgen engine.
  302. function __getterfoo9(obj1) {
  303. GiantPrintArray.push(obj1.__getterprop9);
  304. }
  305. // CSE when used within while-loop
  306. var v0 = 0; // TODO: check with louis if it matters to put this stmt after next stmt.
  307. var v1='caller';
  308. while(v0 < 5) {
  309. v1='caller';
  310. v1-=v0;
  311. v0++;
  312. }
  313. protoObj0.prop0='caller'+v1;
  314. var __getterCtor9 = function () { }
  315. var __getterproto9 = {};
  316. __getterCtor9.prototype = __getterproto9;
  317. var inst = new __getterCtor9();
  318. var __getterdesc9 = { get: function () { GiantPrintArray.push("getter");
  319. return _Value }, set: function (x)
  320. { _Value = x; },configurable:true }
  321. Object.defineProperty(__getterproto9, "__getterprop9", __getterdesc9);
  322. __getterproto9.__getterprop9 = ((Object.prototype.length * (typeof(Object.prototype.prop0) == 'string') + ui8[(__loopvar0 - 1) & 255]) % i8[(loopInvariant) & 255]);
  323. try {
  324. var __loopvar3 = loopInvariant - 3;
  325. for (var _strvar0 of ui8) {
  326. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  327. if (__loopvar3 >= loopInvariant + -1) break;
  328. __loopvar3++;
  329. //Snippet 1: basic inlining test
  330. obj1.prop0 = (function(x,y,z) {
  331. var uniqobj5 = [arrObj0, protoObj1, obj1, protoObj1];
  332. var uniqobj6 = uniqobj5[__counter%uniqobj5.length];
  333. uniqobj6.method0();
  334. GiantPrintArray.push("Snippet 1: ",x,y,z);
  335. return obj1.method1.call(arrObj0 );
  336. })((ui32[(140) & 255] ? ('caller' ? 'caller' : (Math.sin(_strvar0) * ((typeof(Object.prototype.prop0) == 'string') + (typeof(obj1.prop0) == 'object') ))) : ui8[(-2123989455) & 255]),(typeof(obj1.prop0) == 'undefined') ,(({} instanceof ((typeof Array == 'function' ) ? Array : Object)) * obj1.prop2 + ((b < _strvar0)&&(_strvar0 >= protoObj1.prop1))));
  337. function func10 (){
  338. 'use strict';;
  339. return obj0.method1.call(protoObj0 , FloatArr0);
  340. }
  341. }
  342. obj0.method1.call(obj0 , ary);
  343. var __loopvar3 = loopInvariant;
  344. for (var _strvar0 in f64) {
  345. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  346. if (__loopvar3 >= loopInvariant + 2) break;
  347. __loopvar3++;
  348. }
  349. var __loopvar3 = loopInvariant,__loopSecondaryVar3_0 = loopInvariant;
  350. LABEL1:
  351. for (var _strvar0 in i8) {
  352. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  353. __loopSecondaryVar3_0 += 4;
  354. __loopvar3--;
  355. i8[_strvar0] = (Infinity * 2123015056);
  356. (function(argMath7,argMath8 = ('prop0' in protoObj0),...argArr9){
  357. __loopSecondaryVar3_0 += 3;;
  358. func3();
  359. })(IntArr0,protoObj1.prop1,FloatArr0);
  360. }
  361. } catch(ex) {
  362. WScript.Echo(ex.message);
  363. } finally {
  364. protoObj0.method0=((typeof(protoObj1.prop2) != 'string') ? ((obj1.prop0 = obj0.prop0) ? (typeof(obj1.prop1) == 'string') : (this.prop0 *= i8[(loopInvariant) & 255])) : 'caller');
  365. }
  366. __getterfoo9(inst);
  367. var func11 = function(argMath10,argMath11 = 'caller'){
  368. return (Object.prototype.length !== arrObj0.prop1);
  369. };
  370. if (shouldBailout)
  371. Object.defineProperty(__getterproto9,
  372. "__getterprop9",{value:10,configurable:true });
  373. __getterfoo9(inst);
  374. var __loopvar1 = loopInvariant - 6;
  375. for(; protoObj1.prop0 < ((a-- )); protoObj1.prop0++) {
  376. __loopvar1 += 2;
  377. if (__loopvar1 == loopInvariant + 2) break;
  378. var fPolyProp = function (o) {
  379. if (o!==undefined) {
  380. WScript.Echo(o.prop0 + ' ' + o.prop1 + ' ' + o.prop2);
  381. }
  382. };
  383. fPolyProp(litObj0);
  384. fPolyProp(litObj1);
  385. var __loopvar2 = loopInvariant,__loopSecondaryVar2_0 = loopInvariant,__loopSecondaryVar2_1 = loopInvariant - 6;
  386. for(;;) {
  387. __loopSecondaryVar2_0 -= 4;
  388. __loopSecondaryVar2_1 += 2;
  389. if (__loopvar2 === loopInvariant + 12) break;
  390. __loopvar2 += 4;
  391. function func12 () {
  392. }
  393. obj6 = new func12();
  394. var __loopvar3 = loopInvariant + 3,__loopSecondaryVar3_0 = loopInvariant;
  395. LABEL1:
  396. do {
  397. __loopSecondaryVar3_0 += 2;
  398. if (__loopvar3 < loopInvariant) break;
  399. __loopvar3--;
  400. var __loopvar4 = loopInvariant - 10;
  401. LABEL2:
  402. while(((Object.prototype.prop1 &= (((b > protoObj1.length)&&(obj0.prop1 === obj0.prop1)) instanceof ((typeof Boolean == 'function' ) ? Boolean : Object))))) {
  403. if (__loopvar4 >= loopInvariant + -3) break;
  404. __loopvar4 += 3;
  405. }
  406. var __loopSecondaryVar4_0 = loopInvariant - 6;
  407. for(var __loopvar4 = loopInvariant;;) {
  408. if (__loopvar4 >= loopInvariant + 8) break;
  409. __loopvar4 += 4;
  410. __loopSecondaryVar4_0 += 2;
  411. obj7 = new func12();
  412. var __loopvar5 = loopInvariant;
  413. LABEL2:
  414. for (var _strvar0 of i16) {
  415. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  416. if (__loopvar5 >= loopInvariant + 2) break;
  417. __loopvar5++;
  418. var uniqobj7 = [protoObj1, arrObj0];
  419. var uniqobj8 = uniqobj7[__counter%uniqobj7.length];
  420. uniqobj8.method1();
  421. }
  422. var uniqobj9 = [protoObj1, obj1, obj1, obj1, obj1];
  423. uniqobj9[__counter%uniqobj9.length].method0();
  424. }
  425. } while((obj1.method1()))
  426. a =(f64[((a-- )) & 255] != 87544291);
  427. }
  428. protoObj1.length= makeArrayLength(-26);
  429. // Snippet: Stack allocation of closure : bug# 607452 - pointers of loop body frame is not updated while boxing and hence it refers old FD
  430. function v2() {
  431. // boxing happens here
  432. function v3() {
  433. try {
  434. throw 'ex';
  435. obj1 = obj1;
  436. } catch (v4) { GiantPrintArray.push(v4); }
  437. }
  438. var __loopvar1000 = loopInvariant;
  439. LABEL0:
  440. LABEL1:
  441. for (var _strvar0 in IntArr0) {
  442. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  443. if (__loopvar1000 <= loopInvariant - 8) break;
  444. __loopvar1000 -= 4;
  445. v3();
  446. var v5 = ui32[(__loopvar1 + 1) & 255];
  447. // bailout here and we go back to interpreter.
  448. // bug was that value of v5 was not updated while in loopbody frame and boxing of v3() happened
  449. if(shouldBailout) {
  450. IntArr1 + 1; // implicit call on valueOf
  451. }
  452. var __loopvar3 = loopInvariant,__loopSecondaryVar3_0 = loopInvariant,__loopSecondaryVar3_1 = loopInvariant - 13;
  453. LABEL2:
  454. LABEL3:
  455. do {
  456. __loopSecondaryVar3_0 += 2;
  457. __loopvar3 += 4;
  458. __loopSecondaryVar3_1 += 4;
  459. var func14 = function(argMath12,...argArr13){
  460. // ABCE#5 Snippet - Reset primary induction variable based on secondary induction variable
  461. // Re-assign primary/secondary IV at the beginning/end of the loop
  462. function v6(v7) {
  463. var v8 = arrObj0.length;
  464. //addVar<number>:index1
  465. var v9 = 100;
  466. //addVar<number>:index2
  467. // Primary and secondary variables are reset sometimes in the loop
  468. var __loopvar1001 = loopInvariant;
  469. for (var _strvar0 in VarArr0) {
  470. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  471. __loopvar1001 -= 2;
  472. if (__loopvar1001 < loopInvariant - 8) break;
  473. argMath12 ^=(func1.call(obj1 ) ? (arrObj0.method1.call(Object.prototype ) >= ((new Error('abc')) instanceof ((typeof Array == 'function' ) ? Array : Object))) : func8.call(obj0 , arrObj0));
  474. v7[v8] = ((protoObj0.prop1 *= 309867058) * ((typeof(Object.prototype.prop0) == 'undefined') - (protoObj1.length && parseInt("0x581DC6C1"))));
  475. ary0 = arguments;
  476. // This will make either v8 or v9 as primary induction variable
  477. if(v8 <= 1) break;
  478. v9 = v8
  479. GiantPrintArray.push(v7[ v9]);
  480. }
  481. }
  482. v6(shouldBailout? ary : ary);
  483. var __loopvar5 = loopInvariant,__loopSecondaryVar5_0 = loopInvariant,__loopSecondaryVar5_1 = loopInvariant;
  484. LABEL0:
  485. LABEL1:
  486. for (var _strvar1 in argArr13) {
  487. if(typeof _strvar1 === 'string' && _strvar1.indexOf('method') != -1) continue;
  488. __loopvar5++;
  489. __loopSecondaryVar5_1--;
  490. if (__loopvar5 > loopInvariant + 4) break;
  491. if (__loopSecondaryVar5_0 >= loopInvariant + 8) break;
  492. __loopSecondaryVar5_0 += 4;
  493. argArr13[_strvar1] = parseInt("1", 4);
  494. obj1.length= makeArrayLength(ary[(__loopSecondaryVar5_0 + 2)]);
  495. litObj0.prop0=func1;
  496. }
  497. var __loopvar5 = loopInvariant;
  498. while((func8.call(litObj1 , arrObj0))) {
  499. if (__loopvar5 == loopInvariant + 12) break;
  500. __loopvar5 += 4;
  501. var uniqobj10 = [protoObj1, obj1, obj1, obj1, obj1];
  502. uniqobj10[__counter%uniqobj10.length].method0();
  503. var __loopvar6 = loopInvariant,__loopSecondaryVar6_0 = loopInvariant - 12,__loopSecondaryVar6_1 = loopInvariant - 11;
  504. LABEL0:
  505. LABEL1:
  506. for (var _strvar0 in i16) {
  507. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  508. __loopSecondaryVar6_0 += 4;
  509. __loopSecondaryVar6_1 += 3;
  510. __loopvar6 += 3;
  511. i16[_strvar0] = ((Object.prototype.length > obj0.prop0)&&(__loopvar1 !== _strvar0));
  512. var uniqobj11 = [protoObj0, obj0, obj0, obj0, obj0];
  513. var uniqobj12 = uniqobj11[__counter%uniqobj11.length];
  514. uniqobj12.method1(IntArr0);
  515. }
  516. obj1.method0.call(protoObj1 );
  517. protoObj1.prop2 &=func3.call(arrObj0 );
  518. }
  519. return ui32[(__loopvar1 + 1) & 255];
  520. };
  521. var __loopvar4 = loopInvariant,__loopSecondaryVar4_0 = loopInvariant;
  522. LABEL4:
  523. while((((new Error('abc')) instanceof ((typeof Array == 'function' ) ? Array : Object)))) {
  524. if (__loopvar4 == loopInvariant - 12) break;
  525. __loopvar4 -= 4;
  526. __loopSecondaryVar4_0 += 3;
  527. function func15 (argMath14){
  528. 'use strict';;
  529. var __loopvar6 = loopInvariant,__loopSecondaryVar6_0 = loopInvariant,__loopSecondaryVar6_1 = loopInvariant - 10;
  530. while(((((new RegExp('xyz')) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object)) | protoObj1.length))) {
  531. __loopvar6++;
  532. __loopSecondaryVar6_0 += 2;
  533. __loopSecondaryVar6_1 += 3;
  534. if (__loopvar6 >= loopInvariant + 3) break;
  535. // apply6.ecs
  536. var v10 = {
  537. v11: function() {
  538. return function bar() {
  539. var func16 = function(){
  540. var func17 = function(argMath15 = obj1.method0.call(obj0 ),argMath16){
  541. obj1.prop0 *=obj1.method0.call(obj0 );
  542. GiantPrintArray.push('obj0.prop2 = ' + (obj0.prop2|0));
  543. (Object.defineProperty(litObj0, 'prop1', {writable: true, enumerable: false, configurable: true }));
  544. litObj0.prop1 = argMath15;
  545. obj0.prop1 >>=(protoObj0.prop0 %= Math.ceil((argMath15 + 'caller')));
  546. return argMath14;
  547. };
  548. var uniqobj13 = [protoObj1, obj1];
  549. uniqobj13[__counter%uniqobj13.length].method0();
  550. if(((typeof('caller') == 'string') & Math.fround((obj0.prop2 != (typeof(protoObj0.prop0) == 'undefined') )))) {
  551. }
  552. else {
  553. protoObj0.prop1 |=(((protoObj1.prop0 == argMath14) !== (argMath14 == protoObj1.prop1)) ? ((++ argMath14) & 'caller') : IntArr1[(__loopSecondaryVar3_0 + 1)]);
  554. GiantPrintArray.push('Object.prototype.prop0 = ' + (Object.prototype.prop0|0));
  555. }
  556. return 691061221.1;
  557. };
  558. this.method0.apply(protoObj0, arguments);
  559. }
  560. }
  561. };
  562. var v12 = Object.prototype;
  563. v12.prototype = {
  564. method0 : function(){
  565. var uniqobj14 = [obj0, arrObj0, arrObj0];
  566. var uniqobj15 = uniqobj14[__counter%uniqobj14.length];
  567. uniqobj15.method1(IntArr1);
  568. return ((typeof(argMath14) == 'string') * (protoObj0.method1.call(litObj1 , FloatArr0) * (argMath14 + ((argMath14 > Object.prototype.prop1)||(argMath14 >= a)))) - func0.call(arrObj0 , litObj1, ((-1362173613.9 === 65536) * (arrObj0[(17)] - (+ argMath14))), arrObj0[(__loopSecondaryVar6_1 + 1)], leaf));
  569. },
  570. method1 : function(){
  571. return ((argMath14 != argMath14)&&(obj0.prop0 > __loopvar1));
  572. },
  573. v13 : function() {
  574. return (typeof(argMath14) == 'boolean') ;
  575. },
  576. v14 : function() {
  577. protoObj1.method0.call(arrObj0 );
  578. return ui16[(99) & 255];
  579. },
  580. v15 : function() {
  581. return (typeof(IntArr0[(((((new protoObj0.method1(ary)).prop2 != (argMath14 * (-52 + -109497452))) >= 0 ? ((new protoObj0.method1(ary)).prop2 != (argMath14 * (-52 + -109497452))) : 0)) & 0XF)]) != 'string') ;
  582. },
  583. v16 : function() {
  584. var func18 = function(argMath17,argMath18,argMath19,argMath20){
  585. return 21;
  586. };
  587. return (argMath14 == VarArr0[(__loopSecondaryVar3_0 + 1)]);
  588. }
  589. };
  590. v12.v13 = v10.v11();
  591. v12.v13.prototype = {
  592. v17 : ((((arrObj0.prop1 >>= b), (-210 + 20), (__loopvar0 * (674566727 + 214)), (FloatArr0.push('caller', -1436252807.9, VarArr0[(((undefined >= 0 ? undefined : 0)) & 0XF)], ('-14' in FloatArr0), Math.cos(argMath14), (protoObj0.prop1 = obj0.prop2), (obj1.prop0 >>> argMath14), 'caller', 'caller', (typeof(protoObj0.prop1) != 'string') , (argMath14-- ), (arrObj0.prop0 >>>= argMath14), (4294967297 != obj0.prop2), (true instanceof ((typeof Number == 'function' ) ? Number : Object)), ui16[(__loopvar6 + 1) & 255]))
  593. , 'caller', (1 < 9.12200043913691E+18)) * (true instanceof ((typeof Function == 'function' ) ? Function : Object)) + ((130920751 / (-2 == 0 ? 1 : -2)) - (obj1.prop0 %= -362067695.9))) ? argMath14 : ([1, 2, 3] instanceof ((typeof Error == 'function' ) ? Error : Object))),
  594. method0 : function(v17) {
  595. this.v17 = v17;
  596. this.method0 = function(){
  597. var __loopvar8 = loopInvariant + 12,__loopSecondaryVar8_0 = loopInvariant,__loopSecondaryVar8_1 = loopInvariant - 3;
  598. LABEL0:
  599. LABEL1:
  600. do {
  601. __loopSecondaryVar8_1++;
  602. if (__loopvar8 === loopInvariant) break;
  603. if (__loopSecondaryVar8_1 == loopInvariant + 1) break;
  604. __loopvar8 -= 4;
  605. __loopSecondaryVar8_0 += 2;
  606. var uniqobj16 = [arrObj0];
  607. uniqobj16[__counter%uniqobj16.length].method1();
  608. } while(((++ protoObj0.length)))
  609. return func2.call(protoObj1 , IntArr1);
  610. }
  611. this.method1 = function(){
  612. return parseInt("0x30F4B79153D93800");
  613. }
  614. }
  615. };
  616. obj0.method0.call(Object.prototype , protoObj1, 1117073434, protoObj0.prop0, leaf);
  617. v12.v14 = v10.v11();
  618. v12.v14.prototype = {
  619. v18 : argMath14,
  620. v19 : 'caller',
  621. method0 : function(v18,v19) {
  622. this.v18 = v18;
  623. this.v19 = v19;
  624. },
  625. method1 : function(){
  626. var __loopvar8 = loopInvariant,__loopSecondaryVar8_0 = loopInvariant + 3;
  627. LABEL0:
  628. LABEL1:
  629. for (var _strvar0 in i32) {
  630. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  631. __loopvar8 += 3;
  632. if (__loopvar8 >= loopInvariant + 9) break;
  633. __loopSecondaryVar8_0--;
  634. i32[_strvar0] = IntArr1[(((-3.28034532975588E+18 >= 0 ? -3.28034532975588E+18 : 0)) & 0XF)];
  635. }
  636. return (protoObj0.prop2 >>>= ((([1, 2, 3] instanceof ((typeof Error == 'function' ) ? Error : Object)) || (obj0.prop1 >= Object.prototype.prop2)) - (b < Object.prototype.prop1)));
  637. }
  638. };
  639. v12.v15 = v10.v11();
  640. v12.v15.prototype = {
  641. v20 : obj0,
  642. method0 : function(v21) {
  643. this.v20 = new v12.v13(v21);
  644. return func4.call(obj1 );
  645. }
  646. };
  647. (function(){
  648. GiantPrintArray.push('argMath14 = ' + (argMath14|0));
  649. argMath14 >>>=ui32[(([1, 2, 3] instanceof ((typeof Error == 'function' ) ? Error : Object))) & 255];
  650. __loopSecondaryVar3_0++;;
  651. protoObj1 = arrObj0;
  652. })();
  653. v12.v16 = v10.v11();
  654. v12.v16.prototype = {
  655. v22 : protoObj1,
  656. v23 : obj1,
  657. method0 : function(v10,v24,v25) {
  658. this.v22 = new v12.v13(v10);
  659. this.v23 = new v12.v13(v24,v25);
  660. return 3.98846568406549E+18;
  661. }
  662. };
  663. var v26 = new v12.v13((true instanceof ((typeof Function == 'function' ) ? Function : Object)));
  664. var v27 = new v12.v13(func8(arrObj0),(argMath14 &= arguments[(__loopvar3 + 1)]));
  665. var func19 = function(){
  666. var __loopvar9 = loopInvariant - 3,__loopSecondaryVar9_0 = loopInvariant - 9,__loopSecondaryVar9_1 = loopInvariant;
  667. LABEL0:
  668. do {
  669. __loopvar9++;
  670. __loopSecondaryVar9_0 += 3;
  671. if (__loopvar9 >= loopInvariant) break;
  672. __loopSecondaryVar9_1--;
  673. (Object.defineProperty(protoObj1, 'prop1', {writable: true, enumerable: false, configurable: true }));
  674. protoObj1.prop1 = ((arrObj0.length = (new obj1.method0()).prop2 ) >> (arguments[(10)] ? Math.asin((argMath14++ )) : uic8[(__loopvar3 + 3) & 255]));
  675. var uniqobj17 = {nd0: {lf0: {prop0: -6.09294887915789E+18, prop1: 0, prop2: -694362919, length: -912593483 , method0: func8, method1: func3}, nd1: {nd0: {lf0: {prop0: 1578421518, prop1: -1827590936.9, prop2: -2147483648, length: -154329056.9 , method0: obj0.method0, method1: obj0.method0}}, nd1: {lf0: {prop0: 110, prop1: 7.46054486139116E+18, prop2: 480429300, length: -161238286 , method0: func14, method1: func14}, lf1: {prop0: 4.11320542931751E+18, prop1: 4.80896003601085E+17, prop2: 1240384349, length: 8.42446970407366E+18 , method0: obj1.method1, method1: func2}, lf2: {prop0: -1533690068.9, prop1: 65535, prop2: -2147483649, length: 375398804 , method0: func14, method1: obj1.method0}}}}};
  676. uniqobj17.nd0.nd1.nd1.lf1.length= makeArrayLength(((obj1.prop0 != obj0.prop1)&&(obj0.prop1 <= obj0.prop2)));
  677. } while((obj1.prop0))
  678. return protoObj1.prop1;
  679. };
  680. var v28 = new v12.v13(arguments[(((obj1.method1() >= 0 ? obj1.method1() : 0)) & 0XF)],('caller' || (typeof(argMath14) == 'boolean') ),Math.sin(-3));
  681. GiantPrintArray.push(v28.v17);
  682. var __loopvar8 = loopInvariant;
  683. LABEL0:
  684. do {
  685. __loopvar8 -= 3;
  686. var func20 = function(){
  687. argMath14 = ('caller' || (typeof(argMath14) == 'boolean') );
  688. var y = (b >>>= ((protoObj0.prop0 !== obj1.prop1)||(obj0.prop0 === protoObj0.prop2)));
  689. argMath14 = (++ a);
  690. (Object.defineProperty(arrObj0, 'prop5', {writable: true, enumerable: false, configurable: true }));
  691. arrObj0.prop5 = i8[((typeof((ary.push(obj1.prop1, 'caller', ((function () {;}) instanceof ((typeof RegExp == 'function' ) ? RegExp : Object)), (+ y)))
  692. ) != 'object') ) & 255];
  693. return 429103469;
  694. };
  695. Object.prototype.prop0=Math.atan2(obj0.method1.call(obj0 , FloatArr0), (('method1' in obj1) != ((new RegExp('xyz')) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object))));
  696. var __loopvar9 = loopInvariant,__loopSecondaryVar9_0 = loopInvariant,__loopSecondaryVar9_1 = loopInvariant - 13;
  697. LABEL1:
  698. LABEL2:
  699. while((func4())) {
  700. __loopvar9++;
  701. __loopSecondaryVar9_1 += 4;
  702. if (__loopvar9 > loopInvariant + 4) break;
  703. __loopSecondaryVar9_0++;
  704. var uniqobj18 = {nd0: {nd0: {lf0: {prop0: 883926220, prop1: -86526389, prop2: -2147483649, length: -81785924.9 , method0: arrObj0.method1, method1: func19}, lf1: {prop0: -40117320, prop1: 371258621, prop2: 1.69541289069625E+18, length: 223 , method0: func14, method1: func19}, lf2: {prop0: -337068388, prop1: 6.61287193693544E+18, prop2: -39724350.9, length: 0 , method0: func20, method1: obj0.method1}}}, lf1: {prop0: 95702827, prop1: -1472737849, prop2: 1607684580.1, length: 65536 , method0: arrObj0.method1, method1: obj1.method0}};
  705. Object.prototype.length= makeArrayLength((Object.prototype.prop0++ ));
  706. GiantPrintArray.push('uniqobj18.lf1.prop1 = ' + (uniqobj18.lf1.prop1|0));
  707. (Object.defineProperty(arrObj0, 'prop2', {writable: true, enumerable: false, configurable: true }));
  708. arrObj0.prop2 = arguments[((((uniqobj18.nd0.nd0.lf0.prop1 %= (-2055400894.9)) >= 0 ? (uniqobj18.nd0.nd0.lf0.prop1 %= (-2055400894.9)) : 0)) & 0XF)];
  709. }
  710. protoObj1.method1();
  711. } while((obj0.method1.call(obj0 , FloatArr0)) && ((__loopvar8 > loopInvariant - 9)))
  712. var v29 = new v12.v14((- (typeof(obj0.prop0) != 'boolean') ));
  713. var v30 = new v12.v14(b,((((new EvalError()) instanceof ((typeof Boolean == 'function' ) ? Boolean : Object)) === ((506323644 >> __loopvar0) >>> (FloatArr0.push(arrObj0[(loopInvariant)]))
  714. )) ? (Math.imul(i16[(__loopvar4 - 3) & 255], ((arrObj0.prop1 !== obj0.prop2)&&(argMath14 <= protoObj0.prop2))) * (FloatArr0.push(arrObj0[(loopInvariant)]))
  715. + -4.35403036899742E+18) : (typeof(a) == 'string') ));
  716. obj0.prop0 %=(Math.imul(i16[(__loopvar4 - 3) & 255], ((arrObj0.prop1 !== obj0.prop2)&&(argMath14 <= protoObj0.prop2))) * (FloatArr0.push(arrObj0[(loopInvariant)]))
  717. + -4.35403036899742E+18);
  718. var v31 = new v12.v14(('caller' ? ((new Array()) instanceof ((typeof Error == 'function' ) ? Error : Object)) : ui32[(__loopvar0 - 1) & 255]),arrObj0[(((((function () {;}) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object)) >= 0 ? ((function () {;}) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object)) : 0)) & 0XF)],(true instanceof ((typeof Error == 'function' ) ? Error : Object)));
  719. GiantPrintArray.push(v31.v19);
  720. var v32 = new v12.v15((arrObj0[(((((function () {;}) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object)) >= 0 ? ((function () {;}) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object)) : 0)) & 0XF)] ^ ((function () {;}) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object))));
  721. var v33 = new v12.v15(Object.prototype.prop1,(typeof(Object.prototype.prop1) != 'object') );
  722. var v34 = new v12.v15(-1251206392.9,func19(),(+ aliasOfi8[(__loopSecondaryVar4_0 + 1) & 255]));
  723. GiantPrintArray.push(v34.v20);
  724. var v35 = new v12.v16(((arrObj0.method0() * ((argMath14 *= (obj1.prop1 % argMath14)) - 'caller')) << 'caller'));
  725. var v36 = new v12.v16(((-- obj0.prop0) | ((function () {;}) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object))),'caller');
  726. protoObj0.prop1 %=(b += ((-164 % 1131221497.1) - ((typeof(obj0.prop1) != 'boolean') ? (protoObj0.length = 1.36146611177469E+18) : 'caller')));
  727. var v37 = new v12.v16(IntArr0[(__loopSecondaryVar3_1 + 1)],((-164 % 1131221497.1) - ((typeof(obj0.prop1) != 'boolean') ? (protoObj0.length = 1.36146611177469E+18) : 'caller')),(Object.prototype.prop1 > arrObj0.prop0));
  728. GiantPrintArray.push(v37.v22);
  729. GiantPrintArray.push(v37.v23);
  730. var func21 = function(argMath21,argMath22,argMath23 = (Object.prototype.prop0 ? 7.75470678307751E+18 : Object.prototype.prop2)){
  731. return i32[((argMath14-- )) & 255];
  732. };
  733. break ;
  734. obj1.prop1 <<=(([1, 2, 3] instanceof ((typeof Object == 'function' ) ? Object : Object)) >>> obj1.method0.call(Object.prototype ));
  735. }
  736. (Object.defineProperty(obj1, 'prop2', {writable: true, enumerable: false, configurable: true }));
  737. obj1.prop2 = ((new RegExp('xyz')) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object));
  738. return i16[((- ((new Error('abc')) instanceof ((typeof Array == 'function' ) ? Array : Object)))) & 255];
  739. }
  740. var fPolyProp = function (o) {
  741. if (o!==undefined) {
  742. WScript.Echo(o.prop0 + ' ' + o.prop1 + ' ' + o.prop2);
  743. }
  744. };
  745. fPolyProp(litObj0);
  746. fPolyProp(litObj1);
  747. }
  748. protoObj0.prop0 *=((80 instanceof ((typeof Error == 'function' ) ? Error : Object)) * (func14(leaf,ary) - 'caller'));
  749. } while(((((new RegExp('xyz')) instanceof ((typeof EvalError == 'function' ) ? EvalError : Object)) | protoObj1.length)) && ((__loopvar3 < loopInvariant + 12)))
  750. GiantPrintArray.push(v5);
  751. }
  752. }
  753. v2();
  754. }
  755. (function(){
  756. // proxyvar_array.ecs - array
  757. var v38 = new Proxy(IntArr1, proxyHandler);
  758. // addarray:proxyarr
  759. var uniqobj19 = [protoObj1, obj1];
  760. uniqobj19[__counter%uniqobj19.length].method0();
  761. var uniqobj20 = [obj1];
  762. uniqobj20[__counter%uniqobj20.length].method0();
  763. var __loopvar2 = loopInvariant,__loopSecondaryVar2_0 = loopInvariant + 12,__loopSecondaryVar2_1 = loopInvariant;
  764. for (var _strvar0 in protoObj1) {
  765. if(typeof _strvar0 === 'string' && _strvar0.indexOf('method') != -1) continue;
  766. __loopSecondaryVar2_0 -= 4;
  767. __loopSecondaryVar2_1--;
  768. if (__loopvar2 >= loopInvariant + 2) break;
  769. __loopvar2++;
  770. }
  771. })();
  772. (function(argMath24 = Math.cos(((ary.slice(14,0)) ? (- (ary.slice(14,0))) : obj0.prop1)),argMath25 = ((this.prop1 < obj1.length)&&(protoObj0.prop2 === obj0.prop2)),argMath26){
  773. argMath26 =(obj1.length === a);
  774. })(ui8[(loopInvariant) & 255],arrObj0[((((obj1.prop1 > obj1.prop1) >= 0 ? (obj1.prop1 > obj1.prop1) : 0)) & 0XF)],VarArr0);
  775. }
  776. // ABCE#3 Snippet - Array objects + CSE in expressions
  777. GiantPrintArray.push('snippet');
  778. // Use expression in array access and guard check that gets CSEd
  779. // Verify array objects with bound checks hoisted
  780. function v39(v40, v41){
  781. var v42 = 0;
  782. var v43 = Object.prototype.length;
  783. //addVar<number>:index
  784. var __loopvar1002 = loopInvariant,__loopSecondaryVar1002_0 = loopInvariant - 15;
  785. LABEL0:
  786. while((((((obj0.prop1 === 7.1268032550465E+18) != -4.62314564028928E+18) | (+ (protoObj1.prop2 /= protoObj0.prop2))) * 831578761 - (((new func1()).prop0 ? (typeof(protoObj0.prop0) != 'undefined') : 'caller') * (+ IntArr0[(__loopvar1002 - 1)]) - (IntArr1.push((-- obj1.prop1), (-- obj1.prop1), ((new RangeError()) instanceof ((typeof func8 == 'function' ) ? func8 : Object)), (arrObj0.prop1 * protoObj0.prop0 + 2147483647), protoObj1.method1(), ((new RangeError()) instanceof ((typeof String == 'function' ) ? String : Object))))
  787. )))) {
  788. __loopvar1002--;
  789. __loopSecondaryVar1002_0 += 4;
  790. if (__loopvar1002 < loopInvariant - 4) break;
  791. // CSE as well as bound check tracking
  792. v40[(((b <= obj1.prop0)||(Object.prototype.prop2 != protoObj1.prop2)) ? -43 : (VarArr0.splice(1,6, protoObj1.prop0, 1747240571.1, (protoObj1.prop2 ? (obj1.prop2 * ((arrObj0.prop0 & protoObj0.length) - (typeof(Object.prototype.prop1) != 'number') )) : (+ arrObj0.method1.call(obj1 ))), Math.ceil({prop4: (typeof(protoObj0.prop2) != 'undefined') , prop3: (obj0.prop2 != obj0.prop2), prop2: Object.create({64: obj0.prop0, prop0: obj0.prop2, prop1: 7.74405122140488E+18, prop3: protoObj1.prop1, prop4: protoObj1.length, prop5: protoObj1.prop1}), prop1: arrObj0.method1.call(obj1 ), prop0: (Function('') instanceof ((typeof String == 'function' ) ? String : Object))}), obj1.prop0, (protoObj1.length != Object.prototype.prop0), ((+ (-2.6946890203271E+18 instanceof ((typeof Error == 'function' ) ? Error : Object))) instanceof ((typeof obj0.method1 == 'function' ) ? obj0.method1 : Object)), Math.imul(obj0.method1.call(obj1 , FloatArr0), ((arrObj0.prop2 &= b) ? i8[(134) & 255] : (517046397.1 * protoObj0.prop2 - protoObj1.prop1))), IntArr1[(8)], (typeof(protoObj0.prop2) != 'object') , (+ (obj1.prop0 >>= f64[(79) & 255])))))] = (Math.asin((6.42081223106955E+18 || (protoObj1.prop0 += b))) - func3.call(Object.prototype ));
  793. v42 <<= v40[(((b <= obj1.prop0)||(Object.prototype.prop2 != protoObj1.prop2)) ? -43 : (VarArr0.splice(1,6, protoObj1.prop0, 1747240571.1, (protoObj1.prop2 ? (obj1.prop2 * ((arrObj0.prop0 & protoObj0.length) - (typeof(Object.prototype.prop1) != 'number') )) : (+ arrObj0.method1.call(obj1 ))), Math.ceil({prop4: (typeof(protoObj0.prop2) != 'undefined') , prop3: (obj0.prop2 != obj0.prop2), prop2: Object.create({64: obj0.prop0, prop0: obj0.prop2, prop1: 7.74405122140488E+18, prop3: protoObj1.prop1, prop4: protoObj1.length, prop5: protoObj1.prop1}), prop1: arrObj0.method1.call(obj1 ), prop0: (Function('') instanceof ((typeof String == 'function' ) ? String : Object))}), obj1.prop0, (protoObj1.length != Object.prototype.prop0), ((+ (-2.6946890203271E+18 instanceof ((typeof Error == 'function' ) ? Error : Object))) instanceof ((typeof obj0.method1 == 'function' ) ? obj0.method1 : Object)), Math.imul(obj0.method1.call(obj1 , FloatArr0), ((arrObj0.prop2 &= b) ? i8[(134) & 255] : (517046397.1 * protoObj0.prop2 - protoObj1.prop1))), IntArr1[(8)], (typeof(protoObj0.prop2) != 'object') , (+ (obj1.prop0 >>= f64[(79) & 255])))))];
  794. }
  795. }
  796. // Pass arrays or array objects
  797. v39(shouldBailout? arrObj0 : IntArr0, 10000 );
  798. WScript.Echo('a = ' + (a|0));
  799. WScript.Echo('b = ' + (b|0));
  800. WScript.Echo('this.prop0 = ' + (this.prop0|0));
  801. WScript.Echo('this.prop1 = ' + (this.prop1|0));
  802. WScript.Echo('obj0.prop0 = ' + (obj0.prop0|0));
  803. WScript.Echo('obj0.prop1 = ' + (obj0.prop1|0));
  804. WScript.Echo('obj0.prop2 = ' + (obj0.prop2|0));
  805. WScript.Echo('obj0.length = ' + (obj0.length|0));
  806. WScript.Echo('protoObj0.prop0 = ' + (protoObj0.prop0|0));
  807. WScript.Echo('protoObj0.prop1 = ' + (protoObj0.prop1|0));
  808. WScript.Echo('protoObj0.prop2 = ' + (protoObj0.prop2|0));
  809. WScript.Echo('protoObj0.length = ' + (protoObj0.length|0));
  810. WScript.Echo('obj1.prop0 = ' + (obj1.prop0|0));
  811. WScript.Echo('obj1.prop1 = ' + (obj1.prop1|0));
  812. WScript.Echo('obj1.prop2 = ' + (obj1.prop2|0));
  813. WScript.Echo('obj1.length = ' + (obj1.length|0));
  814. WScript.Echo('protoObj1.prop0 = ' + (protoObj1.prop0|0));
  815. WScript.Echo('protoObj1.prop1 = ' + (protoObj1.prop1|0));
  816. WScript.Echo('protoObj1.prop2 = ' + (protoObj1.prop2|0));
  817. WScript.Echo('protoObj1.length = ' + (protoObj1.length|0));
  818. WScript.Echo('arrObj0.prop0 = ' + (arrObj0.prop0|0));
  819. WScript.Echo('arrObj0.prop1 = ' + (arrObj0.prop1|0));
  820. WScript.Echo('arrObj0.prop2 = ' + (arrObj0.prop2|0));
  821. WScript.Echo('arrObj0.length = ' + (arrObj0.length|0));
  822. WScript.Echo('Object.prototype.prop0 = ' + (Object.prototype.prop0|0));
  823. WScript.Echo('Object.prototype.prop1 = ' + (Object.prototype.prop1|0));
  824. WScript.Echo('Object.prototype.prop2 = ' + (Object.prototype.prop2|0));
  825. WScript.Echo('Object.prototype.length = ' + (Object.prototype.length|0));
  826. WScript.Echo('arrObj0[0] = ' + (arrObj0[0]|0));
  827. WScript.Echo('arrObj0[1] = ' + (arrObj0[1]|0));
  828. WScript.Echo('arrObj0[2] = ' + (arrObj0[2]|0));
  829. WScript.Echo('arrObj0[3] = ' + (arrObj0[3]|0));
  830. WScript.Echo('arrObj0[4] = ' + (arrObj0[4]|0));
  831. WScript.Echo('arrObj0[5] = ' + (arrObj0[5]|0));
  832. WScript.Echo('arrObj0[6] = ' + (arrObj0[6]|0));
  833. WScript.Echo('arrObj0[7] = ' + (arrObj0[7]|0));
  834. WScript.Echo('arrObj0[8] = ' + (arrObj0[8]|0));
  835. WScript.Echo('arrObj0[9] = ' + (arrObj0[9]|0));
  836. WScript.Echo('arrObj0[10] = ' + (arrObj0[10]|0));
  837. WScript.Echo('arrObj0[11] = ' + (arrObj0[11]|0));
  838. WScript.Echo('arrObj0[12] = ' + (arrObj0[12]|0));
  839. WScript.Echo('arrObj0[13] = ' + (arrObj0[13]|0));
  840. WScript.Echo('arrObj0[14] = ' + (arrObj0[14]|0));
  841. WScript.Echo('arrObj0[arrObj0.length-1] = ' + (arrObj0[arrObj0.length-1]|0));
  842. WScript.Echo('arrObj0.length = ' + (arrObj0.length|0));
  843. WScript.Echo('ary[0] = ' + (ary[0]|0));
  844. WScript.Echo('ary[1] = ' + (ary[1]|0));
  845. WScript.Echo('ary[2] = ' + (ary[2]|0));
  846. WScript.Echo('ary[3] = ' + (ary[3]|0));
  847. WScript.Echo('ary[4] = ' + (ary[4]|0));
  848. WScript.Echo('ary[5] = ' + (ary[5]|0));
  849. WScript.Echo('ary[6] = ' + (ary[6]|0));
  850. WScript.Echo('ary[7] = ' + (ary[7]|0));
  851. WScript.Echo('ary[8] = ' + (ary[8]|0));
  852. WScript.Echo('ary[9] = ' + (ary[9]|0));
  853. WScript.Echo('ary[10] = ' + (ary[10]|0));
  854. WScript.Echo('ary[11] = ' + (ary[11]|0));
  855. WScript.Echo('ary[12] = ' + (ary[12]|0));
  856. WScript.Echo('ary[13] = ' + (ary[13]|0));
  857. WScript.Echo('ary[14] = ' + (ary[14]|0));
  858. WScript.Echo('ary[ary.length-1] = ' + (ary[ary.length-1]|0));
  859. WScript.Echo('ary.length = ' + (ary.length|0));
  860. WScript.Echo('Object.prototype.prop0 = ' + (Object.prototype.prop0|0));
  861. WScript.Echo('Object.prototype.prop1 = ' + (Object.prototype.prop1|0));
  862. WScript.Echo('Object.prototype.prop2 = ' + (Object.prototype.prop2|0));
  863. WScript.Echo('Object.prototype.length = ' + (Object.prototype.length|0));
  864. for (var i = 0; i < GiantPrintArray.length; i++) {
  865. WScript.Echo(GiantPrintArray[i]);
  866. }
  867. ;
  868. WScript.Echo('sumOfary = ' + ary.slice(0, 23).reduce(function(prev, curr) {{ return '' + prev + curr; }},0));
  869. WScript.Echo('subset_of_ary = ' + ary.slice(0, 11));;
  870. WScript.Echo('sumOfIntArr0 = ' + IntArr0.slice(0, 23).reduce(function(prev, curr) {{ return '' + prev + curr; }},0));
  871. WScript.Echo('subset_of_IntArr0 = ' + IntArr0.slice(0, 11));;
  872. WScript.Echo('sumOfIntArr1 = ' + IntArr1.slice(0, 23).reduce(function(prev, curr) {{ return '' + prev + curr; }},0));
  873. WScript.Echo('subset_of_IntArr1 = ' + IntArr1.slice(0, 11));;
  874. WScript.Echo('sumOfFloatArr0 = ' + FloatArr0.slice(0, 23).reduce(function(prev, curr) {{ return '' + prev + curr; }},0));
  875. WScript.Echo('subset_of_FloatArr0 = ' + FloatArr0.slice(0, 11));;
  876. WScript.Echo('sumOfVarArr0 = ' + VarArr0.slice(0, 23).reduce(function(prev, curr) {{ return '' + prev + curr; }},0));
  877. WScript.Echo('subset_of_VarArr0 = ' + VarArr0.slice(0, 11));;
  878. };
  879. // generate profile
  880. test0();
  881. // Run Simple JIT
  882. test0();
  883. test0();
  884. // run JITted code
  885. runningJITtedCode = true;
  886. test0();
  887. // Baseline total processor time: 00:00:16.1093750
  888. // Test total processor time: 00:02:05.5000000
  889. //
  890. // Addl Dump Info:
  891. //Baseline length = 219452
  892. //Test length = 114239
  893. //Baseline length = 219452
  894. //Test length = 172952
  895. //Baseline length = 219452
  896. //Test length = 164652
  897. //
  898. // Baseline output:
  899. // Skipping first 8801 lines of output...
  900. // Snippet 1:
  901. // 0
  902. // false
  903. // 0
  904. // getter
  905. // NaN
  906. // getter
  907. // NaN
  908. // snippet
  909. // sumOfary = 0-680817128-527813232-1904181990-1920459204-691-93163429-754207282-2147483646-830578102
  910. // subset_of_ary = -680817128,-527813232,-832088952,99,980156429.10000000,0,-1920459204,-1073741824,191,-93163429,-754207282
  911. // sumOfIntArr0 = 65537-252-1389266167-1543784572-8-1361269967-2147483646
  912. // subset_of_IntArr0 = 65537,-252,-1389266167,-139912883,183,1,-8,-1361269967,-2147483646
  913. // sumOfIntArr1 = 0-408473904-367883042-637078889-1051552569-1051552570falseNaN0false
  914. // subset_of_IntArr1 = -1336332573,,97390817,-367883042,-637078889,-1051552569,-1051552570,false,NaN,0,false
  915. // sumOfFloatArr0 = 0-192684291-1221465361-787558325-1378829747-1915497990.90000000
  916. // subset_of_FloatArr0 = -63975519,65537,-1221465361,-561153202,979829498,-119993699,65536,-1915497990.90000000
  917. // sumOfVarArr0 = 0[object Object]467326443-2012225683-1635681071-2-632493755-975199350.90000000
  918. // subset_of_VarArr0 = [object Object],467326443,-2012225683,-162068960,186382691,489218302.10000000,-2,-287597399,1203918061,-975199350.90000000,0
  919. //
  920. //
  921. // Test output:
  922. // Skipping first 6597 lines of output...
  923. // 0
  924. // false
  925. // 0
  926. // getter
  927. // NaN
  928. // getter
  929. // NaN
  930. // snippet
  931. // sumOfary = 0-680817128-527813232-1904181990-1920459204-691-93163429-754207282-2147483646-830578102
  932. // subset_of_ary = -680817128,-527813232,-832088952,99,980156429.10000000,0,-1920459204,-1073741824,191,-93163429,-754207282
  933. // sumOfIntArr0 = 65537-252-1389266167-1543784572-8-1361269967-2147483646
  934. // subset_of_IntArr0 = 65537,-252,-1389266167,-139912883,183,1,-8,-1361269967,-2147483646
  935. // sumOfIntArr1 = 0-408473904-367883042-637078889-1051552569-1051552570falseNaN0false
  936. // subset_of_IntArr1 = -1336332573,,97390817,-367883042,-637078889,-1051552569,-1051552570,false,NaN,0,false
  937. // sumOfFloatArr0 = 0-192684291-1221465361-787558325-1378829747-1915497990.90000000
  938. // subset_of_FloatArr0 = -63975519,65537,-1221465361,-561153202,979829498,-119993699,65536,-1915497990.90000000
  939. // sumOfVarArr0 = 0[object Object]467326443-2012225683-1635681071-2-632493755-975199350.90000000
  940. // subset_of_VarArr0 = [object Object],467326443,-2012225683,-162068960,186382691,489218302.10000000,-2,-287597399,1203918061,-975199350.90000000,0
  941. // FATAL ERROR: jshost.exe failed due to exception code c0000005
  942. //
  943. // Reduced Switches: