From 3308c46e47a0b17d37b4c29a130e6519c424a737 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Thu, 29 Aug 2002 17:53:28 +0000 Subject: jvm.h (struct _Jv_frame_info): New structure. * include/jvm.h (struct _Jv_frame_info): New structure. * gnu/gcj/runtime/natNameFinder.cc: Include StringBuffer.h, java-interp.h. (lookupInterp): New method. (getAddrAsString): Use _Jv_frame_info. (dladdrLookup): Likewise. * gnu/gcj/runtime/NameFinder.java (lookup): Try to look up interpreted frame. (lookupInterp): Declare. * java/lang/natVMThrowable.cc: Include Thread.h, java-interp.h. (fillInStackTrace): Collect information on interpreted frames. Use _Jv_frame_info. * interpret.cc: Include Thread.h. (run): Create and push _Jv_MethodChain object. (_Jv_EndOfInterpreter): New global. * java/lang/Thread.java (interp_frame): New field. * include/java-interp.h (struct _Jv_MethodChain): New structure. Include NameFinder.h. From-SVN: r56657 --- libjava/include/java-interp.h | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'libjava/include/java-interp.h') diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h index de1d88f..e3f9671 100644 --- a/libjava/include/java-interp.h +++ b/libjava/include/java-interp.h @@ -13,6 +13,7 @@ details. */ #include #include +#include #ifdef INTERPRETER @@ -138,6 +139,7 @@ class _Jv_InterpMethod : public _Jv_MethodBase friend class _Jv_ClassReader; friend class _Jv_BytecodeVerifier; + friend class gnu::gcj::runtime::NameFinder; friend void _Jv_PrepareClass(jclass); }; @@ -205,6 +207,28 @@ public: } }; +// A structure of this type is used to link together interpreter +// invocations on the stack. +struct _Jv_MethodChain +{ + const _Jv_InterpMethod *self; + _Jv_MethodChain **ptr; + _Jv_MethodChain *next; + + _Jv_MethodChain (const _Jv_InterpMethod *s, _Jv_MethodChain **n) + { + self = s; + ptr = n; + next = *n; + *n = this; + } + + ~_Jv_MethodChain () + { + *ptr = next; + } +}; + #endif /* INTERPRETER */ #endif /* __JAVA_INTERP_H__ */ -- cgit v1.1