aboutsummaryrefslogtreecommitdiff
path: root/libjava/testsuite/libjava.jvmti
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2007-01-25 18:04:01 +0000
committerKeith Seitz <kseitz@gcc.gnu.org>2007-01-25 18:04:01 +0000
commitff393407cf034d6560955f35f1804a634668a199 (patch)
treef4a5c5e2a3570b0db4fa58b4dfc90580cd568148 /libjava/testsuite/libjava.jvmti
parent7d52200069f68d9e2ebd4ad4737c40505bfa0d9b (diff)
downloadgcc-ff393407cf034d6560955f35f1804a634668a199.zip
gcc-ff393407cf034d6560955f35f1804a634668a199.tar.gz
gcc-ff393407cf034d6560955f35f1804a634668a199.tar.bz2
jvmti.cc (_Jv_JVMTI_GetMethodName): New function.
* jvmti.cc (_Jv_JVMTI_GetMethodName): New function. (_Jv_JVMTI_Interface): Define GetMethodName. * testsuite/libjava.jvmti/getmethodname.java: New file. * testsuite/libjava.jvmti/natgetmethodname.cc: New file. * testsuite/libjava.jvmti/getmethodname.out: New file. From-SVN: r121179
Diffstat (limited to 'libjava/testsuite/libjava.jvmti')
-rw-r--r--libjava/testsuite/libjava.jvmti/getmethodname.java10
-rw-r--r--libjava/testsuite/libjava.jvmti/getmethodname.out59
-rw-r--r--libjava/testsuite/libjava.jvmti/natgetmethodname.cc116
3 files changed, 185 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.jvmti/getmethodname.java b/libjava/testsuite/libjava.jvmti/getmethodname.java
new file mode 100644
index 0000000..a0e00a9
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getmethodname.java
@@ -0,0 +1,10 @@
+public class getmethodname
+{
+ public static native void do_getmethodname_tests ();
+
+ public static void main (String[] args)
+ {
+ System.out.println ("JVMTI GetMethodName tests");
+ do_getmethodname_tests ();
+ }
+}
diff --git a/libjava/testsuite/libjava.jvmti/getmethodname.out b/libjava/testsuite/libjava.jvmti/getmethodname.out
new file mode 100644
index 0000000..3f1a9ca
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/getmethodname.out
@@ -0,0 +1,59 @@
+JVMTI GetMethodName tests
+null jmethodID: invalid method ID
+GetClassMethods: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+GetMethodName - name: none
+GetMethodName - signature: none
+GetMethodName - generic: none
+name=clone, signature=()Ljava.lang.Object;, generic=null
+names match
+signatures match
+generic not yet
+name=equals, signature=(Ljava.lang.Object;)Z, generic=null
+names match
+signatures match
+generic not yet
+name=finalize, signature=()V, generic=null
+names match
+signatures match
+generic not yet
+name=getClass, signature=()Ljava.lang.Class;, generic=null
+names match
+signatures match
+generic not yet
+name=hashCode, signature=()I, generic=null
+names match
+signatures match
+generic not yet
+name=notify, signature=()V, generic=null
+names match
+signatures match
+generic not yet
+name=notifyAll, signature=()V, generic=null
+names match
+signatures match
+generic not yet
+name=toString, signature=()Ljava.lang.String;, generic=null
+names match
+signatures match
+generic not yet
diff --git a/libjava/testsuite/libjava.jvmti/natgetmethodname.cc b/libjava/testsuite/libjava.jvmti/natgetmethodname.cc
new file mode 100644
index 0000000..3d759d5
--- /dev/null
+++ b/libjava/testsuite/libjava.jvmti/natgetmethodname.cc
@@ -0,0 +1,116 @@
+#include <gcj/cni.h>
+
+#include <jvm.h>
+#include <jvmti.h>
+#include <stdio.h>
+
+#include <java/lang/Object.h>
+
+#include "getmethodname.h"
+
+static void
+print_error (jvmtiEnv *env, const char *msg, jvmtiError err)
+{
+ char *error_msg;
+ env->GetErrorName (err, &error_msg);
+ printf ("%s: %s\n", msg, error_msg);
+ env->Deallocate (reinterpret_cast<unsigned char *> (error_msg));
+}
+
+#define NUM_METHODS 8
+static const char *function_names[] = { "clone",
+ "equals",
+ "finalize",
+ "getClass",
+ "hashCode",
+ "notify",
+ "notifyAll",
+ "toString" };
+static int
+function_index (const char *name)
+{
+ for (int i = 0; i < NUM_METHODS; ++i)
+ {
+ if (strcmp (function_names[i], name) == 0)
+ return i;
+ }
+
+ return -1;
+}
+
+void
+getmethodname::do_getmethodname_tests ()
+{
+ jvmtiEnv *env;
+ JavaVM *vm = _Jv_GetJavaVM ();
+ vm->GetEnv (reinterpret_cast<void **> (&env), JVMTI_VERSION_1_0);
+
+ jvmtiError err;
+ err = env->GetMethodName (reinterpret_cast<jmethodID> (NULL),
+ reinterpret_cast<char **> (NULL),
+ reinterpret_cast<char **> (NULL),
+ reinterpret_cast<char **> (NULL));
+ print_error (env, "null jmethodID", err);
+
+ jint count;
+ jmethodID *methods;
+ err = env->GetClassMethods (&java::lang::Object::class$, &count, &methods);
+ print_error (env, "GetClassMethods", err);
+
+ char *names[NUM_METHODS], *solo_names[NUM_METHODS];
+ char *signatures[NUM_METHODS], *solo_signatures[NUM_METHODS];
+ char *generics[NUM_METHODS], *solo_generics[NUM_METHODS];
+
+ for (jint i = 0; i < count; ++i)
+ {
+ char *name, *n;
+ char *signature, *s;
+ char *generic, *g;
+ err = env->GetMethodName (methods[i], &name, &signature, &generic);
+
+ int idx = -1;
+ if (err != JVMTI_ERROR_NONE)
+ {
+ print_error (env, "GetMethodName - all fields", err);
+ continue;
+ }
+
+ idx = function_index (name);
+ if (idx == -1)
+ continue;
+
+ names[idx] = name;
+ signatures[idx] = signature;
+ generics[idx] = generic;
+
+ err = env->GetMethodName (methods[i], &n, NULL, NULL);
+ print_error (env, "GetMethodName - name", err);
+ solo_names[idx] = n;
+
+ err = env->GetMethodName (methods[i], NULL, &s, NULL);
+ print_error (env, "GetMethodName - signature", err);
+ solo_signatures[idx] = s;
+
+ err = env->GetMethodName (methods[i], NULL, NULL, &g);
+ print_error (env, "GetMethodName - generic", err);
+ solo_generics[idx] = g;
+ }
+
+#define WRAP(X) ((X) == NULL ? "null" : (X))
+#define MATCH(X,Y) (strcmp ((X),(Y)) == 0 ? "match" : "do not match")
+ for (int i = 0; i < NUM_METHODS; ++i)
+ {
+ printf ("name=%s, signature=%s, generic=%s\n",
+ WRAP (names[i]), WRAP (signatures[i]), WRAP (generics[i]));
+ printf ("names %s\n", MATCH (solo_names[i], names[i]));
+ printf ("signatures %s\n", MATCH (solo_signatures[i], signatures[i]));
+ printf ("generic %s\n", "not yet");
+
+ env->Deallocate (reinterpret_cast<unsigned char *> (names[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (solo_names[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (signatures[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (solo_signatures[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (generics[i]));
+ env->Deallocate (reinterpret_cast<unsigned char *> (solo_generics[i]));
+ }
+}