allIIntCases.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  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. /*
  6. *******************************UNIT TEST FOR SWITCH CASE OPTIMIZATION*******************************
  7. * Testing for normal execution with all integers and bailing out
  8. */
  9. /*
  10. ************************************************** TEST 1******************************************************
  11. * Tests with all integer arguments
  12. */
  13. function f(x)
  14. {
  15. switch(x)
  16. {
  17. case 1:
  18. WScript.Echo(1);
  19. break;
  20. case 2:
  21. WScript.Echo(2);
  22. break;
  23. case 3:
  24. WScript.Echo(3);
  25. break;
  26. case 4:
  27. WScript.Echo(4);
  28. break;
  29. case 5:
  30. WScript.Echo(5);
  31. break;
  32. case 6:
  33. WScript.Echo(6);
  34. break;
  35. case 7:
  36. WScript.Echo(7);
  37. break;
  38. case 8:
  39. WScript.Echo(8);
  40. break;
  41. case 9:
  42. WScript.Echo(9);
  43. break;
  44. case 10:
  45. WScript.Echo(10);
  46. break;
  47. case 11:
  48. WScript.Echo(11);
  49. break;
  50. case 12:
  51. WScript.Echo(12);
  52. break;
  53. case 13:
  54. WScript.Echo(13);
  55. break;
  56. case 14:
  57. WScript.Echo(14);
  58. break;
  59. case 15:
  60. WScript.Echo(15);
  61. break;
  62. case 16:
  63. WScript.Echo(16);
  64. break;
  65. case 17:
  66. WScript.Echo(17);
  67. break;
  68. case 18:
  69. WScript.Echo(18);
  70. break;
  71. case 19:
  72. WScript.Echo(19);
  73. break;
  74. case 20:
  75. WScript.Echo(20);
  76. break;
  77. default:
  78. WScript.Echo('default');
  79. break;
  80. }
  81. }
  82. for (i = 1; i <= 20; i++)
  83. {
  84. f(i);
  85. }
  86. f(100);
  87. f(0);
  88. //making the switch to bail out on non-integer inputs
  89. for(i=0;i<35;i++)
  90. {
  91. f(new Object);
  92. }
  93. /*
  94. *********************************************TEST2**********************************
  95. * The first execution of the switch statement is with an object
  96. * The profiler data is updated during the first time itself and hence the optimization is not performed during the first time jit itself
  97. */
  98. function g(x)
  99. {
  100. switch(x)
  101. {
  102. case 1:
  103. WScript.Echo(1);
  104. break;
  105. case 2:
  106. WScript.Echo(2);
  107. break;
  108. case 3:
  109. WScript.Echo(3);
  110. break;
  111. case 4:
  112. WScript.Echo(4);
  113. break;
  114. case 5:
  115. WScript.Echo(5);
  116. break;
  117. case 6:
  118. WScript.Echo(6);
  119. break;
  120. case 7:
  121. WScript.Echo(7);
  122. break;
  123. case 8:
  124. WScript.Echo(8);
  125. break;
  126. case 9:
  127. WScript.Echo(9);
  128. break;
  129. case 10:
  130. WScript.Echo(10);
  131. break;
  132. case 11:
  133. WScript.Echo(11);
  134. break;
  135. case 12:
  136. WScript.Echo(12);
  137. break;
  138. case 13:
  139. WScript.Echo(13);
  140. break;
  141. case 14:
  142. WScript.Echo(14);
  143. break;
  144. case 15:
  145. WScript.Echo(15);
  146. break;
  147. case 16:
  148. WScript.Echo(16);
  149. break;
  150. case 17:
  151. WScript.Echo(17);
  152. break;
  153. case 18:
  154. WScript.Echo(18);
  155. break;
  156. case 19:
  157. WScript.Echo(19);
  158. break;
  159. case 20:
  160. WScript.Echo(20);
  161. break;
  162. default:
  163. WScript.Echo('default');
  164. break;
  165. }
  166. }
  167. for(i=0;i<35;i++)
  168. {
  169. g(new Object)
  170. g(1);
  171. g(-10);
  172. g(9);
  173. g(5);
  174. }