summaryrefslogtreecommitdiff
path: root/libjava/java/lang/natDouble.cc
diff options
context:
space:
mode:
authoraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>1999-04-14 07:10:22 +0000
committeraph <aph@138bc75d-0d04-0410-961f-82ee72b054a4>1999-04-14 07:10:22 +0000
commit3650db84dd26d6a79ef2a681ee12ade918e4d59e (patch)
tree12fffb0f268659e2bad0fdb565a63469eab56f80 /libjava/java/lang/natDouble.cc
parente5b236105943540d88161f10c71afd2bc128381f (diff)
downloadgcc-3650db84dd26d6a79ef2a681ee12ade918e4d59e.tar.gz
1999-04-14 Andrew Haley <aph@cygnus.com>
* java/lang/natDouble.java (doubleToLongBits): ensure that all NaNs are always converted to the same long value. * java/lang/natFloat.java (floatToIntBits): ditto, but for float converted to int. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26439 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang/natDouble.cc')
-rw-r--r--libjava/java/lang/natDouble.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/libjava/java/lang/natDouble.cc b/libjava/java/lang/natDouble.cc
index 17990884751..8d8c7883ba4 100644
--- a/libjava/java/lang/natDouble.cc
+++ b/libjava/java/lang/natDouble.cc
@@ -47,6 +47,13 @@ java::lang::Double::doubleToLongBits(jdouble value)
{
union u u;
u.d = value;
+
+ jlong e = u.l & 0x7ff0000000000000LL;
+ jlong f = u.l & 0x000fffffffffffffLL;
+
+ if (e == 0x7ff0000000000000LL && f != 0L)
+ u.l = 0x7ff8000000000000LL;
+
return u.l;
}