aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog8
-rw-r--r--libjava/include/java-interp.h2
-rw-r--r--libjava/interpret-run.cc5
3 files changed, 12 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index a66338cd4a4..c8c9aa54dc3 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,11 @@
+2007-04-30 Keith Seitz <keiths@redhat.com>
+
+ * interpret-run.cc (NEXT_INSN)[DEBUG]: Advance PC before
+ executing the instruction.
+ * include/java-interp.h (_Jv_InterpFrame::get_pc): Subtract
+ one insn from the frame's PC. _Jv_InterpMethod::run et al
+ will advance the PC before executing the instruction.
+
2007-04-27 Keith Seitz <keiths@redhat.com>
* classpath/lib/gnu/classpath/jdwp/Jdwp.class: Regenerated.
diff --git a/libjava/include/java-interp.h b/libjava/include/java-interp.h
index 8da0584af8e..4bded047bb3 100644
--- a/libjava/include/java-interp.h
+++ b/libjava/include/java-interp.h
@@ -465,7 +465,7 @@ public:
else
pc = *pc_ptr;
- return pc;
+ return pc - 1;
}
};
diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc
index f99ff5c706f..f95198186e7 100644
--- a/libjava/interpret-run.cc
+++ b/libjava/interpret-run.cc
@@ -348,15 +348,16 @@ details. */
#define NEXT_INSN \
do \
{ \
+ pc_t insn = pc++; \
if (JVMTI_REQUESTED_EVENT (SingleStep)) \
{ \
JNIEnv *env = _Jv_GetCurrentJNIEnv (); \
jmethodID method = meth->self; \
- jlocation loc = meth->insn_index (pc); \
+ jlocation loc = meth->insn_index (insn); \
_Jv_JVMTI_PostEvent (JVMTI_EVENT_SINGLE_STEP, thread, \
env, method, loc); \
} \
- goto *((pc++)->insn); \
+ goto *(insn->insn); \
} \
while (0)