diff options
author | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-20 00:06:11 +0000 |
---|---|---|
committer | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-04-20 00:06:11 +0000 |
commit | 0749076760a34a2d6df11647cabbb7b3d2750765 (patch) | |
tree | 3445ad0de038ba6d533d5820552dfe986c5d94d5 /libjava | |
parent | 86c0b62954b6cd9b4b8f173323c77664327322ce (diff) | |
download | gcc-0749076760a34a2d6df11647cabbb7b3d2750765.tar.gz |
* interpret-run.cc [insn_breakpoint]: Save the original
insn for the breakpoint before posting the JVMTI notification.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123985 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 5 | ||||
-rw-r--r-- | libjava/interpret-run.cc | 11 |
2 files changed, 11 insertions, 5 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index eb74cf830cd..6e916a71b63 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2007-04-19 Keith Seitz <keiths@redhat.com> + + * interpret-run.cc [insn_breakpoint]: Save the original + insn for the breakpoint before posting the JVMTI notification. + 2007-04-19 Tom Tromey <tromey@redhat.com> * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.h: Rebuilt. diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc index b8c88af7827..649b1bd2486 100644 --- a/libjava/interpret-run.cc +++ b/libjava/interpret-run.cc @@ -2600,18 +2600,19 @@ details. */ Thread *thread = Thread::currentThread (); JNIEnv *jni_env = _Jv_GetCurrentJNIEnv (); - _Jv_JVMTI_PostEvent (JVMTI_EVENT_BREAKPOINT, thread, jni_env, - method, location); - - // Continue execution + // Save the insn here since the breakpoint could be removed + // before the JVMTI notification returns. using namespace gnu::gcj::jvmti; Breakpoint *bp = BreakpointManager::getBreakpoint (reinterpret_cast<jlong> (method), location); JvAssert (bp != NULL); - pc_t opc = reinterpret_cast<pc_t> (bp->getInsn ()); + _Jv_JVMTI_PostEvent (JVMTI_EVENT_BREAKPOINT, thread, jni_env, + method, location); + + // Continue execution #ifdef DIRECT_THREADED goto *(opc->insn); #else |