Commit f619dcab by Ranjit Mathew Committed by Ranjit Mathew

re PR java/19738 (gcjh generates invalid class member floating-point initialisers)

	PR java/19738
	* gjavah.c (jni_print_float): Do not emit floating-point
	initialiser for a static final field.
	(jni_print_double): Likewise.

From-SVN: r94553
parent cc95a845
2005-02-02 Ranjit Mathew <rmathew@hotmail.com>
PR java/19738
* gjavah.c (jni_print_float): Do not emit floating-point
initialiser for a static final field.
(jni_print_double): Likewise.
2005-02-01 Mark Mitchell <mark@codesourcery.com> 2005-02-01 Mark Mitchell <mark@codesourcery.com>
Revert: Revert:
......
/* Program to write C++-suitable header files from a Java(TM) .class /* Program to write C++-suitable header files from a Java(TM) .class
file. This is similar to SUN's javah. file. This is similar to SUN's javah.
Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Copyright (C) 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -281,19 +281,22 @@ jni_print_float (FILE *stream, jfloat f) ...@@ -281,19 +281,22 @@ jni_print_float (FILE *stream, jfloat f)
work in data initializers. FIXME. */ work in data initializers. FIXME. */
if (JFLOAT_FINITE (f)) if (JFLOAT_FINITE (f))
{ {
fputs (flag_jni ? " " : " = ", out); if (flag_jni)
if (f.negative) {
putc ('-', stream); fputs (" ", out);
if (f.exponent) if (f.negative)
fprintf (stream, "0x1.%.6xp%+df", putc ('-', stream);
((unsigned int)f.mantissa) << 1, if (f.exponent)
f.exponent - JFLOAT_EXP_BIAS); fprintf (stream, "0x1.%.6xp%+df",
else ((unsigned int)f.mantissa) << 1,
/* Exponent of 0x01 is -125; exponent of 0x00 is *also* -125, f.exponent - JFLOAT_EXP_BIAS);
because the implicit leading 1 bit is no longer present. */ else
fprintf (stream, "0x0.%.6xp%+df", /* Exponent of 0x01 is -125; exponent of 0x00 is *also* -125,
((unsigned int)f.mantissa) << 1, because the implicit leading 1 bit is no longer present. */
f.exponent + 1 - JFLOAT_EXP_BIAS); fprintf (stream, "0x0.%.6xp%+df",
((unsigned int)f.mantissa) << 1,
f.exponent + 1 - JFLOAT_EXP_BIAS);
}
} }
if (! flag_jni) if (! flag_jni)
fputs (";\n", stream); fputs (";\n", stream);
...@@ -307,19 +310,22 @@ jni_print_double (FILE *stream, jdouble f) ...@@ -307,19 +310,22 @@ jni_print_double (FILE *stream, jdouble f)
work in data initializers. FIXME. */ work in data initializers. FIXME. */
if (JDOUBLE_FINITE (f)) if (JDOUBLE_FINITE (f))
{ {
fputs (flag_jni ? " " : " = ", out); if (flag_jni)
if (f.negative) {
putc ('-', stream); fputs (" ", out);
if (f.exponent) if (f.negative)
fprintf (stream, "0x1.%.5x%.8xp%+d", putc ('-', stream);
f.mantissa0, f.mantissa1, if (f.exponent)
f.exponent - JDOUBLE_EXP_BIAS); fprintf (stream, "0x1.%.5x%.8xp%+d",
else f.mantissa0, f.mantissa1,
/* Exponent of 0x001 is -1022; exponent of 0x000 is *also* -1022, f.exponent - JDOUBLE_EXP_BIAS);
because the implicit leading 1 bit is no longer present. */ else
fprintf (stream, "0x0.%.5x%.8xp%+d", /* Exponent of 0x001 is -1022; exponent of 0x000 is *also* -1022,
f.mantissa0, f.mantissa1, because the implicit leading 1 bit is no longer present. */
f.exponent + 1 - JDOUBLE_EXP_BIAS); fprintf (stream, "0x0.%.5x%.8xp%+d",
f.mantissa0, f.mantissa1,
f.exponent + 1 - JDOUBLE_EXP_BIAS);
}
} }
fputs (flag_jni ? "\n" : ";\n", stream); fputs (flag_jni ? "\n" : ";\n", stream);
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment