aboutsummaryrefslogtreecommitdiff
path: root/libjava/include/java-interp.h
diff options
context:
space:
mode:
authorTom Tromey <tromey@gcc.gnu.org>2007-01-09 19:58:05 +0000
committerTom Tromey <tromey@gcc.gnu.org>2007-01-09 19:58:05 +0000
commit97b8365cafc3a344a22d3980b8ed885f5c6d8357 (patch)
tree996a5f57d4a68c53473382e45cb22f574cb3e4db /libjava/include/java-interp.h
parentc648dedbde727ca3f883bb5fd773aa4af70d3369 (diff)
downloadgcc-97b8365cafc3a344a22d3980b8ed885f5c6d8357.zip
gcc-97b8365cafc3a344a22d3980b8ed885f5c6d8357.tar.gz
gcc-97b8365cafc3a344a22d3980b8ed885f5c6d8357.tar.bz2
Merged gcj-eclipse branch to trunk.
From-SVN: r120621
Diffstat (limited to 'libjava/include/java-interp.h')
-rw-r--r--libjava/include/java-interp.h27
1 files changed, 21 insertions, 6 deletions
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
index 74846c9..3b15b5c 100644
--- a/libjava/include/java-interp.h
+++ b/libjava/include/java-interp.h
@@ -45,6 +45,12 @@ int _Jv_count_arguments (_Jv_Utf8Const *signature,
jboolean staticp = true);
void _Jv_VerifyMethod (_Jv_InterpMethod *method);
void _Jv_CompileMethod (_Jv_InterpMethod* method);
+int _Jv_init_cif (_Jv_Utf8Const* signature,
+ int arg_count,
+ jboolean staticp,
+ ffi_cif *cif,
+ ffi_type **arg_types,
+ ffi_type **rtype_p);
/* the interpreter is written in C++, primarily because it makes it easy for
* the entire thing to be "friend" with class Class. */
@@ -312,18 +318,27 @@ public:
// The interpreted call stack, represented by a linked list of frames.
struct _Jv_InterpFrame
{
- _Jv_InterpMethod *self;
+ union
+ {
+ void *meth;
+ _Jv_InterpMethod *self;
+ _Jv_Method *proxyMethod;
+ };
java::lang::Thread *thread;
_Jv_InterpFrame *next;
- pc_t pc;
-
- _Jv_InterpFrame (_Jv_InterpMethod *s, java::lang::Thread *thr)
+ union
+ {
+ pc_t pc;
+ jclass proxyClass;
+ };
+
+ _Jv_InterpFrame (void *meth, java::lang::Thread *thr, jclass proxyClass = NULL)
{
- self = s;
+ this->meth = meth;
thread = thr;
next = (_Jv_InterpFrame *) thr->interp_frame;
thr->interp_frame = (gnu::gcj::RawData *) this;
- pc = NULL;
+ this->proxyClass = proxyClass;
}
~_Jv_InterpFrame ()