aboutsummaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorKyle Galloway <kgallowa@redhat.com>2007-05-04 19:48:33 +0000
committerKyle Galloway <kgallowa@gcc.gnu.org>2007-05-04 19:48:33 +0000
commitddd3985ef531626ad904f1f2b7d72a07d72b6cd5 (patch)
tree9ffa87e722d37cfbe71db832db350dec81b3fe28 /libjava
parent640afd95c0529c9d951bf0e4a5e60175f598d00a (diff)
downloadgcc-ddd3985ef531626ad904f1f2b7d72a07d72b6cd5.zip
gcc-ddd3985ef531626ad904f1f2b7d72a07d72b6cd5.tar.gz
gcc-ddd3985ef531626ad904f1f2b7d72a07d72b6cd5.tar.bz2
natVMVirtualMachine.cc (getClassMethod): Change to use JVMTI.
2007-05-04 Kyle Galloway <kgallowa@redhat.com> * gnu/classpath/jdwp/natVMVirtualMachine.cc (getClassMethod): Change to use JVMTI. From-SVN: r124447
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc23
2 files changed, 23 insertions, 5 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index c0a2a82..427d09e 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2007-05-04 Kyle Galloway <kgallowa@redhat.com>
+
+ * gnu/classpath/jdwp/natVMVirtualMachine.cc (getClassMethod): Change
+ to use JVMTI.
+
2007-05-03 Keith Seitz <keiths@redhat.com>
* interpret.cc: Don't include ExceptionEvent.h.
diff --git a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc
index d6edf34..3c89b98 100644
--- a/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc
+++ b/libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc
@@ -510,12 +510,25 @@ gnu::classpath::jdwp::VMMethod *
gnu::classpath::jdwp::VMVirtualMachine::
getClassMethod (jclass klass, jlong id)
{
- jmethodID method = reinterpret_cast<jmethodID> (id);
- _Jv_MethodBase *bmeth = _Jv_FindInterpreterMethod (klass, method);
- if (bmeth != NULL)
- return new gnu::classpath::jdwp::VMMethod (klass, id);
+ jint count;
+ jmethodID *methods;
+ jvmtiError err = _jdwp_jvmtiEnv->GetClassMethods (klass, &count, &methods);
+ if (err != JVMTI_ERROR_NONE)
+ throw_jvmti_error (err);
+
+ jmethodID meth_id = reinterpret_cast<jmethodID> (id);
+
+ using namespace gnu::classpath::jdwp;
+
+ // Check if this method is defined for the given class and if so return a
+ // VMMethod representing it.
+ for (int i = 0; i < count; i++)
+ {
+ if (methods[i] == meth_id)
+ return new VMMethod (klass, reinterpret_cast<jlong> (meth_id));
+ }
- throw new gnu::classpath::jdwp::exception::InvalidMethodException (id);
+ throw new exception::InvalidMethodException (id);
}
java::util::ArrayList *