mirror of git://gcc.gnu.org/git/gcc.git
* gnu/classpath/jdwp/natVMVirtualMachine.cc
(jdwpBreakpointCB): New function. (jdwpVMInitCB): Define and enable the breakpoint callback. From-SVN: r121889
This commit is contained in:
parent
b3a00d65b8
commit
a13c5b70a4
|
@ -1,3 +1,10 @@
|
||||||
|
2007-02-13 Keith Seitz <keiths@redhat.com>
|
||||||
|
|
||||||
|
* gnu/classpath/jdwp/natVMVirtualMachine.cc
|
||||||
|
(jdwpBreakpointCB): New function.
|
||||||
|
(jdwpVMInitCB): Define and enable the breakpoint
|
||||||
|
callback.
|
||||||
|
|
||||||
2007-02-13 Andrew Haley <aph@redhat.com>
|
2007-02-13 Andrew Haley <aph@redhat.com>
|
||||||
|
|
||||||
* testsuite/libjava.lang/Divide_2.out
|
* testsuite/libjava.lang/Divide_2.out
|
||||||
|
|
|
@ -15,8 +15,6 @@ details. */
|
||||||
#include <jvm.h>
|
#include <jvm.h>
|
||||||
#include <jvmti.h>
|
#include <jvmti.h>
|
||||||
|
|
||||||
#include <java-interp.h>
|
|
||||||
|
|
||||||
#include <java/lang/Class.h>
|
#include <java/lang/Class.h>
|
||||||
#include <java/lang/ClassLoader.h>
|
#include <java/lang/ClassLoader.h>
|
||||||
#include <java/lang/Integer.h>
|
#include <java/lang/Integer.h>
|
||||||
|
@ -34,6 +32,7 @@ details. */
|
||||||
#include <gnu/classpath/jdwp/VMFrame.h>
|
#include <gnu/classpath/jdwp/VMFrame.h>
|
||||||
#include <gnu/classpath/jdwp/VMMethod.h>
|
#include <gnu/classpath/jdwp/VMMethod.h>
|
||||||
#include <gnu/classpath/jdwp/VMVirtualMachine.h>
|
#include <gnu/classpath/jdwp/VMVirtualMachine.h>
|
||||||
|
#include <gnu/classpath/jdwp/event/BreakpointEvent.h>
|
||||||
#include <gnu/classpath/jdwp/event/ClassPrepareEvent.h>
|
#include <gnu/classpath/jdwp/event/ClassPrepareEvent.h>
|
||||||
#include <gnu/classpath/jdwp/event/EventManager.h>
|
#include <gnu/classpath/jdwp/event/EventManager.h>
|
||||||
#include <gnu/classpath/jdwp/event/EventRequest.h>
|
#include <gnu/classpath/jdwp/event/EventRequest.h>
|
||||||
|
@ -71,6 +70,8 @@ struct step_info
|
||||||
static Location *get_request_location (EventRequest *);
|
static Location *get_request_location (EventRequest *);
|
||||||
static gnu::classpath::jdwp::event::filters::StepFilter *
|
static gnu::classpath::jdwp::event::filters::StepFilter *
|
||||||
get_request_step_filter (EventRequest *);
|
get_request_step_filter (EventRequest *);
|
||||||
|
static void JNICALL jdwpBreakpointCB (jvmtiEnv *, JNIEnv *, jthread,
|
||||||
|
jmethodID, jlocation);
|
||||||
static void JNICALL jdwpClassPrepareCB (jvmtiEnv *, JNIEnv *, jthread, jclass);
|
static void JNICALL jdwpClassPrepareCB (jvmtiEnv *, JNIEnv *, jthread, jclass);
|
||||||
static void JNICALL jdwpThreadEndCB (jvmtiEnv *, JNIEnv *, jthread);
|
static void JNICALL jdwpThreadEndCB (jvmtiEnv *, JNIEnv *, jthread);
|
||||||
static void JNICALL jdwpThreadStartCB (jvmtiEnv *, JNIEnv *, jthread);
|
static void JNICALL jdwpThreadStartCB (jvmtiEnv *, JNIEnv *, jthread);
|
||||||
|
@ -643,6 +644,29 @@ throw_jvmti_error (jvmtiError err)
|
||||||
throw new JdwpInternalErrorException (msg);
|
throw new JdwpInternalErrorException (msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void JNICALL
|
||||||
|
jdwpBreakpointCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
|
||||||
|
jthread thread, jmethodID method, jlocation location)
|
||||||
|
{
|
||||||
|
jclass klass;
|
||||||
|
jvmtiError err;
|
||||||
|
err = env->GetMethodDeclaringClass (method, &klass);
|
||||||
|
JvAssert (err == JVMTI_ERROR_NONE);
|
||||||
|
|
||||||
|
using namespace gnu::classpath::jdwp;
|
||||||
|
|
||||||
|
jlong methodId = reinterpret_cast<jlong> (method);
|
||||||
|
VMMethod *meth = VMVirtualMachine::getClassMethod (klass, methodId);
|
||||||
|
Location *loc = new Location (meth, location);
|
||||||
|
JvAssert (thread->frame.frame_type == frame_interpreter);
|
||||||
|
_Jv_InterpFrame *iframe
|
||||||
|
= reinterpret_cast<_Jv_InterpFrame *> (thread->interp_frame);
|
||||||
|
jobject instance = iframe->get_this_ptr ();
|
||||||
|
event::BreakpointEvent *event
|
||||||
|
= new event::BreakpointEvent (thread, loc, instance);
|
||||||
|
Jdwp::notify (event);
|
||||||
|
}
|
||||||
|
|
||||||
static void JNICALL
|
static void JNICALL
|
||||||
jdwpClassPrepareCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
|
jdwpClassPrepareCB (jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
|
||||||
jthread thread, jclass klass)
|
jthread thread, jclass klass)
|
||||||
|
@ -703,6 +727,7 @@ jdwpVMInitCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
|
||||||
{
|
{
|
||||||
// The VM is now initialized, add our callbacks
|
// The VM is now initialized, add our callbacks
|
||||||
jvmtiEventCallbacks callbacks;
|
jvmtiEventCallbacks callbacks;
|
||||||
|
DEFINE_CALLBACK (callbacks, Breakpoint);
|
||||||
DEFINE_CALLBACK (callbacks, ClassPrepare);
|
DEFINE_CALLBACK (callbacks, ClassPrepare);
|
||||||
DEFINE_CALLBACK (callbacks, ThreadEnd);
|
DEFINE_CALLBACK (callbacks, ThreadEnd);
|
||||||
DEFINE_CALLBACK (callbacks, ThreadStart);
|
DEFINE_CALLBACK (callbacks, ThreadStart);
|
||||||
|
@ -710,6 +735,7 @@ jdwpVMInitCB (MAYBE_UNUSED jvmtiEnv *env, MAYBE_UNUSED JNIEnv *jni_env,
|
||||||
_jdwp_jvmtiEnv->SetEventCallbacks (&callbacks, sizeof (callbacks));
|
_jdwp_jvmtiEnv->SetEventCallbacks (&callbacks, sizeof (callbacks));
|
||||||
|
|
||||||
// Enable callbacks
|
// Enable callbacks
|
||||||
|
ENABLE_EVENT (BREAKPOINT, NULL);
|
||||||
ENABLE_EVENT (CLASS_PREPARE, NULL);
|
ENABLE_EVENT (CLASS_PREPARE, NULL);
|
||||||
ENABLE_EVENT (THREAD_END, NULL);
|
ENABLE_EVENT (THREAD_END, NULL);
|
||||||
ENABLE_EVENT (THREAD_START, NULL);
|
ENABLE_EVENT (THREAD_START, NULL);
|
||||||
|
|
Loading…
Reference in New Issue