public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Don't generate a static jclass param; a class knows its class. Date: Thu, 01 May 2008 14:45:00 -0000 [thread overview] Message-ID: <20080501144528.14749.qmail@sourceware.org> (raw) The branch, master has been updated via 101e2cf7ec7014e7f63b15ba27f36e7434f367d4 (commit) from 6ffbfe68fd18e6921b5c603c20d1abfcaa2c4f89 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 101e2cf7ec7014e7f63b15ba27f36e7434f367d4 Author: Andrew Cagney <cagney@redhat.com> Date: Thu May 1 10:43:22 2008 -0400 Don't generate a static jclass param; a class knows its class. frysk-sys/frysk/ChangeLog 2008-05-01 Andrew Cagney <cagney@redhat.com> * jni/jnixx.java: Generate Class(JNIEnv*) method; drop jclass parameter; don't new the exception. frysk-sys/frysk/sys/ChangeLog 2008-05-01 Andrew Cagney <cagney@redhat.com> * jni/Pid.cxx (Pid::parentPid, Pid::pid): Drop jclass parameter. * jni/Tid.cxx (Tid::tid): Ditto. frysk-sys/lib/stdcpp/ChangeLog 2008-05-01 Andrew Cagney <cagney@redhat.com> * jni/Demangler.cxx (Demangler::demangle): Drop jclass parameter. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/ChangeLog | 5 ++ frysk-sys/frysk/jni/jnixx.java | 82 +++++++++++++++++++++++++------- frysk-sys/frysk/sys/ChangeLog | 5 ++ frysk-sys/frysk/sys/jni/Pid.cxx | 4 +- frysk-sys/frysk/sys/jni/Tid.cxx | 2 +- frysk-sys/lib/stdcpp/ChangeLog | 4 ++ frysk-sys/lib/stdcpp/jni/Demangler.cxx | 3 +- 7 files changed, 83 insertions(+), 22 deletions(-) First 500 lines of diff: diff --git a/frysk-sys/frysk/ChangeLog b/frysk-sys/frysk/ChangeLog index 1464f24..dd4a952 100644 --- a/frysk-sys/frysk/ChangeLog +++ b/frysk-sys/frysk/ChangeLog @@ -1,3 +1,8 @@ +2008-05-01 Andrew Cagney <cagney@redhat.com> + + * jni/jnixx.java: Generate Class(JNIEnv*) method; drop jclass + parameter; don't new the exception. + 2008-04-30 Andrew Cagney <cagney@redhat.com> * jni/jnixx.java: New. diff --git a/frysk-sys/frysk/jni/jnixx.java b/frysk-sys/frysk/jni/jnixx.java index 7c1d378..d6e280f 100644 --- a/frysk-sys/frysk/jni/jnixx.java +++ b/frysk-sys/frysk/jni/jnixx.java @@ -204,12 +204,9 @@ class jnixx { print("JNIEnv*"); if (printArgs) print(" env"); - if (isStatic(method)) { - print(", jclass"); - if (printArgs) - print(" klass"); - } else { - print(", jobject"); + if (!isStatic(method)) { + print(", "); + printJniType(method.getDeclaringClass()); if (printArgs) print(" object"); } @@ -224,9 +221,7 @@ class jnixx { static void printActualCxxParameters(Method method) { print("env"); - if (isStatic(method)) { - print(", klass"); - } else { + if (!isStatic(method)) { print(", object"); } for (int i = 0; i < method.getParameterTypes().length; i++) { @@ -234,11 +229,35 @@ class jnixx { } } + static void printFormalJniParameters(Method method, boolean printArgs) { + print("JNIEnv*"); + if (printArgs) + print(" env"); + if (isStatic(method)) { + print(", jclass"); + if (printArgs) + print(" klass"); + } else { + print(", "); + printJniType(method.getDeclaringClass()); + if (printArgs) + print(" object"); + } + Class[] params = method.getParameterTypes(); + for (int i = 0; i < params.length; i++) { + print(", "); + printCxxType(params[i]); + if (printArgs) + print(" p" + i); + } + } + static void printActualJniParameters(Method method) { if (isStatic(method)) - print("klass, id"); + print("_Class"); else - print("object, id"); + print("object"); + print(", id"); for (int i = 0; i < method.getParameterTypes().length; i++) { print(", p" + i); } @@ -256,6 +275,7 @@ class jnixx { static void printCxxMethodDeclaration(Method method) { println(); + println(" public:"); pad(1); print("static "); printCxxType(method.getReturnType()); @@ -281,6 +301,15 @@ class jnixx { printCxxName(parent); } println(" {"); + // Static get-class method - a class knows its own class. + println(); + println(" private:"); + println(" static jclass _Class;"); + println(" public:"); + println(" static jclass Class(JNIEnv* env);"); + // Print the constructors. + // Print the field accessors. + // Print the methods Method[] methods = klass.getDeclaredMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; @@ -298,7 +327,7 @@ class jnixx { print(" JNICALL "); printJniName(method); print("("); - printFormalCxxParameters(method, false); + printFormalJniParameters(method, false); println(");"); println("}"); println(); @@ -306,7 +335,7 @@ class jnixx { println(); printJniName(method); print("("); - printFormalCxxParameters(method, true); + printFormalJniParameters(method, true); println(") {"); println(" try {"); print(" "); @@ -343,11 +372,11 @@ class jnixx { println(); println(" static jmethodID id;"); println(" if (id == NULL)"); - print(" id = getMethodID(env, "); + print(" id = getMethodID(env"); if (isStatic(method)) { - print("klass"); + print(", Class(env)"); } else { - print("object"); + print(", object"); } print(", \""); print(method.getName()); @@ -372,7 +401,7 @@ class jnixx { printActualJniParameters(method); println(");"); println(" if (env->ExceptionCheck())"); - println(" throw new std::exception();"); + println(" throw std::exception();"); if (returnType != Void.TYPE) { println(" return ret;"); } @@ -390,6 +419,25 @@ class jnixx { print("-jni.hxx\""); println(); + // The class, via reflection. + println(); + print("jclass "); + printCxxName(klass); + println("::_Class;"); + println("jclass"); + printCxxName(klass); + println("::Class(JNIEnv* env) {"); + println(" if (_Class == NULL) {"); + println(" _Class = env->FindClass(\"" + + klass.getName().replace("\\.", "/") + "\");"); + println(" if (_Class == NULL) {"); + println(" throw std::exception();"); + println(" }"); + println(" }"); + println(" return _Class;"); + println("}"); + + // The methods. Method[] methods = klass.getDeclaredMethods(); for (int i = 0; i < methods.length; i++) { Method method = methods[i]; diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index 5f27325..24f16d6 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,3 +1,8 @@ +2008-05-01 Andrew Cagney <cagney@redhat.com> + + * jni/Pid.cxx (Pid::parentPid, Pid::pid): Drop jclass parameter. + * jni/Tid.cxx (Tid::tid): Ditto. + 2008-04-30 Andrew Cagney <cagney@redhat.com> * jni/Tid.cxx (Tid::tid): Implement. diff --git a/frysk-sys/frysk/sys/jni/Pid.cxx b/frysk-sys/frysk/sys/jni/Pid.cxx index 09b3e8c..f283e0e 100644 --- a/frysk-sys/frysk/sys/jni/Pid.cxx +++ b/frysk-sys/frysk/sys/jni/Pid.cxx @@ -46,11 +46,11 @@ jint -frysk::sys::Pid::pid(JNIEnv *env, jclass) { +frysk::sys::Pid::pid(JNIEnv *env) { return ::getpid(); } jint -frysk::sys::Pid::parentPid(JNIEnv *env, jclass) { +frysk::sys::Pid::parentPid(JNIEnv *env) { return ::getppid(); } diff --git a/frysk-sys/frysk/sys/jni/Tid.cxx b/frysk-sys/frysk/sys/jni/Tid.cxx index 5b83c10..c32f560 100644 --- a/frysk-sys/frysk/sys/jni/Tid.cxx +++ b/frysk-sys/frysk/sys/jni/Tid.cxx @@ -47,6 +47,6 @@ #include "frysk/sys/Tid-jni.hxx" jint -frysk::sys::Tid::tid(JNIEnv *env, jclass) { +frysk::sys::Tid::tid(JNIEnv *env) { return ::syscall(SYS_gettid); } diff --git a/frysk-sys/lib/stdcpp/ChangeLog b/frysk-sys/lib/stdcpp/ChangeLog index fb9307f..98e1066 100644 --- a/frysk-sys/lib/stdcpp/ChangeLog +++ b/frysk-sys/lib/stdcpp/ChangeLog @@ -1,3 +1,7 @@ +2008-05-01 Andrew Cagney <cagney@redhat.com> + + * jni/Demangler.cxx (Demangler::demangle): Drop jclass parameter. + 2008-04-30 Andrew Cagney <cagney@redhat.com> * jni/Demangler.cxx (lib::stdcpp::Demangler::demangle): Replace ... diff --git a/frysk-sys/lib/stdcpp/jni/Demangler.cxx b/frysk-sys/lib/stdcpp/jni/Demangler.cxx index 3c7ed9e..8d72ade 100644 --- a/frysk-sys/lib/stdcpp/jni/Demangler.cxx +++ b/frysk-sys/lib/stdcpp/jni/Demangler.cxx @@ -49,8 +49,7 @@ using namespace abi; jstring -lib::stdcpp::Demangler::demangle(JNIEnv *env, jclass klass, - jstring mangledString) { +lib::stdcpp::Demangler::demangle(JNIEnv *env, jstring mangledString) { if (mangledString == NULL) return NULL; hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-05-01 14:45 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080501144528.14749.qmail@sourceware.org \ --to=cagney@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).