aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/gcj/javaprims.h32
-rw-r--r--libjava/include/jvm.h29
-rw-r--r--libjava/java/lang/Class.h1
4 files changed, 36 insertions, 31 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 79ab555..212e9aa 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,10 @@
2000-04-20 Tom Tromey <tromey@cygnus.com>
+ 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 <tromey@cygnus.com>
diff --git a/libjava/gcj/javaprims.h b/libjava/gcj/javaprims.h
index 4216b4c..3e7d2e2 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 625a11e..c9cae93 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 bad71b5..c25398c 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
{