arr_bailout.js 987 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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 A = new Array(10);
  6. A[1] = 100;
  7. Array.prototype[5] = 50;
  8. var Failed = 0;
  9. function FAIL()
  10. {
  11. Failed++;
  12. WScript.Echo("FAILED");
  13. }
  14. function foo(arr, i, expected)
  15. {
  16. var z = 0;
  17. for(var j = 0;j<10;j++){
  18. arr = arr[i];
  19. z += arr + 10;
  20. arr = A;
  21. }
  22. if (z != expected)
  23. {
  24. FAIL();
  25. }
  26. return i;
  27. }
  28. // generate profile
  29. for(var i=0;i<200;i++)
  30. {
  31. foo(A, 5, 600);
  32. }
  33. Object.defineProperty(A,5,{get:function(){return 200}});
  34. for(var i=0;i<200;i++)
  35. {
  36. foo(A, 5, 2100);
  37. }
  38. if (!Failed)
  39. {
  40. WScript.Echo("Passed");
  41. }