aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2007-01-25 00:40:45 +0000
committerKeith Seitz <kseitz@gcc.gnu.org>2007-01-25 00:40:45 +0000
commitc422af91adbec73a52b9c5d39edc7d916c2a974c (patch)
tree834b5c670bb4dfe1154b6c6ad668f8be9b37c68b /libjava
parent3c727a410ce674ef1310b86238efb7a83aafff31 (diff)
downloadgcc-c422af91adbec73a52b9c5d39edc7d916c2a974c.zip
gcc-c422af91adbec73a52b9c5d39edc7d916c2a974c.tar.gz
gcc-c422af91adbec73a52b9c5d39edc7d916c2a974c.tar.bz2
interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h...
* interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h, gnu/gcj/jvmti/BreakpointManager.h, jvmti.h, and jvmti-int.h * interpret-run.cc: Implement insn_breakpoint. From-SVN: r121155
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/interpret-run.cc29
-rw-r--r--libjava/interpret.cc7
3 files changed, 39 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 6b6749d..cfd061a 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,5 +1,11 @@
2007-01-24 Keith Seitz <keiths@redhat.com>
+ * interpret.cc: Include gnu/gcj/jvmti/Breakpoint.h,
+ gnu/gcj/jvmti/BreakpointManager.h, jvmti.h, and jvmti-int.h
+ * interpret-run.cc: Implement insn_breakpoint.
+
+2007-01-24 Keith Seitz <keiths@redhat.com>
+
* prims.cc (_Jv_RunMain): Send JVMTI event notifications
for VM_INIT and VM_DEATH instead of the JDWP notifications.
diff --git a/libjava/interpret-run.cc b/libjava/interpret-run.cc
index 26cc4a6..95037903 100644
--- a/libjava/interpret-run.cc
+++ b/libjava/interpret-run.cc
@@ -1,6 +1,6 @@
// interpret-run.cc - Code to interpret bytecode
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation
This file is part of libgcj.
@@ -2466,7 +2466,32 @@ details. */
insn_breakpoint:
{
- // nothing just yet
+ JvAssert (JVMTI_REQUESTED_EVENT (Breakpoint));
+
+ // Send JVMTI notification
+ using namespace ::java::lang;
+ jmethodID method = meth->self;
+ jlocation location = meth->insn_index (pc - 1);
+ Thread *thread = Thread::currentThread ();
+ JNIEnv *jni_env = _Jv_GetCurrentJNIEnv ();
+
+ _Jv_JVMTI_PostEvent (JVMTI_EVENT_BREAKPOINT, thread, jni_env,
+ method, location);
+
+ // Continue execution
+ 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 ());
+
+#ifdef DIRECT_THREADED
+ goto *(opc->insn);
+#else
+ goto *(insn_target[*opc]);
+#endif
}
}
catch (java::lang::Throwable *ex)
diff --git a/libjava/interpret.cc b/libjava/interpret.cc
index dc63cc8..075a15a 100644
--- a/libjava/interpret.cc
+++ b/libjava/interpret.cc
@@ -1,6 +1,6 @@
// interpret.cc - Code for the interpreter
-/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation
+/* Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 Free Software Foundation
This file is part of libgcj.
@@ -37,7 +37,12 @@ details. */
#include <execution.h>
#include <java/lang/reflect/Modifier.h>
+#include <jvmti.h>
+#include "jvmti-int.h"
+
#include <gnu/classpath/jdwp/Jdwp.h>
+#include <gnu/gcj/jvmti/Breakpoint.h>
+#include <gnu/gcj/jvmti/BreakpointManager.h>
#ifdef INTERPRETER