VMjdwp/VMjvmti new makefile entries
authormotse <none@none>
Sun, 6 Nov 2005 14:01:10 +0000 (14:01 +0000)
committermotse <none@none>
Sun, 6 Nov 2005 14:01:10 +0000 (14:01 +0000)
src/native/include/Makefile.am
src/native/jvmti/Makefile.am
src/native/jvmti/VMjdwp.c [new file with mode: 0644]
src/native/jvmti/dbg.h [new file with mode: 0644]
src/native/jvmti/jvmti.c
src/native/vm/Makefile.am
src/native/vm/VMjvmti.c [new file with mode: 0644]

index df3af50eeb75e0c18a5167ecfc2529831cc4f859..8bbb603378332a071894f4fb00bc92229d478da6 100644 (file)
@@ -28,7 +28,7 @@
 ##
 ## 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
 
@@ -68,9 +68,13 @@ GEN_HEADER_FILES = \
        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 \
index ed6fb7753c93264cca413c2d2e603b15d87e78cb..0cf911a8fde8ca027af9e6319d761680b4865261 100644 (file)
@@ -28,7 +28,7 @@
 ##
 ## 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
 
@@ -38,7 +38,9 @@ noinst_LTLIBRARIES = libjvmti.la
 
 libjvmti_la_SOURCES = \
        jvmti.c \
-       jvmti.h
+       jvmti.h \
+       VMjdwp.c \
+       dbg.h
 
 
 ## Local variables:
diff --git a/src/native/jvmti/VMjdwp.c b/src/native/jvmti/VMjdwp.c
new file mode 100644 (file)
index 0000000..6f646ac
--- /dev/null
@@ -0,0 +1,347 @@
+/* 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:
+ */
diff --git a/src/native/jvmti/dbg.h b/src/native/jvmti/dbg.h
new file mode 100644 (file)
index 0000000..43d0aee
--- /dev/null
@@ -0,0 +1,51 @@
+/* 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, &regs)
+#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, &regs); \
+                      ip=regs.eip;
+#define SETIP(pid,ip) ip=regs.eip; \
+                      ptrace(PTRACE_SETREGS, pid, 0, &regs); 
+#endif
+
index ae8471e92735b98a4b964210bfb9671b42202a36..91312887a4d95ceccf08199324c6b3167a69333c 100644 (file)
@@ -30,7 +30,7 @@
    Changes:             
 
    
-   $Id: jvmti.c 3570 2005-11-04 16:58:36Z motse $
+   $Id: jvmti.c 3588 2005-11-06 14:01:10Z motse $
 
 */
 
@@ -990,11 +990,12 @@ GetThreadGroupChildren (jvmtiEnv * env, jthreadGroup group,
 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;
 }
 
index 738ee13e9abed8ce235ab5dcd113084d9f34cb39..1538432cd70d5642e3892d426dade7fa0e2cc3cf 100644 (file)
@@ -28,7 +28,7 @@
 ##
 ## 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
 
@@ -51,7 +51,8 @@ libnativevm_la_SOURCES = \
        VMSystemProperties.c \
        VMThread.c \
        VMThrowable.c \
-       VMAccessController.c
+       VMAccessController.c \
+       VMjvmti.c
 
 
 ## Local variables:
diff --git a/src/native/vm/VMjvmti.c b/src/native/vm/VMjvmti.c
new file mode 100644 (file)
index 0000000..0ac1c41
--- /dev/null
@@ -0,0 +1,242 @@
+/* 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:
+ */