From 0373367fb3b002cd8688cd35315e3d27571a61a0 Mon Sep 17 00:00:00 2001 From: motse Date: Sun, 6 Nov 2005 14:01:10 +0000 Subject: [PATCH] VMjdwp/VMjvmti new makefile entries --- src/native/include/Makefile.am | 8 +- src/native/jvmti/Makefile.am | 6 +- src/native/jvmti/VMjdwp.c | 347 +++++++++++++++++++++++++++++++++ src/native/jvmti/dbg.h | 51 +++++ src/native/jvmti/jvmti.c | 7 +- src/native/vm/Makefile.am | 5 +- src/native/vm/VMjvmti.c | 242 +++++++++++++++++++++++ 7 files changed, 657 insertions(+), 9 deletions(-) create mode 100644 src/native/jvmti/VMjdwp.c create mode 100644 src/native/jvmti/dbg.h create mode 100644 src/native/vm/VMjvmti.c diff --git a/src/native/include/Makefile.am b/src/native/include/Makefile.am index df3af50ee..8bbb60337 100644 --- a/src/native/include/Makefile.am +++ b/src/native/include/Makefile.am @@ -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 \ diff --git a/src/native/jvmti/Makefile.am b/src/native/jvmti/Makefile.am index ed6fb7753..0cf911a8f 100644 --- a/src/native/jvmti/Makefile.am +++ b/src/native/jvmti/Makefile.am @@ -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 index 000000000..6f646ac99 --- /dev/null +++ b/src/native/jvmti/VMjdwp.c @@ -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 index 000000000..43d0aeeb6 --- /dev/null +++ b/src/native/jvmti/dbg.h @@ -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 + +#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 + diff --git a/src/native/jvmti/jvmti.c b/src/native/jvmti/jvmti.c index ae8471e92..91312887a 100644 --- a/src/native/jvmti/jvmti.c +++ b/src/native/jvmti/jvmti.c @@ -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; } diff --git a/src/native/vm/Makefile.am b/src/native/vm/Makefile.am index 738ee13e9..1538432cd 100644 --- a/src/native/vm/Makefile.am +++ b/src/native/vm/Makefile.am @@ -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 index 000000000..0ac1c41a5 --- /dev/null +++ b/src/native/vm/VMjvmti.c @@ -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: + */ -- 2.25.1