memset2.js 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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. // Compares the value set by interpreter with the jitted code
  6. // need to run with -mic:1 -off:simplejit -off:JITLoopBody
  7. // Run locally with -trace:memop -trace:bailout to help find bugs
  8. function test(x)
  9. {
  10. for(var i = 0; i < 10; i++)
  11. {
  12. x[i] = 0;
  13. }
  14. //Invalid memset
  15. for(var i = 0; i < 10; i++)
  16. {
  17. x[i] = 1;
  18. x[i / 2] = 3;
  19. }
  20. var c = 0;
  21. //valid memset
  22. for(var i = 0; i < 10; i++)
  23. {
  24. x[i] = 2;
  25. c += x[i];
  26. }
  27. //Invalid memset
  28. for(var i = 0; i < 9; i++)
  29. {
  30. x[i] = 3;
  31. c += x[i / 2];
  32. }
  33. }
  34. var x = new Array();
  35. test(x);
  36. var x2 = new Array();
  37. test(x2);
  38. compareResults(0, x.length);
  39. var passed = 1;
  40. function compareResults(start, end) {
  41. for(var i = start; i < end; i++)
  42. {
  43. if(x[i] !== x2[i])
  44. {
  45. print(`Invalid value: a[${i}] != b[${i}]`);
  46. passed = 0;
  47. break;
  48. }
  49. }
  50. }
  51. if(passed === 1)
  52. {
  53. WScript.Echo("PASSED");
  54. }
  55. else
  56. {
  57. WScript.Echo("FAILED");
  58. }