You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by eg...@apache.org on 2009/05/08 08:24:21 UTC

svn commit: r772857 - in /harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang: Double.java Float.java

Author: egor
Date: Fri May  8 06:24:21 2009
New Revision: 772857

URL: http://svn.apache.org/viewvc?rev=772857&view=rev
Log:
Branching optimization for Float and Double compare.

Modified:
    harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java
    harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java?rev=772857&r1=772856&r2=772857&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Double.java Fri May  8 06:24:21 2009
@@ -365,11 +365,9 @@
         // Deal with +0.0 and -0.0
         long d1 = doubleToRawLongBits(double1);
         long d2 = doubleToRawLongBits(double2);
-
-        if (d1 == d2) {
-            return 0;
-        }
-        return (d1 < d2) ? -1 : 1;
+        // The below expression is equivalent to:
+        // (d1 == d2) ? 0 : (d1 < d2) ? -1 : 1
+        return (int) ((d1 >> 63) - (d2 >> 63));
     }
 
     /**

Modified: harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java?rev=772857&r1=772856&r2=772857&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java (original)
+++ harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/Float.java Fri May  8 06:24:21 2009
@@ -369,11 +369,10 @@
         // Deal with +0.0 and -0.0
         int f1 = floatToRawIntBits(float1);
         int f2 = floatToRawIntBits(float2);
-
-        if (f1 == f2) {
-            return 0;
-        }
-        return (f1 < f2) ? -1 : 1;
+        // The below expression is equivalent to:
+        // (f1 == f2) ? 0 : (f1 < f2) ? -1 : 1
+        // because f1 and f2 are either 0 or Integer.MIN_VALUE
+        return (f1 >> 31) - (f2 >> 31);
     }
 
     /**