| 1234567891011121314151617181920212223242526272829303132333435 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- /*
- This file is executed from fabs1.js
- fabs from ucrtbase.dll doesn't restore the FPU Control word correctly when passed a NaN.
- This is exposed if we WScript.LoadScriptFile() code with Math.Abs(NaN) in it.
- Causing an assertion failure in SmartFPUControl. The change special-handles NaN without calling fabs
- */
- function AsmModule(stdlib, foreign, heap) {
- "use asm";
- var abs = stdlib.Math.abs;
- function testOp(av) {
- av = +av;
- return +abs(av);
- };
- return {testOp : testOp};
- }
- var asmModule = AsmModule({Math:Math},{}, new ArrayBuffer(1<<20));
- WScript.Echo(asmModule.testOp(-123.334) === 123.334);
- WScript.Echo(isNaN(asmModule.testOp(NaN)));
- WScript.Echo(isNaN(asmModule.testOp(-NaN)));
- WScript.Echo(asmModule.testOp(Infinity) === Infinity);
- WScript.Echo(asmModule.testOp(-Infinity) === Infinity);
- WScript.Echo(asmModule.testOp(0.0) === 0.0);
- WScript.Echo(asmModule.testOp(-0.0) === 0.0);
|