bug713.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 shouldBailout = false;
  6. var G = 0;
  7. function test0(){
  8. var obj0 = {};
  9. var obj1 = {};
  10. var func1 = function(){
  11. var __loopvar2 = 0;
  12. while(__loopvar2 < 3) {
  13. __loopvar2++;
  14. while(a < (1)) {
  15. break ;
  16. }
  17. var a = 1;
  18. (shouldBailout ? (a = { valueOf: function () { G += 1; return 3; } }, 1) : 1);
  19. }
  20. }
  21. var func2 = function(){
  22. }
  23. obj0.method0 = func2;
  24. var i16 = new Int16Array(256);
  25. var ui8 = new Uint8Array(256);
  26. var a = 1;
  27. var c = 1;
  28. var d = 1;
  29. var e = 1;
  30. //Snippet 1: basic inlining test
  31. obj0.prop0 = (function(x,y,z) {
  32. obj1.prop0 = func1();
  33. return obj0.method0();
  34. })((c *= (shouldBailout ? (a = { valueOf: function() { G += 10; return 3; } }, ui8[((obj1.length, 2, 2.7970894295654E+18)) & 255]) : ui8[((obj1.length, 2, 2.7970894295654E+18)) & 255])),(d >>>= i16[((shouldBailout ? (a = { valueOf: function() { G += 100; return 3; } }, (! 2)) : (! 2))) & 255]),((~ 0) ^ a));
  35. };
  36. // generate profile
  37. test0();
  38. // run JITted code
  39. test0();
  40. // run code with bailouts enabled
  41. shouldBailout = true;
  42. test0();
  43. if (G == 102)
  44. {
  45. WScript.Echo("Passed");
  46. }
  47. else
  48. {
  49. WScript.Echo("FAILED");
  50. }