summaryrefslogtreecommitdiffstats
path: root/libjava/include/java-stack.h
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-09 19:58:05 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-09 19:58:05 +0000
commit65bf3316cf384588453604be6b4f0ed3751a8b0f (patch)
tree996a5f57d4a68c53473382e45cb22f574cb3e4db /libjava/include/java-stack.h
parent8fc56618a84446beccd45b80381cdfe0e94050df (diff)
downloadppe42-gcc-65bf3316cf384588453604be6b4f0ed3751a8b0f.tar.gz
ppe42-gcc-65bf3316cf384588453604be6b4f0ed3751a8b0f.zip
Merged gcj-eclipse branch to trunk.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120621 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/include/java-stack.h')
-rw-r--r--libjava/include/java-stack.h29
1 files changed, 26 insertions, 3 deletions
diff --git a/libjava/include/java-stack.h b/libjava/include/java-stack.h
index b9cf09a551c..d4d63d74342 100644
--- a/libjava/include/java-stack.h
+++ b/libjava/include/java-stack.h
@@ -30,10 +30,22 @@ details. */
using namespace gnu::gcj::runtime;
using namespace java::lang;
+extern "Java"
+{
+ namespace gnu
+ {
+ namespace classpath
+ {
+ class VMStackWalker;
+ }
+ }
+}
+
enum _Jv_FrameType
{
frame_native,
- frame_interpreter
+ frame_interpreter,
+ frame_proxy
};
#ifdef INTERPRETER
@@ -56,6 +68,10 @@ struct _Jv_StackFrame
_Jv_InterpFrameInfo interp;
#endif
struct {
+ jclass proxyClass;
+ _Jv_Method *proxyMethod;
+ };
+ struct {
void *ip;
void *start_ip;
};
@@ -85,12 +101,14 @@ struct _Jv_UnwindState
length = ln;
pos = 0;
frames = NULL;
+#ifdef INTERPRETER
Thread *thread = Thread::currentThread();
// Check for NULL currentThread(), in case an exception is created
// very early during the runtime startup.
-#ifdef INTERPRETER
if (thread)
interp_frame = (_Jv_InterpFrame *) thread->interp_frame;
+ else
+ interp_frame = NULL;
#endif
trace_function = NULL;
trace_data = NULL;
@@ -117,6 +135,8 @@ private:
static _Unwind_Reason_Code calling_class_trace_fn (_Jv_UnwindState *state);
static _Unwind_Reason_Code non_system_trace_fn (_Jv_UnwindState *state);
static _Unwind_Reason_Code accesscontrol_trace_fn (_Jv_UnwindState *state);
+ static _Unwind_Reason_Code stackwalker_trace_fn (_Jv_UnwindState *state);
+ static _Unwind_Reason_Code stackwalker_nnl_trace_fn (_Jv_UnwindState *state);
public:
static _Jv_StackTrace *GetStackTrace (void);
@@ -125,11 +145,14 @@ public:
java::lang::Throwable *throwable);
static jclass GetCallingClass (jclass);
static void GetCallerInfo (jclass checkClass, jclass *, _Jv_Method **);
- static JArray<jclass> *GetClassContext (jclass checkClass);
static ClassLoader *GetFirstNonSystemClassLoader (void);
static jobjectArray GetAccessControlStack ();
+ static JArray<jclass> *GetStackWalkerStack ();
+ static jclass GetStackWalkerCallingClass ();
+ static ClassLoader *GetStackWalkerFirstNonNullLoader ();
friend jclass _Jv_GetMethodDeclaringClass (jmethodID);
+ friend class gnu::classpath::VMStackWalker;
};
// Information about a given address.
OpenPOWER on IntegriCloud