miscellaneous.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. // A specific case that was regressed
  6. var toSubtract = 1099511627776;
  7. writeLine("toSubtract:\n " + toSubtract);
  8. var toMultiply = 0.840812748240128;
  9. writeLine("toMultiply:\n " + toMultiply);
  10. var powResult = Math.pow(2, 55);
  11. writeLine("powResult:\n " + powResult);
  12. var subtracted = powResult - toSubtract;
  13. writeLine("subtracted:\n " + subtracted);
  14. var multiplied = toMultiply * subtracted;
  15. writeLine("multiplied:\n " + multiplied);
  16. var stringed = "" + multiplied;
  17. writeLine("stringed:\n " + stringed);
  18. var evaled = eval(stringed);
  19. writeLine("evaled:\n " + evaled);
  20. (function testInlineParameterSideEffects() {
  21. function foo(){
  22. var a = 12345;
  23. var x = Math.pow(a, 1 >> (a = 0));
  24. return x;
  25. }
  26. var x = foo();
  27. WScript.Echo("testInlineParameterSideEffects:\n " + x);
  28. })();
  29. (function testInlineWin8_748804() {
  30. var result;
  31. function decimalToHexString(n) {
  32. for (var i = 1; i >= 1; --i) {
  33. if (n >= Math.pow(16, i)) {
  34. var t = Math.floor(n / Math.pow(16, i));
  35. result = t;
  36. n = t * Math.pow(16, i);
  37. }
  38. }
  39. }
  40. decimalToHexString(0xDF);
  41. WScript.Echo("testInlineWin8_748804:\n " + result);
  42. })();
  43. safeCall(function testInlineMathBuiltinCalledAsConstructor() {
  44. var x = new Math.sin(0);
  45. });
  46. // Helpers
  47. function writeLine(str)
  48. {
  49. WScript.Echo("" + str);
  50. }
  51. function safeCall(f) {
  52. var args = [];
  53. for(var a = 1; a < arguments.length; ++a)
  54. args.push(arguments[a]);
  55. try {
  56. return f.apply(this, args);
  57. } catch(ex) {
  58. writeLine(ex.name);
  59. }
  60. }