| //------------------------------------------------------------------------------------------------------- | |
| // Copyright (C) Microsoft. All rights reserved. | |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
| //------------------------------------------------------------------------------------------------------- | |
| // A specific case that was regressed | |
| var toSubtract = 1099511627776; | |
| writeLine("toSubtract:\n " + toSubtract); | |
| var toMultiply = 0.840812748240128; | |
| writeLine("toMultiply:\n " + toMultiply); | |
| var powResult = Math.pow(2, 55); | |
| writeLine("powResult:\n " + powResult); | |
| var subtracted = powResult - toSubtract; | |
| writeLine("subtracted:\n " + subtracted); | |
| var multiplied = toMultiply * subtracted; | |
| writeLine("multiplied:\n " + multiplied); | |
| var stringed = "" + multiplied; | |
| writeLine("stringed:\n " + stringed); | |
| var evaled = eval(stringed); | |
| writeLine("evaled:\n " + evaled); | |
| (function testInlineParameterSideEffects() { | |
| function foo(){ | |
| var a = 12345; | |
| var x = Math.pow(a, 1 >> (a = 0)); | |
| return x; | |
| } | |
| var x = foo(); | |
| WScript.Echo("testInlineParameterSideEffects:\n " + x); | |
| })(); | |
| (function testInlineWin8_748804() { | |
| var result; | |
| function decimalToHexString(n) { | |
| for (var i = 1; i >= 1; --i) { | |
| if (n >= Math.pow(16, i)) { | |
| var t = Math.floor(n / Math.pow(16, i)); | |
| result = t; | |
| n = t * Math.pow(16, i); | |
| } | |
| } | |
| } | |
| decimalToHexString(0xDF); | |
| WScript.Echo("testInlineWin8_748804:\n " + result); | |
| })(); | |
| safeCall(function testInlineMathBuiltinCalledAsConstructor() { | |
| var x = new Math.sin(0); | |
| }); | |
| // Helpers | |
| function writeLine(str) | |
| { | |
| WScript.Echo("" + str); | |
| } | |
| function safeCall(f) { | |
| var args = []; | |
| for(var a = 1; a < arguments.length; ++a) | |
| args.push(arguments[a]); | |
| try { | |
| return f.apply(this, args); | |
| } catch(ex) { | |
| writeLine(ex.name); | |
| } | |
| } |