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
This commit is contained in:
parent
ce4e997039
commit
3308c46e47
8 changed files with 160 additions and 11 deletions
|
@ -13,6 +13,7 @@ details. */
|
|||
|
||||
#include <jvm.h>
|
||||
#include <java-cpool.h>
|
||||
#include <gnu/gcj/runtime/NameFinder.h>
|
||||
|
||||
#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__ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue