Title: [167405] trunk/Source/_javascript_Core
Revision
167405
Author
bfulg...@apple.com
Date
2014-04-16 17:40:36 -0700 (Wed, 16 Apr 2014)

Log Message

[Win] Unreviewed Windows gardening. Restrict our new 'isinf' check
to 32-bit builds, and revise the comment to explain what we are
doing.

* runtime/JSCJSValueInlines.h:
(JSC::JSValue::isMachineInt): Provide motivation for the new
'isinf' check for our 32-bit code path.

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (167404 => 167405)


--- trunk/Source/_javascript_Core/ChangeLog	2014-04-17 00:27:34 UTC (rev 167404)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-04-17 00:40:36 UTC (rev 167405)
@@ -1,3 +1,13 @@
+2014-04-16  Brent Fulgham  <bfulg...@apple.com>
+
+        [Win] Unreviewed Windows gardening. Restrict our new 'isinf' check
+        to 32-bit builds, and revise the comment to explain what we are
+        doing.
+
+        * runtime/JSCJSValueInlines.h:
+        (JSC::JSValue::isMachineInt): Provide motivation for the new
+        'isinf' check for our 32-bit code path.
+
 2014-04-16  Juergen Ributzka  <juer...@apple.com>
 
         Allocate the data section on the heap again for FTL on ARM64

Modified: trunk/Source/_javascript_Core/runtime/JSCJSValueInlines.h (167404 => 167405)


--- trunk/Source/_javascript_Core/runtime/JSCJSValueInlines.h	2014-04-17 00:27:34 UTC (rev 167404)
+++ trunk/Source/_javascript_Core/runtime/JSCJSValueInlines.h	2014-04-17 00:40:36 UTC (rev 167405)
@@ -506,8 +506,12 @@
     double number = asDouble();
     if (number != number)
         return false;
-#if OS(WINDOWS)
-    // Need to check for infinity on Windows to avoid floating point error on following cast, see bug 131182.
+#if OS(WINDOWS) && CPU(X86)
+    // The VS Compiler for 32-bit builds generates a floating point error when attempting to cast
+    // from an infinity to a 64-bit integer. We leave this routine with the floating point error
+    // left in a register, causing undefined behavior in later floating point operations.
+    //
+    // To avoid this issue, we check for infinity here, and return false in that case.
     if (std::isinf(number))
         return false;
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to