diff options
author | Bryce McKinlay <mckinlay@redhat.com> | 2004-04-20 01:38:46 +0000 |
---|---|---|
committer | Bryce McKinlay <bryce@gcc.gnu.org> | 2004-04-20 02:38:46 +0100 |
commit | f531010820afc86bde3e7d4b98850ee51c735de5 (patch) | |
tree | de88ceabf2ba85e265495894813895ad9f7f43cb /libjava/include/java-interp.h | |
parent | 712faa50dd829c2e813a7169ef71ec20a6465666 (diff) | |
download | gcc-f531010820afc86bde3e7d4b98850ee51c735de5.zip gcc-f531010820afc86bde3e7d4b98850ee51c735de5.tar.gz gcc-f531010820afc86bde3e7d4b98850ee51c735de5.tar.bz2 |
class.c (make_class_data): Add new field aux_info.
2004-04-19 Bryce McKinlay <mckinlay@redhat.com>
* class.c (make_class_data): Add new field aux_info.
* decl.c (java_init_decl_processing): Push type and decl for
`aux_info'.
2004-04-19 Bryce McKinlay <mckinlay@redhat.com>
* gcj/cni.h (JvAllocObject): Remove these obsolete,
undocumented CNI calls.
* include/java-interp.h (_Jv_InterpClass): No longer
extends java.lang.Class.
* java/lang/Class.h (Class): Add new field `aux_info'.
* boehm.cc (_Jv_MarkObj): Update java.lang.Class marking.
* defineclass.cc: Remove Class<->_Jv_InterpClass casts.
Use Class->aux_info instead.
* jni.cc (_Jv_JNI_AllocObject): Use _Jv_AllocObject.
* resolve.cc: Remove Class<->_Jv_InterpClass casts.
Use Class->aux_info instead.
* java/io/natObjectInputStream.cc (allocateObject): Use
_Jv_AllocObject.
* java/lang/natClass.cc (newInstance): Likewise.
* java/lang/natClassLoader.cc (_Jv_NewClass): Likewise.
* java/lang/natObject.cc (clone): Likewise.
* java/lang/reflect/natMethod.cc (_Jv_CallAnyMethodA): Likewise.
* java/lang/natVMClassLoader.cc (defineClass): Don't use
JvAllocObject. Allocate klass->aux_info here for interpreted
class.
From-SVN: r80875
Diffstat (limited to 'libjava/include/java-interp.h')
-rw-r--r-- | libjava/include/java-interp.h | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h index 94acfae..c57c146 100644 --- a/libjava/include/java-interp.h +++ b/libjava/include/java-interp.h @@ -22,7 +22,6 @@ details. */ #include <java/lang/Class.h> #include <java/lang/ClassLoader.h> #include <java/lang/reflect/Modifier.h> -#include <gnu/gcj/runtime/StackTrace.h> extern "C" { #include <ffi.h> @@ -80,7 +79,7 @@ class _Jv_MethodBase { protected: // The class which defined this method. - _Jv_InterpClass *defining_class; + jclass defining_class; // The method description. _Jv_Method *self; @@ -150,6 +149,7 @@ class _Jv_InterpMethod : public _Jv_MethodBase friend class _Jv_BytecodeVerifier; friend class gnu::gcj::runtime::NameFinder; friend class gnu::gcj::runtime::StackTrace; + friend void _Jv_PrepareClass(jclass); @@ -158,7 +158,7 @@ class _Jv_InterpMethod : public _Jv_MethodBase #endif }; -class _Jv_InterpClass : public java::lang::Class +class _Jv_InterpClass { _Jv_MethodBase **interpreted_methods; _Jv_ushort *field_initializers; @@ -185,13 +185,15 @@ extern inline void _Jv_Defer_Resolution (void *cl, _Jv_Method *meth, void **address) { int i; - _Jv_InterpClass *self = (_Jv_InterpClass *)cl; + jclass self = (jclass) cl; + _Jv_InterpClass *interp_cl = (_Jv_InterpClass*) self->aux_info; + for (i = 0; i < self->method_count; i++) { _Jv_Method *m = &self->methods[i]; if (m == meth) { - _Jv_MethodBase *imeth = self->interpreted_methods[i]; + _Jv_MethodBase *imeth = interp_cl->interpreted_methods[i]; *address = imeth->deferred; imeth->deferred = address; return; |