diff options
author | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-25 18:04:01 +0000 |
---|---|---|
committer | kseitz <kseitz@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-25 18:04:01 +0000 |
commit | c3eaf28fd1b4875d0d7aa8bb6f6a470bd013fb87 (patch) | |
tree | f4a5c5e2a3570b0db4fa58b4dfc90580cd568148 /libjava/testsuite | |
parent | aafb162c86e447fe4def2b04045c8c2b1af540cb (diff) | |
download | gcc-c3eaf28fd1b4875d0d7aa8bb6f6a470bd013fb87.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121179 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/testsuite')
-rw-r--r-- | libjava/testsuite/libjava.jvmti/getmethodname.java | 10 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jvmti/getmethodname.out | 59 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jvmti/natgetmethodname.cc | 116 |
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 00000000000..a0e00a98c11 --- /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 00000000000..3f1a9ca148b --- /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 00000000000..3d759d58dd4 --- /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])); + } +} |