From f031b5d726721fa544501f29866a483845445d85 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Tue, 16 Jan 2007 19:54:16 +0000 Subject: [PATCH] natVMVirtualMachine.cc (DEFINE_CALLBACK): New macro. * gnu/classpath/jdwp/natVMVirtualMachine.cc (DEFINE_CALLBACK): New macro. (ENABLE_EVENT): New macro. (initialize): Define and enable JVMTI VM_INIT callback. (jdwpVMInitCB): New function. From-SVN: r120833 --- libjava/ChangeLog | 8 ++++++ .../gnu/classpath/jdwp/natVMVirtualMachine.cc | 25 +++++++++++++++++++ 2 files changed, 33 insertions(+) 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 + + * 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 * 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 #include +#include #include #include #include #include +#include #include #include @@ -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 (&_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); + gnu::classpath::jdwp::Jdwp::notify (new VmInitEvent (init_thread)); +} -- 2.30.2