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
This commit is contained in:
@@ -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,
|
||||
|
||||
@@ -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__ */
|
||||
|
||||
@@ -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);
|
||||
|
||||
+1
-2
@@ -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";
|
||||
|
||||
@@ -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 {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user