diff options
author | Kyle Galloway <kgallowa@redhat.com> | 2007-04-23 17:30:29 +0000 |
---|---|---|
committer | Kyle Galloway <kgallowa@gcc.gnu.org> | 2007-04-23 17:30:29 +0000 |
commit | d76473618c43c7a073359a300113fa5cf21fd999 (patch) | |
tree | 81048b7fa6e216d50f6149770c8a5fe429e8072d /libjava/include | |
parent | 34a7526e36dae962cea221b99fb4124b79895fce (diff) | |
download | gcc-d76473618c43c7a073359a300113fa5cf21fd999.zip gcc-d76473618c43c7a073359a300113fa5cf21fd999.tar.gz gcc-d76473618c43c7a073359a300113fa5cf21fd999.tar.bz2 |
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
Diffstat (limited to 'libjava/include')
-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 |