aboutsummaryrefslogtreecommitdiff
path: root/libjava/include/java-interp.h
diff options
context:
space:
mode:
Diffstat (limited to 'libjava/include/java-interp.h')
-rw-r--r--libjava/include/java-interp.h22
1 files changed, 20 insertions, 2 deletions
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
index ee45faa..8da0584 100644
--- a/libjava/include/java-interp.h
+++ b/libjava/include/java-interp.h
@@ -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