From bcb5650161a0e93db180663d909b2c10f5c81c12 Mon Sep 17 00:00:00 2001 From: Guillaume Emont Date: Fri, 6 Nov 2015 16:53:40 -0600 Subject: [PATCH] MIPS: use pufirfyNaN for substraction result in slow_op_sub On MIPS, glibc's slowfp implementation of double substraction yields an impure NaN. --- Source/JavaScriptCore/runtime/CommonSlowPaths.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp b/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp index 3b6694d45b3a3..7f75a0487261e 100644 --- a/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp +++ b/Source/JavaScriptCore/runtime/CommonSlowPaths.cpp @@ -386,7 +386,14 @@ SLOW_PATH_DECL(slow_path_sub) BEGIN(); double a = OP_C(2).jsValue().toNumber(exec); double b = OP_C(3).jsValue().toNumber(exec); + +#if CPU(MIPS) && defined(__GLIBC__) + // on MIPS, the GLIBC version of the softfp double substraction sometimes + // returns impure NaNs + RETURN(jsNumber(purifyNaN(a - b))); +#else RETURN(jsNumber(a - b)); +#endif } SLOW_PATH_DECL(slow_path_div)