gcc/libjava/java/lang/natFloat.cc
Tom Tromey 855dd2bcff re PR java/22578 (should inline floatToIntBits et al)
gcc/java
	PR java/22578:
	* check-init.c (check_init): Handle VIEW_CONVERT_EXPR.
	* builtins.c (convert_real): New function.
	(java_builtins): Handle Float.intBitsToFloat,
	Float.floatToRawIntBits, Double.longBitsToDouble,
	Double.doubleToRawLongBits.
libjava
	PR java/22578:
	* gcj/javaprims.h: Updated.
	* sources.am, Makefile.in: Rebuilt.
	* java/lang/natDouble.cc (doubleToLongBits): Moved to VMDouble.
	(doubleToRawLongBits): Likewise.
	(longBitsToDouble): Likewise.
	(toString): Likewise.
	(parseDouble): Likewise.
	* java/lang/natFloat.cc (floatToIntBits): Moved to VMFloat.
	(floatToRawIntBits): Likewise.
	(intBitsToFloat): Likewise.
	* java/lang/VMDouble.java: New file.
	* java/lang/VMFloat.java: New file.
	* java/lang/Float.java, java/lang/Double.java: Removed.

From-SVN: r110759
2006-02-08 18:06:11 +00:00

53 lines
874 B
C++

// 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;
}