From 161a649cb95838bb373e2bcdaab050d2215c9754 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Thu, 25 Jan 2007 21:05:18 +0000 Subject: [PATCH] jvmti-int.h (_Jv_GetJDWP_JVMTIEnv): Declare. * include/jvmti-int.h (_Jv_GetJDWP_JVMTIEnv): Declare. * gnu/classpath/jdwp/natVMVirtualMachine.cc (_Jv_GetJDWP_JVMTIEnv): New function. * gnu/classpath/jdwp/natVMMethod.cc (getName): Implement. (getSignature): Implement. (getModifiers): Implement. From-SVN: r121185 --- libjava/ChangeLog | 9 ++++++ libjava/gnu/classpath/jdwp/natVMMethod.cc | 30 +++++++++++++++---- .../gnu/classpath/jdwp/natVMVirtualMachine.cc | 6 ++++ libjava/include/jvmti-int.h | 5 +++- 4 files changed, 43 insertions(+), 7 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index eb99fdf1060..37d61bcbb29 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,12 @@ +2007-01-25 Keith Seitz + + * include/jvmti-int.h (_Jv_GetJDWP_JVMTIEnv): Declare. + * gnu/classpath/jdwp/natVMVirtualMachine.cc + (_Jv_GetJDWP_JVMTIEnv): New function. + * gnu/classpath/jdwp/natVMMethod.cc (getName): Implement. + (getSignature): Implement. + (getModifiers): Implement. + 2007-01-25 Andrew Haley * configure, Makefile.in, include/config.h.in: Rebuilt. diff --git a/libjava/gnu/classpath/jdwp/natVMMethod.cc b/libjava/gnu/classpath/jdwp/natVMMethod.cc index 7dea4747731..07d5622c704 100644 --- a/libjava/gnu/classpath/jdwp/natVMMethod.cc +++ b/libjava/gnu/classpath/jdwp/natVMMethod.cc @@ -1,6 +1,6 @@ // natVMMethod.cc -- native support for VMMethod -/* Copyright (C) 2006 Free Software Foundation +/* Copyright (C) 2006, 2007 Free Software Foundation This file is part of libgcj. @@ -11,28 +11,46 @@ details. */ #include #include #include +#include +#include "jvmti-int.h" #include #include #include #include -java::lang::String* +jstring gnu::classpath::jdwp::VMMethod::getName () { - return NULL; + jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv (); + jmethodID method = reinterpret_cast (_methodId); + char *name; + env->GetMethodName (method, &name, NULL, NULL); + jstring string = JvNewStringUTF (name); + env->Deallocate (reinterpret_cast (name)); + return string; } -java::lang::String* +jstring gnu::classpath::jdwp::VMMethod::getSignature () { - return NULL; + jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv (); + jmethodID method = reinterpret_cast (_methodId); + char *signature; + env->GetMethodName (method, NULL, &signature, NULL); + jstring string = JvNewStringUTF (signature); + env->Deallocate (reinterpret_cast (signature)); + return string; } jint gnu::classpath::jdwp::VMMethod::getModifiers () { - return 0; + jvmtiEnv *env = _Jv_GetJDWP_JVMTIEnv (); + jmethodID method = reinterpret_cast (_methodId); + jint flags; + env->GetMethodModifiers (method, &flags); + return flags; } gnu::classpath::jdwp::util::LineTable * diff --git a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc index afdfbc72cef..ef4fe281d2f 100644 --- a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc +++ b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc @@ -48,6 +48,12 @@ static void JNICALL jdwpVMInitCB (jvmtiEnv *, JNIEnv *, jthread); // JVMTI environment static jvmtiEnv *_jdwp_jvmtiEnv; +jvmtiEnv * +_Jv_GetJDWP_JVMTIEnv (void) +{ + return _jdwp_jvmtiEnv; +} + void gnu::classpath::jdwp::VMVirtualMachine::initialize () { diff --git a/libjava/include/jvmti-int.h b/libjava/include/jvmti-int.h index f88b4ce0a3a..822163afa0d 100644 --- a/libjava/include/jvmti-int.h +++ b/libjava/include/jvmti-int.h @@ -1,5 +1,5 @@ /* jvmti-int.h -- Internal JVMTI definitions - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2007 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -82,4 +82,7 @@ namespace JVMTI For speed, this function should only be called after JVMTI_REQUESTED_EVENT is checked. */ extern void _Jv_JVMTI_PostEvent (jvmtiEvent type, jthread event_thread, ...); +// Returns the jvmtiEnv used by the JDWP backend +extern jvmtiEnv *_Jv_GetJDWP_JVMTIEnv (void); + #endif /* __GCJ_JVMTI_INT_H__ */