##
## Changes:
##
-## $Id: Makefile.am 3539 2005-11-03 20:18:51Z twisti $
+## $Id: Makefile.am 3588 2005-11-06 14:01:10Z motse $
## Process this file with automake to produce Makefile.in
java_lang_reflect_Field.h \
java_lang_reflect_Method.h \
java_nio_Buffer.h \
+ java_nio_ByteBuffer.h \
java_nio_DirectByteBufferImpl.h \
java_security_ProtectionDomain.h \
- java_util_Vector.h
+ java_util_Vector.h \
+ gnu_classpath_jdwp_VMFrame.h \
+ gnu_classpath_jdwp_VMVirtualMachine.h \
+ gnu_classpath_jdwp_event_EventRequest
ADDITIONAL_IMPLEMENTED_VM_CLASSES_HEADER_FILES = \
gnu_classpath_VMStackWalker.h \
##
## Changes:
##
-## $Id: Makefile.am 3066 2005-07-19 12:35:37Z twisti $
+## $Id: Makefile.am 3588 2005-11-06 14:01:10Z motse $
## Process this file with automake to produce Makefile.in
libjvmti_la_SOURCES = \
jvmti.c \
- jvmti.h
+ jvmti.h \
+ VMjdwp.c \
+ dbg.h
## Local variables:
--- /dev/null
+/* src/native/vm/VMjdwp.c - jvmti->jdwp interface
+
+ Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+ R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+ C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+ Institut f. Computersprachen - TU Wien
+
+ This file is part of CACAO.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ Contact: cacao@complang.tuwien.ac.at
+
+ Author: Martin Platter
+
+ Changes:
+
+
+ $Id: VMjdwp.c 3588 2005-11-06 14:01:10Z motse $
+
+*/
+
+#include "jvmti.h"
+#include "vm/loader.h"
+#include "vm/exceptions.h"
+#include "vm/jit/asmpart.h"
+
+static jmethodID notifymid = NULL;
+static jclass Jdwpclass = NULL;
+
+void notify (jobject event){
+ methodinfo *m;
+ if (notifymid == NULL) {
+ Jdwpclass =
+ load_class_from_sysloader(utf_new_char("gnu.classpath.jdwp.Jdwp"));
+ if (!Jdwpclass)
+ throw_main_exception_exit();
+
+ notifymid = class_resolveclassmethod(
+ Jdwpclass,
+ utf_new_char("notify"),
+ utf_new_char("(Lgnu.classpath.jdwp.event.Event;)V"),
+ class_java_lang_Object,
+ true);
+
+ if (!notifymid)
+ throw_main_exception_exit();
+ }
+
+ asm_calljavafunction(m, Jdwpclass, event, NULL, NULL);
+}
+
+
+static void SingleStep (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jlocation location) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void Breakpoint (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jlocation location) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void FieldAccess (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jlocation location,
+ jclass field_klass,
+ jobject object,
+ jfieldID field)
+{
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void FieldModification (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jlocation location,
+ jclass field_klass,
+ jobject object,
+ jfieldID field,
+ char signature_type,
+ jvalue new_value) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void FramePop (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jboolean was_popped_by_exception){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void MethodEntry (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void MethodExit (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jboolean was_popped_by_exception,
+ jvalue return_value){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void NativeMethodBind (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ void* address,
+ void** new_address_ptr){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void Exception (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jlocation location,
+ jobject exception,
+ jmethodID catch_method,
+ jlocation catch_location){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ExceptionCatch (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jmethodID method,
+ jlocation location,
+ jobject exception){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ThreadStart (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ThreadEnd (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ClassLoad (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jclass klass){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ClassPrepare (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jclass klass){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ClassFileLoadHook (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jclass class_being_redefined,
+ jobject loader,
+ const char* name,
+ jobject protection_domain,
+ jint class_data_len,
+ const unsigned char* class_data,
+ jint* new_class_data_len,
+ unsigned char** new_class_data){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void VMStart (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void VMInit (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void VMDeath (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+
+static void CompiledMethodLoad (jvmtiEnv *jvmti_env,
+ jmethodID method,
+ jint code_size,
+ const void* code_addr,
+ jint map_length,
+ const jvmtiAddrLocationMap* map,
+ const void* compile_info) {
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void CompiledMethodUnload (jvmtiEnv *jvmti_env,
+ jmethodID method,
+ const void* code_addr){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void DynamicCodeGenerated (jvmtiEnv *jvmti_env,
+ const char* name,
+ const void* address,
+ jint length){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void DataDumpRequest (jvmtiEnv *jvmti_env){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void MonitorContendedEnter (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jobject object){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void MonitorContendedEntered (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jobject object){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void MonitorWait (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jobject object,
+ jlong timeout){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void MonitorWaited (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jobject object,
+ jboolean timed_out){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void VMObjectAlloc (jvmtiEnv *jvmti_env,
+ JNIEnv* jni_env,
+ jthread thread,
+ jobject object,
+ jclass object_klass,
+ jlong size){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void ObjectFree (jvmtiEnv *jvmti_env,
+ jlong tag){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void GarbageCollectionStart (jvmtiEnv *jvmti_env){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+static void GarbageCollectionFinish (jvmtiEnv *jvmti_env){
+ log_text ("JVMTI-Event: IMPLEMENT ME!!!");
+}
+
+
+jvmtiEventCallbacks jvmti_jdwp_EventCallbacks = {
+ &VMInit,
+ &VMDeath,
+ &ThreadStart,
+ &ThreadEnd,
+ &ClassFileLoadHook,
+ &ClassLoad,
+ &ClassPrepare,
+ &VMStart,
+ &Exception,
+ &ExceptionCatch,
+ &SingleStep,
+ &FramePop,
+ &Breakpoint,
+ &FieldAccess,
+ &FieldModification,
+ &MethodEntry,
+ &MethodExit,
+ &NativeMethodBind,
+ &CompiledMethodLoad,
+ &CompiledMethodUnload,
+ &DynamicCodeGenerated,
+ &DataDumpRequest,
+ NULL,
+ &MonitorWait,
+ &MonitorWaited,
+ &MonitorContendedEnter,
+ &MonitorContendedEntered,
+ NULL,
+ NULL,
+ NULL,
+ NULL,
+ &GarbageCollectionStart,
+ &GarbageCollectionFinish,
+ &ObjectFree,
+ &VMObjectAlloc,
+};
+
+
+/*
+ * These are local overrides for various environment variables in Emacs.
+ * Please do not remove this and leave it at the end of the file, where
+ * Emacs will automagically detect them.
+ * ---------------------------------------------------------------------
+ * Local variables:
+ * mode: c
+ * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ */
--- /dev/null
+/* src/native/jvmti/linux-i386.h - jvmti os/architecture support
+
+ Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+ R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+ C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+ Institut f. Computersprachen - TU Wien
+
+ This file is part of CACAO.
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2, or (at
+ your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ Contact: cacao@complang.tuwien.ac.at
+
+ Author: Martin Platter
+
+ Changes:
+
+
+ $Id: dbg.h 3588 2005-11-06 14:01:10Z motse $
+
+*/
+
+/* at the moment linux/i386 is the only plattform available */
+#if defined(__LINUX__) && defined (__I386__)
+#include <sys/ptrace.h>
+
+#define TRACEME ptrace(PTRACE_TRACEME, 0, 0, 0)
+#define GETREGS(pid, regs) ptrace(PTRACE_GETREGS, pid, 0, ®s)
+#define GETMEM(pid, addr) ptrace(PTRACE_PEEKDATA, pid, (caddr_t) addr, 0)
+#define ENABLEBRK(pid,ins,addr) ptrace(PTRACE_POKEDATA, pid, (caddr_t) addr, (ins & ~0x000000FF) | 0xcc)
+#define CONT(pid) ptrace(PTRACE_CONT, pid, 0, 0)
+#define DISABLEBRK(pid,ins,addr) ptrace(PTRACE_POKEDATA, pid, (caddr_t) addr, ins)
+#define GETIP(pid,ip) ptrace(PTRACE_GETREGS, pid, 0, ®s); \
+ ip=regs.eip;
+#define SETIP(pid,ip) ip=regs.eip; \
+ ptrace(PTRACE_SETREGS, pid, 0, ®s);
+#endif
+
Changes:
- $Id: jvmti.c 3570 2005-11-04 16:58:36Z motse $
+ $Id: jvmti.c 3588 2005-11-06 14:01:10Z motse $
*/
static jvmtiError getcacaostacktrace(stackTraceBuffer** trace, jthread thread) {
/* todo: suspend specified thread */
-
+/*
if (!cacao_stacktrace_fillInStackTrace((void**)trace,&stackTraceCollector, (threadobject*)thread))
return JVMTI_ERROR_INTERNAL;
-
+*/
/* todo: resume specified thread */
+ log_text("todo: stacktraces");
return JVMTI_ERROR_NONE;
}
##
## Changes:
##
-## $Id: Makefile.am 3161 2005-09-10 14:31:12Z twisti $
+## $Id: Makefile.am 3588 2005-11-06 14:01:10Z motse $
## Process this file with automake to produce Makefile.in
VMSystemProperties.c \
VMThread.c \
VMThrowable.c \
- VMAccessController.c
+ VMAccessController.c \
+ VMjvmti.c
## Local variables:
--- /dev/null
+/* src/native/vm/VMjvmti.c - jdwp->jvmti interface
+
+Copyright (C) 1996-2005 R. Grafl, A. Krall, C. Kruegel, C. Oates,
+R. Obermaisser, M. Platter, M. Probst, S. Ring, E. Steiner,
+C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich, J. Wenninger,
+Institut f. Computersprachen - TU Wien
+
+This file is part of CACAO.
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License as
+published by the Free Software Foundation; either version 2, or (at
+your option) any later version.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+02111-1307, USA.
+
+Contact: cacao@complang.tuwien.ac.at
+
+Authors: Martin Platter
+
+Changes:
+
+
+$Id: VMjvmti.c 3588 2005-11-06 14:01:10Z motse $
+
+*/
+
+#include "toolbox/logging.h"
+#include "native/jni.h"
+#include "native/include/java_lang_Thread.h"
+#include "native/include/java_nio_ByteBuffer.h"
+#include "native/include/java_lang_Class.h"
+#include "native/include/java_lang_ClassLoader.h"
+#include "native/include/java_lang_reflect_Method.h"
+#include "native/include/gnu_classpath_jdwp_event_EventRequest.h"
+#include "native/include/gnu_classpath_jdwp_VMVirtualMachine.h"
+#include "native/jvmti/jvmti.h"
+
+
+/*
+ * Class: gnu_classpath_jdwp_VMVirtualMachine
+ * Method: suspendThread
+ * Signature: (Ljava/lang/Thread;)V
+ */
+JNIEXPORT void JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_suspendThread(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1)
+{
+ remotedbgjvmtienv->SuspendThread(remotedbgjvmtienv, (jthread) par1);
+}
+
+/*
+ * Class: gnu_classpath_jdwp_VMVirtualMachine
+ * Method: resumeThread
+ * Signature: (Ljava/lang/Thread;)V
+ */
+JNIEXPORT void JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_resumeThread(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1)
+{
+ remotedbgjvmtienv->ResumeThread(remotedbgjvmtienv, (jthread) par1);
+}
+
+
+/*
+ * Class: gnu_classpath_jdwp_VMVirtualMachine
+ * Method: getSuspendCount
+ * Signature: (Ljava/lang/Thread;)I
+ */
+JNIEXPORT s4 JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getSuspendCount(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+/*
+ * Class: gnu_classpath_jdwp_VMVirtualMachine
+ * Method: getAllLoadedClassesCount
+ * Signature: ()I
+ */
+JNIEXPORT s4 JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getAllLoadedClassesCount(JNIEnv *env, jclass clazz) {
+ jint count;
+ jclass* classes;
+
+ remotedbgjvmtienv->GetLoadedClasses(remotedbgjvmtienv, &count, &classes);
+ return count;
+}
+
+/* Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getClassStatus
+ * Signature: (Ljava/lang/Class;)I
+ */
+JNIEXPORT s4 JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getClassStatus(JNIEnv *env, jclass clazz, struct java_lang_Class* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getFrames
+ * Signature: (Ljava/lang/Thread;II)Ljava/util/ArrayList;
+ */
+JNIEXPORT struct java_util_ArrayList* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getFrames(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1, s4 par2, s4 par3) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getFrame
+ * Signature: (Ljava/lang/Thread;Ljava/nio/ByteBuffer;)Lgnu/classpath/jdwp/VMFrame;
+ */
+JNIEXPORT struct gnu_classpath_jdwp_VMFrame* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getFrame(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1, struct java_nio_ByteBuffer* par2) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getFrameCount
+ * Signature: (Ljava/lang/Thread;)I
+ */
+JNIEXPORT s4 JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getFrameCount(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getThreadStatus
+ * Signature: (Ljava/lang/Thread;)I
+ */
+JNIEXPORT s4 JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getThreadStatus(JNIEnv *env, jclass clazz, struct java_lang_Thread* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getLoadRequests
+ * Signature: (Ljava/lang/ClassLoader;)Ljava/util/ArrayList;
+ */
+JNIEXPORT struct java_util_ArrayList* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getLoadRequests(JNIEnv *env, jclass clazz, struct java_lang_ClassLoader* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: executeMethod
+ * Signature: (Ljava/lang/Object;Ljava/lang/Thread;Ljava/lang/Class;Ljava/lang/reflect/Method;[Ljava/lang/Object;Z)Lgnu/classpath/jdwp/util/MethodResult;
+ */
+JNIEXPORT struct gnu_classpath_jdwp_util_MethodResult* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_executeMethod(JNIEnv *env, jclass clazz, struct java_lang_Object* par1, struct java_lang_Thread* par2, struct java_lang_Class* par3, struct java_lang_reflect_Method* par4, java_objectarray* par5, s4 par6) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getVarTable
+ * Signature: (Ljava/lang/Class;Ljava/lang/reflect/Method;)Lgnu/classpath/jdwp/util/VariableTable;
+ */
+JNIEXPORT struct gnu_classpath_jdwp_util_VariableTable* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getVarTable(JNIEnv *env, jclass clazz, struct java_lang_Class* par1, struct java_lang_reflect_Method* par2) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getLineTable
+ * Signature: (Ljava/lang/Class;Ljava/lang/reflect/Method;)Lgnu/classpath/jdwp/util/LineTable;
+ */
+JNIEXPORT struct gnu_classpath_jdwp_util_LineTable* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getLineTable(JNIEnv *env, jclass clazz, struct java_lang_Class* par1, struct java_lang_reflect_Method* par2) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: getSourceFile
+ * Signature: (Ljava/lang/Class;)Ljava/lang/String;
+ */
+JNIEXPORT struct java_lang_String* JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_getSourceFile(JNIEnv *env, jclass clazz, struct java_lang_Class* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+ return 0;
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: registerEvent
+ * Signature: (Lgnu/classpath/jdwp/event/EventRequest;)V
+ */
+JNIEXPORT void JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_registerEvent(JNIEnv *env, jclass clazz, struct gnu_classpath_jdwp_event_EventRequest* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: unregisterEvent
+ * Signature: (Lgnu/classpath/jdwp/event/EventRequest;)V
+ */
+JNIEXPORT void JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_unregisterEvent(JNIEnv *env, jclass clazz, struct gnu_classpath_jdwp_event_EventRequest* par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+}
+
+
+/*
+ * Class: gnu/classpath/jdwp/VMVirtualMachine
+ * Method: clearEvents
+ * Signature: (B)V
+ */
+JNIEXPORT void JNICALL Java_gnu_classpath_jdwp_VMVirtualMachine_clearEvents(JNIEnv *env, jclass clazz, s4 par1) {
+ log_text ("JVMTI-Call: IMPLEMENT ME!!!");
+}
+
+
+/*
+ * These are local overrides for various environment variables in Emacs.
+ * Please do not remove this and leave it at the end of the file, where
+ * Emacs will automagically detect them.
+ * ---------------------------------------------------------------------
+ * Local variables:
+ * mode: c
+ * indent-tabs-mode: t
+ * c-basic-offset: 4
+ * tab-width: 4
+ * End:
+ */