mrglavas 2004/09/30 20:43:22
Modified: java/src/org/apache/xerces/impl/dv/xs DoubleDV.java
FloatDV.java
Log:
Avoid creating objects when testing whether two
doubles or floats are identical. We can determine
whether two 0.0' values are identical by examining
their bits.
Revision Changes Path
1.10 +9 -5 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DoubleDV.java
Index: DoubleDV.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/DoubleDV.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- DoubleDV.java 30 Sep 2004 19:35:19 -0000 1.9
+++ DoubleDV.java 1 Oct 2004 03:43:21 -0000 1.10
@@ -103,11 +103,15 @@
return true;
}
- Double d1 = new Double(value);
- Double d2 = new Double(val.value);
+ if (value == val.value) {
+ return (value != 0.0d ||
+ (Double.doubleToLongBits(value) ==
Double.doubleToLongBits(val.value)));
+ }
- //Double values of 0.0 and -0.0 return false for Double#equals method
- return d1.equals(d2);
+ if (value != value && val.value != val.value)
+ return true;
+
+ return false;
}
private int compareTo(XDouble val) {
1.10 +9 -5 xml-xerces/java/src/org/apache/xerces/impl/dv/xs/FloatDV.java
Index: FloatDV.java
===================================================================
RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/dv/xs/FloatDV.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- FloatDV.java 30 Sep 2004 19:35:19 -0000 1.9
+++ FloatDV.java 1 Oct 2004 03:43:21 -0000 1.10
@@ -104,11 +104,15 @@
return true;
}
- Float f1 = new Float(value);
- Float f2 = new Float(val.value);
+ if (value == val.value) {
+ return (value != 0.0f ||
+ (Float.floatToIntBits(value) ==
Float.floatToIntBits(val.value)));
+ }
- //Float values of 0.0 and -0.0 return false for Float#equals method
- return f1.equals(f2);
+ if (value != value && val.value != val.value)
+ return true;
+
+ return false;
}
private int compareTo(XFloat val) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]