From c65110e44cc6aed93ee2e576d864e09a3bea59e3 Mon Sep 17 00:00:00 2001 From: Keith Seitz Date: Wed, 24 Jan 2007 22:35:43 +0000 Subject: [PATCH] * gnu/classpath/jdwp/natVMVirtualMachine.cc (getAllClassMethods): Implement. From-SVN: r121142 --- libjava/ChangeLog | 5 +++ .../gnu/classpath/jdwp/natVMVirtualMachine.cc | 34 +++++++++++++++++-- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 18720f4f003..a69d1da2021 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2007-01-24 Keith Seitz + + * gnu/classpath/jdwp/natVMVirtualMachine.cc + (getAllClassMethods): Implement. + 2007-01-24 Andrew Haley * gnu/classpath/natVMStackWalker.cc: Call InitClass everywhere. 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 * -- 2.30.2