summaryrefslogtreecommitdiffstats
path: root/libjava/stacktrace.cc
diff options
context:
space:
mode:
authorbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2005-03-16 18:18:59 +0000
committerbryce <bryce@138bc75d-0d04-0410-961f-82ee72b054a4>2005-03-16 18:18:59 +0000
commit42ecb5a44a291cfe9508b9775dc34634760c2dae (patch)
tree9871e263b817e18744f4503c39a8704b9cf723fd /libjava/stacktrace.cc
parentfb45b4c382262d59f797b828131f3e0c0d25ad84 (diff)
downloadppe42-gcc-42ecb5a44a291cfe9508b9775dc34634760c2dae.tar.gz
ppe42-gcc-42ecb5a44a291cfe9508b9775dc34634760c2dae.zip
2005-03-15 Andreas Tobler <a.tobler@schweiz.ch>
* stacktrace.cc (_Jv_StackTrace::UnwindTraceFn): Protect interpreter-specific code with #ifdef INTERPRETER. (_Jv_StackTrace::getLineNumberForFrame): Likewise. (_Jv_StackTrace::FillInFrameInfo): Likewise. (_Jv_StackTrace::non_system_trace_fn): Likewise. * include/java-stack.h (struct _Jv_InterpFrameInfo): Protect with #ifdef INTERPRETER. Also protect declarations that use it. * java/lang/Class.h: Move _Jv_StackTrace friend declaration outside #ifdef INTERPRETER block. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@96571 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/stacktrace.cc')
-rw-r--r--libjava/stacktrace.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/libjava/stacktrace.cc b/libjava/stacktrace.cc
index 19123e23597..6484dc6008d 100644
--- a/libjava/stacktrace.cc
+++ b/libjava/stacktrace.cc
@@ -120,6 +120,7 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr)
// the java code and not the interpreter itself. This assumes a 1:1
// correspondance between call frames in the interpreted stack and occurances
// of _Jv_InterpMethod::run() on the native stack.
+#ifdef INTERPRETER
if (func_addr == (_Unwind_Ptr) &_Jv_InterpMethod::run)
{
state->frames[pos].type = frame_interpreter;
@@ -128,6 +129,7 @@ _Jv_StackTrace::UnwindTraceFn (struct _Unwind_Context *context, void *state_ptr)
state->interp_frame = state->interp_frame->next;
}
else
+#endif
{
state->frames[pos].type = frame_native;
state->frames[pos].ip = (void *) _Unwind_GetIP (context);
@@ -174,6 +176,7 @@ void
_Jv_StackTrace::getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder,
jstring *sourceFileName, jint *lineNum)
{
+#ifdef INTERPRETER
if (frame->type == frame_interpreter)
{
_Jv_InterpMethod *interp_meth = frame->interp.meth;
@@ -183,6 +186,7 @@ _Jv_StackTrace::getLineNumberForFrame(_Jv_StackFrame *frame, NameFinder *finder,
*lineNum = interp_meth->get_source_line(frame->interp.pc);
return;
}
+#endif
// Use dladdr() to determine in which binary the address IP resides.
#if defined (HAVE_DLFCN_H) && defined (HAVE_DLADDR)
extern char **_Jv_argv;
@@ -245,12 +249,14 @@ _Jv_StackTrace::FillInFrameInfo (_Jv_StackFrame *frame)
}
}
}
+#ifdef INTERPRETER
else if (frame->type == frame_interpreter)
{
_Jv_InterpMethod *interp_meth = frame->interp.meth;
klass = interp_meth->defining_class;
meth = interp_meth->self;
}
+#endif
else
JvFail ("Unknown frame type");
@@ -495,11 +501,13 @@ _Jv_StackTrace::non_system_trace_fn (_Jv_UnwindState *state)
if (frame->klass)
{
classLoader = frame->klass->getClassLoaderInternal();
+#ifdef INTERPRETER
if (classLoader != NULL && classLoader != ClassLoader::systemClassLoader)
{
state->trace_data = (void *) classLoader;
return _URC_NORMAL_STOP;
}
+#endif
}
return _URC_NO_REASON;
OpenPOWER on IntegriCloud