| // natFloat.cc - Implementation of java.lang.VMFloat native methods. |
| |
| /* Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation |
| |
| This file is part of libgcj. |
| |
| This software is copyrighted work licensed under the terms of the |
| Libgcj License. Please consult the file "LIBGCJ_LICENSE" for |
| details. */ |
| |
| #include <config.h> |
| |
| #include <java/lang/Float.h> |
| #include <java/lang/VMFloat.h> |
| #include <jvm.h> |
| |
| union u |
| { |
| jint l; |
| jfloat d; |
| }; |
| |
| jint |
| java::lang::VMFloat::floatToIntBits(jfloat value) |
| { |
| union u u; |
| u.d = value; |
| jint e = u.l & 0x7f800000; |
| jint f = u.l & 0x007fffff; |
| |
| if (e == 0x7f800000 && f != 0) |
| u.l = 0x7fc00000; |
| |
| return u.l; |
| } |
| |
| jint |
| java::lang::VMFloat::floatToRawIntBits(jfloat value) |
| { |
| union u u; |
| u.d = value; |
| return u.l; |
| } |
| |
| jfloat |
| java::lang::VMFloat::intBitsToFloat(jint bits) |
| { |
| union u u; |
| u.l = bits; |
| return u.d; |
| } |
| |