diff options
| author | Tom Tromey <tromey@redhat.com> | 2005-08-17 20:44:10 +0000 | 
|---|---|---|
| committer | Tom Tromey <tromey@gcc.gnu.org> | 2005-08-17 20:44:10 +0000 | 
| commit | 97b51fd08ea84c07be2c7fea17210453eef46371 (patch) | |
| tree | 3d74be0649ef589d515a0e04062b5e30115e5b80 | |
| parent | 87bb8864f6fa4ca966e8a57aa4828d51b3f9cc72 (diff) | |
| download | gcc-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/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/java/class.c | 10 | ||||
| -rw-r--r-- | libjava/ChangeLog | 10 | ||||
| -rw-r--r-- | libjava/include/jvm.h | 9 | ||||
| -rw-r--r-- | libjava/java/lang/Class.h | 2 | ||||
| -rw-r--r-- | libjava/link.cc | 3 | ||||
| -rw-r--r-- | libjava/testsuite/libjava.lang/bclink.java | 12 | ||||
| -rw-r--r-- | libjava/testsuite/libjava.lang/bclink.out | 0 | 
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  | 
