diff options
author | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-16 19:54:16 +0000 |
---|---|---|
committer | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-16 19:54:16 +0000 |
commit | b3b932c0b9ae3afa8b445103e3d60c3b80e71ff1 (patch) | |
tree | 65090d6f38a04cf1fd76f39719f0560acc5a27bc | |
parent | 3300270f208cd3e1719beb3baee4e7186e9eb865 (diff) | |
download | gcc-b3b932c0b9ae3afa8b445103e3d60c3b80e71ff1.tar.gz |
* gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK):
New macro.
(ENABLE_EVENT): New macro.
(initialize): Define and enable JVMTI VM_INIT callback.
(jdwpVMInitCB): New function.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120833 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | libjava/ChangeLog | 8 | ||||
-rw-r--r-- | libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc | 25 |
2 files changed, 33 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index af8efa01383..b3b0908d566 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,11 @@ +2007-01-16 Keith Seitz <keiths@redhat.com> + + * gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK): + New macro. + (ENABLE_EVENT): New macro. + (initialize): Define and enable JVMTI VM_INIT callback. + (jdwpVMInitCB): New function. + 2007-01-16 Kyle Galloway <kgallowa@redhat.com> * jvmti.cc (_Jv_JVMTI_GetAllThreads): New function. diff --git a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc index 522204f0fd8..351bb23ccb2 100644 --- a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc +++ b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc @@ -24,10 +24,12 @@ details. */ #include <java/util/Hashtable.h> #include <java/util/Iterator.h> +#include <gnu/classpath/jdwp/Jdwp.h> #include <gnu/classpath/jdwp/VMFrame.h> #include <gnu/classpath/jdwp/VMMethod.h> #include <gnu/classpath/jdwp/VMVirtualMachine.h> #include <gnu/classpath/jdwp/event/EventRequest.h> +#include <gnu/classpath/jdwp/event/VmInitEvent.h> #include <gnu/classpath/jdwp/exception/JdwpInternalErrorException.h> #include <gnu/classpath/jdwp/util/MethodResult.h> @@ -35,6 +37,13 @@ using namespace java::lang; using namespace gnu::classpath::jdwp::event; using namespace gnu::classpath::jdwp::util; +// Forward declarations +static void jdwpVMInitCB (jvmtiEnv *env, JNIEnv *jni_env, jthread thread); + +#define DEFINE_CALLBACK(Cb,Event) Cb.Event = jdwp ## Event ## CB +#define ENABLE_EVENT(Event,Thread) \ + _jdwp_jvmtiEnv->SetEventNotificationMode (JVMTI_ENABLE, \ + JVMTI_EVENT_ ## Event, Thread) // JVMTI environment static jvmtiEnv *_jdwp_jvmtiEnv; @@ -44,6 +53,12 @@ gnu::classpath::jdwp::VMVirtualMachine::initialize () _jdwp_suspend_counts = new ::java::util::Hashtable (); JavaVM *vm = _Jv_GetJavaVM (); vm->GetEnv (reinterpret_cast<void **> (&_jdwp_jvmtiEnv), JVMTI_VERSION_1_0); + + // Wait for VM_INIT to do more initialization + jvmtiEventCallbacks callbacks; + DEFINE_CALLBACK (callbacks, VMInit); + _jdwp_jvmtiEnv->SetEventCallbacks (&callbacks, sizeof (callbacks)); + ENABLE_EVENT (VM_INIT, NULL); } void @@ -343,3 +358,13 @@ gnu::classpath::jdwp::VMVirtualMachine::getSourceFile (jclass clazz) { return NULL; } + +static void +jdwpVMInitCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env, + jthread thread) +{ + // Send JDWP VMInit + using namespace gnu::classpath::jdwp::event; + Thread *init_thread = reinterpret_cast<Thread *> (thread); + gnu::classpath::jdwp::Jdwp::notify (new VmInitEvent (init_thread)); +} |