diff options
Diffstat (limited to 'libjava/include/java-interp.h')
-rw-r--r-- | libjava/include/java-interp.h | 22 |
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 |