From 52fdc9b5d9e8e868a066146571d364c470986061 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Fri, 20 Apr 2007 00:06:11 +0000 Subject: interpret-run.cc [...]: Save the original insn for the breakpoint before posting the JVMTI notification. * interpret-run.cc [insn_breakpoint]: Save the original insn for the breakpoint before posting the JVMTI notification. From-SVN: r123985 --- libjava/ChangeLog | 5 +++++ libjava/interpret-run.cc | 11 ++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index eb74cf8..6e916a7 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2007-04-19 Keith Seitz + + * interpret-run.cc [insn_breakpoint]: Save the original + insn for the breakpoint before posting the JVMTI notification. + 2007-04-19 Tom Tromey * gnu/javax/net/ssl/provider/SSLSocketFactoryImpl.h: Rebuilt. diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc index b8c88af..649b1bd 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 (method), location); JvAssert (bp != NULL); - pc_t opc = reinterpret_cast (bp->getInsn ()); + _Jv_JVMTI_PostEvent (JVMTI_EVENT_BREAKPOINT, thread, jni_env, + method, location); + + // Continue execution #ifdef DIRECT_THREADED goto *(opc->insn); #else -- cgit v1.1