From e4c487986739946747113dcd3ff4ad8fe7a3eb91 Mon Sep 17 00:00:00 2001 From: kseitz Date: Wed, 24 Jan 2007 22:35:43 +0000 Subject: * gnu/classpath/jdwp/natVMVirtualMachine.cc (getAllClassMethods): Implement. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121142 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc | 34 +++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) (limited to 'libjava/gnu') diff --git a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc index 84b75ec386c..afdfbc72cef 100644 --- a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc +++ b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc @@ -301,9 +301,39 @@ getClassStatus (MAYBE_UNUSED jclass klass) JArray * gnu::classpath::jdwp::VMVirtualMachine:: -getAllClassMethods (MAYBE_UNUSED jclass klass) +getAllClassMethods (jclass klass) { - return NULL; + jint count; + jmethodID *methods; + jvmtiError err = _jdwp_jvmtiEnv->GetClassMethods (klass, &count, &methods); + if (err != JVMTI_ERROR_NONE) + { + char *error; + jstring msg; + if (_jdwp_jvmtiEnv->GetErrorName (err, &error) != JVMTI_ERROR_NONE) + { + msg = JvNewStringLatin1 (error); + _jdwp_jvmtiEnv->Deallocate ((unsigned char *) error); + } + else + msg = JvNewStringLatin1 ("out of memory"); + + using namespace gnu::classpath::jdwp::exception; + throw new JdwpInternalErrorException (msg); + } + + JArray *result + = (JArray *) JvNewObjectArray (count, + &VMMethod::class$, NULL); + VMMethod **rmeth = elements (result); + for (int i = 0; i < count; ++i) + { + jlong id = reinterpret_cast (methods[i]); + rmeth[i] = getClassMethod (klass, id); + } + + _jdwp_jvmtiEnv->Deallocate ((unsigned char *) methods); + return result; } gnu::classpath::jdwp::VMMethod * -- cgit v1.2.3