aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Tromey <tromey@redhat.com>2005-08-17 20:44:10 +0000
committerTom Tromey <tromey@gcc.gnu.org>2005-08-17 20:44:10 +0000
commit97b51fd08ea84c07be2c7fea17210453eef46371 (patch)
tree3d74be0649ef589d515a0e04062b5e30115e5b80
parent87bb8864f6fa4ca966e8a57aa4828d51b3f9cc72 (diff)
downloadgcc-97b51fd08ea84c07be2c7fea17210453eef46371.zip
gcc-97b51fd08ea84c07be2c7fea17210453eef46371.tar.gz
gcc-97b51fd08ea84c07be2c7fea17210453eef46371.tar.bz2
class.c (make_class_data): Always emit JV_STATE_PRELOADING for class' initial state.
gcc/java: * class.c (make_class_data): Always emit JV_STATE_PRELOADING for class' initial state. libjava: * java/lang/Class.h (_Jv_IsBinaryCompatibilityABI): Declare as friend. * include/jvm.h (_Jv_IsBinaryCompatibilityABI): New function. * testsuite/libjava.lang/bclink.java: New file. * testsuite/libjava.lang/bclink.out: New file. * link.cc (print_class_loaded): Changed ABI test to look at various _syms fields. From-SVN: r103225
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/class.c10
-rw-r--r--libjava/ChangeLog10
-rw-r--r--libjava/include/jvm.h9
-rw-r--r--libjava/java/lang/Class.h2
-rw-r--r--libjava/link.cc3
-rw-r--r--libjava/testsuite/libjava.lang/bclink.java12
-rw-r--r--libjava/testsuite/libjava.lang/bclink.out0
8 files changed, 42 insertions, 9 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 07dfc5b..0ecfd8f 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2005-08-16 Tom Tromey <tromey@redhat.com>
+
+ * class.c (make_class_data): Always emit JV_STATE_PRELOADING for
+ class' initial state.
+
2005-08-16 Ranjit Mathew <rmathew@hotmail.com>
PR java/22113
diff --git a/gcc/java/class.c b/gcc/java/class.c
index 21945eb..a089112 100644
--- a/gcc/java/class.c
+++ b/gcc/java/class.c
@@ -1860,13 +1860,9 @@ make_class_data (tree type)
PUSH_FIELD_VALUE (cons, "loader", null_pointer_node);
PUSH_FIELD_VALUE (cons, "interface_count",
build_int_cst (NULL_TREE, interface_len));
- PUSH_FIELD_VALUE
- (cons, "state",
- convert (byte_type_node,
- build_int_cst (NULL_TREE,
- flag_indirect_dispatch
- ? JV_STATE_PRELOADING
- : JV_STATE_COMPILED)));
+ PUSH_FIELD_VALUE (cons, "state",
+ convert (byte_type_node,
+ build_int_cst (NULL_TREE, JV_STATE_PRELOADING)));
PUSH_FIELD_VALUE (cons, "thread", null_pointer_node);
PUSH_FIELD_VALUE (cons, "depth", integer_zero_node);
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 47e3718..915c2ff 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,13 @@
+2005-08-17 Tom Tromey <tromey@redhat.com>
+
+ * java/lang/Class.h (_Jv_IsBinaryCompatibilityABI): Declare as
+ friend.
+ * include/jvm.h (_Jv_IsBinaryCompatibilityABI): New function.
+ * testsuite/libjava.lang/bclink.java: New file.
+ * testsuite/libjava.lang/bclink.out: New file.
+ * link.cc (print_class_loaded): Changed ABI test to look at
+ various _syms fields.
+
2005-08-17 Andreas Tobler <a.tobler@schweiz.ch>
* testsuite/libjava.jacks/jacks.xfail: Remove 15.21-assoc-7,
diff --git a/libjava/include/jvm.h b/libjava/include/jvm.h
index 606a84d..459d459 100644
--- a/libjava/include/jvm.h
+++ b/libjava/include/jvm.h
@@ -621,4 +621,13 @@ _Jv_IsInterpretedClass (jclass c)
return (c->accflags & java::lang::reflect::Modifier::INTERPRETED) != 0;
}
+// Return true if the class was compiled with the BC ABI.
+extern inline jboolean
+_Jv_IsBinaryCompatibilityABI (jclass c)
+{
+ // There isn't really a better test for the ABI type at this point,
+ // that will work once the class has been registered.
+ return c->otable_syms || c->atable_syms || c->itable_syms;
+}
+
#endif /* __JAVA_JVM_H__ */
diff --git a/libjava/java/lang/Class.h b/libjava/java/lang/Class.h
index 01a653e..a2ec357 100644
--- a/libjava/java/lang/Class.h
+++ b/libjava/java/lang/Class.h
@@ -235,6 +235,7 @@ jboolean _Jv_CheckAccess (jclass self_klass, jclass other_klass,
jclass _Jv_GetArrayClass (jclass klass, java::lang::ClassLoader *loader);
jboolean _Jv_IsInterpretedClass (jclass);
+jboolean _Jv_IsBinaryCompatibilityABI (jclass);
void _Jv_CopyClassesToSystemLoader (java::lang::ClassLoader *);
@@ -470,6 +471,7 @@ private:
java::lang::ClassLoader *loader);
friend jboolean (::_Jv_IsInterpretedClass) (jclass);
+ friend jboolean (::_Jv_IsBinaryCompatibilityABI) (jclass);
#ifdef INTERPRETER
friend void ::_Jv_InitField (jobject, jclass, int);
diff --git a/libjava/link.cc b/libjava/link.cc
index e97b31b..5411f4a 100644
--- a/libjava/link.cc
+++ b/libjava/link.cc
@@ -1659,11 +1659,10 @@ _Jv_Linker::print_class_loaded (jclass klass)
if (codesource == NULL)
codesource = "<no code source>";
- // We use a somewhat bogus test for the ABI here.
char *abi;
if (_Jv_IsInterpretedClass (klass))
abi = "bytecode";
- else if (klass->state == JV_STATE_PRELOADING)
+ else if (_Jv_IsBinaryCompatibilityABI (klass))
abi = "BC-compiled";
else
abi = "pre-compiled";
diff --git a/libjava/testsuite/libjava.lang/bclink.java b/libjava/testsuite/libjava.lang/bclink.java
new file mode 100644
index 0000000..b10c678
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bclink.java
@@ -0,0 +1,12 @@
+// This tests that a C++ ABI class can derive from a BC ABI class.
+// This can't always work, but if the base class does not change then
+// it will work fine.
+
+import org.xml.sax.*;
+
+public class bclink extends SAXParseException {
+ public bclink() { super ("hi", null); }
+
+ public static void main(String[] args) throws Throwable {
+ }
+}
diff --git a/libjava/testsuite/libjava.lang/bclink.out b/libjava/testsuite/libjava.lang/bclink.out
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/libjava/testsuite/libjava.lang/bclink.out