diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 79ab55511e6..212e9aa2aac 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,5 +1,10 @@ 2000-04-20 Tom Tromey + Fix for PR libgcj/212: + * gcj/javaprims.h (_Jv_word, _Jv_word2): Removed definitions. + * include/jvm.h (_Jv_word, _Jv_word2): Define. + * java/lang/Class.h (_Jv_word): Declare. + * jni.cc (_Jv_JNI_PopSystemFrame): Clear `env->ex'. 2000-04-19 Tom Tromey diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h index 4216b4c0a98..3e7d2e2f0b7 100644 --- a/libjava/gcj/javaprims.h +++ b/libjava/gcj/javaprims.h @@ -1,6 +1,6 @@ // javaprims.h - Main external header file for libgcj. -*- c++ -*- -/* Copyright (C) 1998, 1999 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000 Free Software Foundation This file is part of libgcj. @@ -278,36 +278,6 @@ extern "C" void _Jv_Free (void*); typedef unsigned short _Jv_ushort __attribute__((__mode__(__HI__))); typedef unsigned int _Jv_uint __attribute__((__mode__(__SI__))); -typedef union { - jobject o; - jint i; // Also stores smaller integral types. - jfloat f; - jint ia[1]; // Half of _Jv_word2. - void* p; - - // We use __LP64__ and not SIZEOF_VOID_P here because we want - // something that will be predefined by the compiler. FIXME -- this - // definition probably shouldn't appear here anyway. -#ifdef __LP64__ - // We can safely put a long or a double in here without increasing - // the size of _Jv_Word; we take advantage of this in the interpreter. - jlong l; - jdouble d; -#endif - - jclass clazz; - jstring string; - struct _Jv_Field *field; - struct _Jv_Utf8Const *utf8; - struct _Jv_ResolvedMethod *rmethod; -} _Jv_word; - -typedef union { - jint ia[2]; - jlong l; - jdouble d; -} _Jv_word2; - struct _Jv_Utf8Const { _Jv_ushort hash; diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h index 625a11e2148..c9cae936932 100644 --- a/libjava/include/jvm.h +++ b/libjava/include/jvm.h @@ -31,6 +31,35 @@ struct _Jv_VTable void *method[1]; }; +union _Jv_word +{ + jobject o; + jint i; // Also stores smaller integral types. + jfloat f; + jint ia[1]; // Half of _Jv_word2. + void* p; + +#if SIZEOF_VOID_P == 8 + // We can safely put a long or a double in here without increasing + // the size of _Jv_Word; we take advantage of this in the interpreter. + jlong l; + jdouble d; +#endif + + jclass clazz; + jstring string; + struct _Jv_Field *field; + struct _Jv_Utf8Const *utf8; + struct _Jv_ResolvedMethod *rmethod; +}; + +union _Jv_word2 +{ + jint ia[2]; + jlong l; + jdouble d; +}; + /* Extract a character from a Java-style Utf8 string. * PTR points to the current character. * LIMIT points to the end of the Utf8 string. diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h index bad71b524b7..c25398cbb23 100644 --- a/libjava/java/lang/Class.h +++ b/libjava/java/lang/Class.h @@ -50,6 +50,7 @@ enum struct _Jv_Field; struct _Jv_VTable; +union _Jv_word; struct _Jv_Constants {