Rewrite NaN checks in terms of SkScalarIsNaN()
authorehsan.akhgari <ehsan.akhgari@gmail.com>
Mon, 15 Dec 2014 20:08:47 +0000 (12:08 -0800)
committerCommit bot <commit-bot@chromium.org>
Mon, 15 Dec 2014 20:08:47 +0000 (12:08 -0800)
We are trying to replace Skia's NaN checker with our own in Mozilla,
so it would be nice to have to patch a single place by making sure
these NaN checks used SkScalarIsNaN().

BUG=skia:

Review URL: https://codereview.chromium.org/809443002

include/core/SkPoint.h
include/core/SkRect.h
include/core/SkScalar.h

index 323c824..4a97391 100644 (file)
@@ -357,11 +357,11 @@ struct SK_API SkPoint {
         accum *= fY;
 
         // accum is either NaN or it is finite (zero).
-        SkASSERT(0 == accum || !(accum == accum));
+        SkASSERT(0 == accum || SkScalarIsNaN(accum));
 
         // value==value will be true iff value is not NaN
         // TODO: is it faster to say !accum or accum==accum?
-        return accum == accum;
+        return !SkScalarIsNaN(accum);
     }
 
     /**
index 394e45d..0038c7c 100644 (file)
@@ -455,11 +455,11 @@ struct SK_API SkRect {
         accum *= fBottom;
 
         // accum is either NaN or it is finite (zero).
-        SkASSERT(0 == accum || !(accum == accum));
+        SkASSERT(0 == accum || SkScalarIsNaN(accum));
 
         // value==value will be true iff value is not NaN
         // TODO: is it faster to say !accum or accum==accum?
-        return accum == accum;
+        return !SkScalarIsNaN(accum);
     }
 
     SkScalar    x() const { return fLeft; }
index e0490e2..94c3ce1 100644 (file)
@@ -127,7 +127,7 @@ static inline bool SkScalarIsFinite(SkScalar x) {
     SkScalar prod = x * 0;
     // At this point, prod will either be NaN or 0
     // Therefore we can return (prod == prod) or (0 == prod).
-    return prod == prod;
+    return !SkScalarIsNaN(prod);
 }
 
 /**