java-interp.h (_Jv_InterpFrame): Add pointer to the interpreter PC.

2007-04-23  Kyle Galloway  <kgallowa@redhat.com>

	* include/java-interp.h (_Jv_InterpFrame): Add pointer to the
	interpreter PC.
	(<init>): Add a pointer to the interpreter PC as a parameter with
	default value NULL.
	(get_pc): New method.
	* interpret-run.cc: If debugging, pass a pointer to the PC when
	creating the stack frame.
	* jvmti.cc (_Jv_JVMTI_GetStackTrace): Call _Jv_InterpFrame::get_pc
	to get the PC.

From-SVN: r124076
This commit is contained in:
Kyle Galloway 2007-04-23 17:30:29 +00:00 committed by Kyle Galloway
parent 34a7526e36
commit d76473618c
4 changed files with 40 additions and 5 deletions
libjava/include

View file

@ -422,6 +422,9 @@ public:
pc_t pc;
jclass proxyClass;
};
// Pointer to the actual pc value.
pc_t *pc_ptr;
//Debug info for local variables.
_Jv_word *locals;
@ -430,7 +433,8 @@ public:
// Object pointer for this frame ("this")
jobject obj_ptr;
_Jv_InterpFrame (void *meth, java::lang::Thread *thr, jclass proxyCls = NULL)
_Jv_InterpFrame (void *meth, java::lang::Thread *thr, jclass proxyCls = NULL,
pc_t *pc = NULL)
: _Jv_Frame (reinterpret_cast<_Jv_MethodBase *> (meth), thr,
frame_interpreter)
{
@ -438,6 +442,7 @@ public:
proxyClass = proxyCls;
thr->interp_frame = (gnu::gcj::RawData *) this;
obj_ptr = NULL;
pc_ptr = pc;
}
~_Jv_InterpFrame ()
@ -448,7 +453,20 @@ public:
jobject get_this_ptr ()
{
return obj_ptr;
}
}
pc_t get_pc ()
{
pc_t pc;
// If the PC_PTR is NULL, we are not debugging.
if (pc_ptr == NULL)
pc = 0;
else
pc = *pc_ptr;
return pc;
}
};
// A native frame in the call stack really just a placeholder