nativearray_gen2.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  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. function test0() {
  6. var obj0 = {};
  7. var obj2 = {};
  8. var arrObj0 = {};
  9. var func2 = function (argStr2, argStr3, argStr4, argStr5) {
  10. // CSE when expressions present on LHS.
  11. function _csetest(_x, _y) {
  12. _x.prop1 = _y;
  13. return _x;
  14. }
  15. _csetest({ "prop1": 1 }, true).prop2 = true;
  16. ary[true] = 1 + this.prop5;
  17. var v42500 = ary[true] + ary[true];
  18. }
  19. var ary = new Array(10);
  20. // CSE when expressions contain element access of an array using "." and [] modifier.
  21. var v42501 = ary[(func2.call(arrObj0, 1, 1, 1, 1) * 1)] + obj2.prop1;
  22. ary.len = obj0.prop6
  23. obj2.length = ary[(func2.call(arrObj0, 1, 1, 1, 1) * 1)] + obj2.prop1;
  24. };
  25. // generate profile
  26. test0();
  27. test0();
  28. test0();
  29. test0();
  30. // run JITted code
  31. runningJITtedCode = true;
  32. test0();
  33. test0();
  34. test0();
  35. test0();
  36. var shouldBailout = false;
  37. function test0(){
  38. var obj0 = {};
  39. var obj1 = {};
  40. var arrObj0 = {};
  41. var func0 = function(argMath0,argMath1,argArr2){
  42. var __loopvar16 = 0;
  43. do {
  44. __loopvar16++;
  45. arrObj0[(((ary[((shouldBailout ? (ary[5] = "x") : undefined ), 5)] >= 0 ? ary[((shouldBailout ? (ary[5] = "x") : undefined ), 5)] : 0)) & 0XF)] = 1;
  46. argArr2[(((arrObj0[(15)] >= 0 ? arrObj0[(15)] : 0)) & 0XF)] = 1;
  47. } while((ary[(((1 >= 0 ? 1 : 0)) & 0XF)]) && __loopvar16 < 3)
  48. return 1;
  49. }
  50. var func1 = function(){
  51. func0(1, func0(1, 1, ary), 1);
  52. }
  53. var func2 = function(argStr3,argMath4,argFunc5,argFunc6){
  54. (func0(1, 1, ary) ? func0.call(obj0 , 1, func1.call(obj0 ), 1) : 1);
  55. }
  56. obj1.method0 = func2;
  57. var ary = new Array(10);
  58. ary[5] = 1;
  59. obj1.method0.call(obj1 , 1, 1, 1, 1);
  60. };
  61. // generate profile
  62. test0();
  63. test0();
  64. test0();
  65. test0();
  66. test0();
  67. // run JITted code
  68. runningJITtedCode = true;
  69. test0();
  70. test0();
  71. test0();
  72. test0();
  73. test0();
  74. WScript.Echo('PASS');