diff options
Diffstat (limited to 'libjava')
| -rw-r--r-- | libjava/ChangeLog | 5 | ||||
| -rw-r--r-- | libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc | 34 | 
2 files changed, 37 insertions, 2 deletions
| diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 18720f4..a69d1da 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,8 @@ +2007-01-24  Keith Seitz  <keiths@redhat.com> + +	* gnu/classpath/jdwp/natVMVirtualMachine.cc +	(getAllClassMethods): Implement. +  2007-01-24  Andrew Haley  <aph@redhat.com>  	* gnu/classpath/natVMStackWalker.cc: Call InitClass everywhere. diff --git a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc index 84b75ec..afdfbc7 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::VMMethod *> *  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<VMMethod *> *result +    = (JArray<VMMethod *> *) JvNewObjectArray (count, +					       &VMMethod::class$, NULL); +  VMMethod **rmeth = elements (result); +  for (int i = 0; i < count; ++i) +    { +      jlong id = reinterpret_cast<jlong> (methods[i]); +      rmeth[i] = getClassMethod (klass, id); +    } + +  _jdwp_jvmtiEnv->Deallocate ((unsigned char *) methods); +  return result;  }  gnu::classpath::jdwp::VMMethod * | 
