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
This commit is contained in:
parent
3c727a410c
commit
c422af91ad
|
@ -1,3 +1,9 @@
|
||||||
|
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>
|
2007-01-24 Keith Seitz <keiths@redhat.com>
|
||||||
|
|
||||||
* prims.cc (_Jv_RunMain): Send JVMTI event notifications
|
* prims.cc (_Jv_RunMain): Send JVMTI event notifications
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// interpret-run.cc - Code to interpret bytecode
|
// 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.
|
This file is part of libgcj.
|
||||||
|
|
||||||
|
@ -2466,7 +2466,32 @@ details. */
|
||||||
|
|
||||||
insn_breakpoint:
|
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)
|
catch (java::lang::Throwable *ex)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
// interpret.cc - Code for the interpreter
|
// 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.
|
This file is part of libgcj.
|
||||||
|
|
||||||
|
@ -37,7 +37,12 @@ details. */
|
||||||
#include <execution.h>
|
#include <execution.h>
|
||||||
#include <java/lang/reflect/Modifier.h>
|
#include <java/lang/reflect/Modifier.h>
|
||||||
|
|
||||||
|
#include <jvmti.h>
|
||||||
|
#include "jvmti-int.h"
|
||||||
|
|
||||||
#include <gnu/classpath/jdwp/Jdwp.h>
|
#include <gnu/classpath/jdwp/Jdwp.h>
|
||||||
|
#include <gnu/gcj/jvmti/Breakpoint.h>
|
||||||
|
#include <gnu/gcj/jvmti/BreakpointManager.h>
|
||||||
|
|
||||||
#ifdef INTERPRETER
|
#ifdef INTERPRETER
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue