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
This commit is contained in:
Keith Seitz 2007-01-16 19:54:16 +00:00 committed by Keith Seitz
parent 016a2390f2
commit f031b5d726
2 changed files with 33 additions and 0 deletions

View file

@ -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.

View file

@ -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));
}