From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13633 invoked by alias); 9 May 2008 19:11:48 -0000 Received: (qmail 13604 invoked by uid 367); 9 May 2008 19:11:47 -0000 Date: Fri, 09 May 2008 19:11:00 -0000 Message-ID: <20080509191147.13589.qmail@sourceware.org> From: cagney@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Require explict cast from jobject to jnixx object. X-Git-Refname: refs/heads/master X-Git-Reftype: branch X-Git-Oldrev: 507270cf6348bdc42d1eed23c7b5eed81cf0b7a6 X-Git-Newrev: 57fc116cd48ffb2388ccc34c8319f61eaa9c01e0 Mailing-List: contact frysk-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: frysk-cvs-owner@sourceware.org Reply-To: frysk@sourceware.org X-SW-Source: 2008-q2/txt/msg00217.txt.bz2 The branch, master has been updated via 57fc116cd48ffb2388ccc34c8319f61eaa9c01e0 (commit) from 507270cf6348bdc42d1eed23c7b5eed81cf0b7a6 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 57fc116cd48ffb2388ccc34c8319f61eaa9c01e0 Author: Andrew Cagney Date: Fri May 9 15:10:30 2008 -0400 Require explict cast from jobject to jnixx object. frysk-sys/frysk/config/ChangeLog 2008-05-09 Andrew Cagney * jni/FryskVersion.cxx-in: Use String's JNI methods. * jni/Host.cxx-in: Ditto. * jni/PrefixFactory.cxx-in: Ditto. frysk-sys/frysk/jnixx/ChangeLog 2008-05-09 Andrew Cagney * PrintDeclarations.java: Generate a protected constructor; and a static Cast method. * jnixx.hxx (jnixx::array): Add Cast method. * Printer.java: Generate calls to Cast. * PrintCxxDefinitions.java: Ditto * print.cxx: Use explicit casts. frysk-sys/frysk/rsl/ChangeLog 2008-05-09 Andrew Cagney * jni/Log.cxx: Use String's JNI methods. frysk-sys/frysk/sys/ChangeLog 2008-05-09 Andrew Cagney * jni/PseudoTerminal.cxx: Use String's JNI methods. frysk-sys/frysk/testbed/ChangeLog 2008-05-09 Andrew Cagney * jni/LocalMemory.cxx (LocalMemory::getCodeFile): Use String's JNI methods. frysk-sys/lib/stdcpp/ChangeLog 2008-05-09 Andrew Cagney * jni/Demangler.cxx: Use String's JNI methods. ----------------------------------------------------------------------- Summary of changes: frysk-sys/frysk/config/ChangeLog | 6 ++++ frysk-sys/frysk/config/jni/FryskVersion.cxx-in | 6 +++- frysk-sys/frysk/config/jni/Host.cxx-in | 6 +++- frysk-sys/frysk/config/jni/PrefixFactory.cxx-in | 34 ++++++++++++----------- frysk-sys/frysk/jnixx/ChangeLog | 7 +++++ frysk-sys/frysk/jnixx/PrintCxxDefinitions.java | 1 + frysk-sys/frysk/jnixx/PrintDeclarations.java | 16 +++++++--- frysk-sys/frysk/jnixx/Printer.java | 4 ++- frysk-sys/frysk/jnixx/jnixx.hxx | 12 ++++++-- frysk-sys/frysk/jnixx/print.cxx | 10 ++++--- frysk-sys/frysk/rsl/ChangeLog | 4 +++ frysk-sys/frysk/rsl/jni/Log.cxx | 24 +++++++++++----- frysk-sys/frysk/sys/ChangeLog | 4 +++ frysk-sys/frysk/sys/jni/PseudoTerminal.cxx | 6 +++- frysk-sys/frysk/testbed/ChangeLog | 5 +++ frysk-sys/frysk/testbed/jni/LocalMemory.cxx | 6 +++- frysk-sys/lib/stdcpp/ChangeLog | 4 +++ frysk-sys/lib/stdcpp/jni/Demangler.cxx | 9 +++--- 18 files changed, 115 insertions(+), 49 deletions(-) First 500 lines of diff: diff --git a/frysk-sys/frysk/config/ChangeLog b/frysk-sys/frysk/config/ChangeLog index 7855299..edf0de6 100644 --- a/frysk-sys/frysk/config/ChangeLog +++ b/frysk-sys/frysk/config/ChangeLog @@ -1,3 +1,9 @@ +2008-05-09 Andrew Cagney + + * jni/FryskVersion.cxx-in: Use String's JNI methods. + * jni/Host.cxx-in: Ditto. + * jni/PrefixFactory.cxx-in: Ditto. + 2008-05-08 Andrew Cagney * jni/FryskVersion.cxx-in: Update to match jnixx::env. diff --git a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in index 27d988e..1f4e101 100644 --- a/frysk-sys/frysk/config/jni/FryskVersion.cxx-in +++ b/frysk-sys/frysk/config/jni/FryskVersion.cxx-in @@ -39,7 +39,9 @@ #include "jni.hxx" -java::lang::String +using namespace java::lang; + +String frysk::config::FryskVersion::version(::jnixx::env env) { - return env.NewStringUTF("@VERSION@"); + return String::NewStringUTF(env, "@VERSION@"); } diff --git a/frysk-sys/frysk/config/jni/Host.cxx-in b/frysk-sys/frysk/config/jni/Host.cxx-in index 43e5ec2..c5ab352 100644 --- a/frysk-sys/frysk/config/jni/Host.cxx-in +++ b/frysk-sys/frysk/config/jni/Host.cxx-in @@ -41,12 +41,14 @@ #include "jni.hxx" +using namespace java::lang; + jint frysk::config::Host::wordSize(::jnixx::env env) { return sizeof(long) * 8; } -java::lang::String +String frysk::config::Host::cpuXXX(::jnixx::env env) { - return env.NewStringUTF("@host_cpu@"); + return String::NewStringUTF(env, "@host_cpu@"); } diff --git a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in index 7e65d2e..5c8d9e4 100644 --- a/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in +++ b/frysk-sys/frysk/config/jni/PrefixFactory.cxx-in @@ -41,43 +41,45 @@ #include "jni.hxx" -java::lang::String +using namespace java::lang; + +String frysk::config::PrefixFactory::gladeDir(::jnixx::env env) { - return env.NewStringUTF("@gladedir@"); + return String::NewStringUTF(env, "@gladedir@"); } -java::lang::String +String frysk::config::PrefixFactory::helpDir(::jnixx::env env) { - return env.NewStringUTF("@helpdir@"); + return String::NewStringUTF(env, "@helpdir@"); } -java::lang::String +String frysk::config::PrefixFactory::imagesDir(::jnixx::env env) { - return env.NewStringUTF("@imagesdir@"); + return String::NewStringUTF(env, "@imagesdir@"); } -java::lang::String +String frysk::config::PrefixFactory::binDir(::jnixx::env env) { - return env.NewStringUTF("@bindir@"); + return String::NewStringUTF(env, "@bindir@"); } -java::lang::String +String frysk::config::PrefixFactory::pkgDataDir(::jnixx::env env) { - return env.NewStringUTF("@pkgdatadir@"); + return String::NewStringUTF(env, "@pkgdatadir@"); } -java::lang::String +String frysk::config::PrefixFactory::pkgLibDir(::jnixx::env env) { - return env.NewStringUTF("@pkglibdir@"); + return String::NewStringUTF(env, "@pkglibdir@"); } -java::lang::String +String frysk::config::PrefixFactory::pkgLib32Dir(::jnixx::env env) { - return env.NewStringUTF("@pkglib32dir@"); + return String::NewStringUTF(env, "@pkglib32dir@"); } -java::lang::String +String frysk::config::PrefixFactory::sourceDir(::jnixx::env env) { // An educated guess. - return env.NewStringUTF("@prefix@/src/debug/frysk-@VERSION@"); + return String::NewStringUTF(env, "@prefix@/src/debug/frysk-@VERSION@"); } diff --git a/frysk-sys/frysk/jnixx/ChangeLog b/frysk-sys/frysk/jnixx/ChangeLog index 1ba36ad..9590e1b 100644 --- a/frysk-sys/frysk/jnixx/ChangeLog +++ b/frysk-sys/frysk/jnixx/ChangeLog @@ -1,5 +1,12 @@ 2008-05-09 Andrew Cagney + * PrintDeclarations.java: Generate a protected constructor; and a + static Cast method. + * jnixx.hxx (jnixx::array): Add Cast method. + * Printer.java: Generate calls to Cast. + * PrintCxxDefinitions.java: Ditto + * print.cxx: Use explicit casts. + * jnixx.hxx (jnixx::array): Add templated JNI array method. * chars.cxx: Use tempated array methods. * JniBindings.java: Drop String parameter to GetStringLength. diff --git a/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java b/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java index 9bd1efe..da83514 100644 --- a/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java +++ b/frysk-sys/frysk/jnixx/PrintCxxDefinitions.java @@ -86,6 +86,7 @@ class PrintCxxDefinitions extends ClassWalker { p.printGlobalCxxName(method); } else { p.printGlobalCxxName(method.getDeclaringClass()); + p.print("::Cast"); p.print("(object)."); p.print(method.getName()); } diff --git a/frysk-sys/frysk/jnixx/PrintDeclarations.java b/frysk-sys/frysk/jnixx/PrintDeclarations.java index f50dee5..3861e6b 100644 --- a/frysk-sys/frysk/jnixx/PrintDeclarations.java +++ b/frysk-sys/frysk/jnixx/PrintDeclarations.java @@ -128,7 +128,7 @@ class PrintDeclarations extends ClassWalker { p.println(); p.print("// "); p.println(klass); - p.print("struct "); + p.print("class "); p.printQualifiedCxxName(klass); Class parent = klass.getSuperclass(); p.print(" : public "); @@ -139,6 +139,7 @@ class PrintDeclarations extends ClassWalker { } while(p.dent(0, "{", "};")) { // Constructor. + p.print("protected: "); p.printUnqualifiedCxxName(klass); p.print("(jobject _object)"); p.print(" : "); @@ -147,11 +148,16 @@ class PrintDeclarations extends ClassWalker { } else { p.printGlobalCxxName(parent); } - p.print("(_object)"); - p.println(" { }"); + p.println("(_object) {}"); + // Explicit cast operator. + p.print("public: static "); + p.printUnqualifiedCxxName(klass); + p.print(" Cast(jobject object) { return "); + p.printUnqualifiedCxxName(klass); + p.println("(object); }"); // Static get-class method - a class knows its own class. - p.println("private: static jclass _class; public:"); - p.println("static inline jclass _class_(::jnixx::env _env);"); + p.println("private: static jclass _class;"); + p.println("public: static inline jclass _class_(::jnixx::env _env);"); JniBindings.printDeclarations(p, klass); printer.visit(klass); } diff --git a/frysk-sys/frysk/jnixx/Printer.java b/frysk-sys/frysk/jnixx/Printer.java index 15b9509..007acc2 100644 --- a/frysk-sys/frysk/jnixx/Printer.java +++ b/frysk-sys/frysk/jnixx/Printer.java @@ -181,7 +181,7 @@ class Printer { } print("jnixx::array<"); printCxxName(klass.getComponentType(), false); - if (!componentType.isPrimitive()) { + if (componentType.isArray()) { print(" "); // prevent's ">>". } print(">"); @@ -473,6 +473,7 @@ class Printer { print("p" + i); } else { printGlobalCxxName(param); + print("::Cast"); print("(p" + i + ")"); } } @@ -588,6 +589,7 @@ class Printer { print(variable); } else { printGlobalCxxName(returnType); + print("::Cast"); print("("); print(variable); print(")"); diff --git a/frysk-sys/frysk/jnixx/jnixx.hxx b/frysk-sys/frysk/jnixx/jnixx.hxx index e894821..af38a18 100644 --- a/frysk-sys/frysk/jnixx/jnixx.hxx +++ b/frysk-sys/frysk/jnixx/jnixx.hxx @@ -1489,18 +1489,24 @@ namespace jnixx { * extends jnixx::object). */ template class array : public object { - public: + protected: array(jobject _object) : object(_object) { } + public: + static array Cast(jobject object) { + return array(object); + } + public: jsize GetArrayLength(::jnixx::env env) { return env.GetArrayLength((jarray)_object); } static array NewObjectArray(::jnixx::env env, jsize length, - ::jnixx::object init) { + ::jnixx::object init) { return env.NewObjectArray(length, Object::_class_(env), init._object); } Object GetObjectArrayElement(::jnixx::env env, jsize index) { - return env.GetObjectArrayElement((jobjectArray)_object, index); + return Object::Cast(env.GetObjectArrayElement((jobjectArray)_object, + index)); } void SetObjectArrayElement(::jnixx::env env, jsize index, Object object) { env.SetObjectArrayElement((jobjectArray)_object, index, object._object); diff --git a/frysk-sys/frysk/jnixx/print.cxx b/frysk-sys/frysk/jnixx/print.cxx index d9efd7c..cbec1e1 100644 --- a/frysk-sys/frysk/jnixx/print.cxx +++ b/frysk-sys/frysk/jnixx/print.cxx @@ -44,15 +44,17 @@ #include "frysk/jnixx/print.hxx" #include "frysk/jnixx/exceptions.hxx" +using namespace java::lang; + /** * Do printf style printing to a java String. */ -java::lang::String +String ajprintf(::jnixx::env& env, const char *fmt, ...) { va_list ap; va_start (ap, fmt); - java::lang::String jmessage = vajprintf(env, fmt, ap); + String jmessage = vajprintf(env, fmt, ap); va_end (ap); return jmessage; } @@ -60,14 +62,14 @@ ajprintf(::jnixx::env& env, const char *fmt, ...) { /** * Do vprintf style printing to a java String. */ -java::lang::String +String vajprintf(::jnixx::env& env, const char *fmt, va_list ap) { char* message = NULL; if (::vasprintf(&message, fmt, ap) < 0) { errnoException(env, errno, "vasprintf"); } try { - return env.NewStringUTF(message); + return String::NewStringUTF(env, message); } catch (jnixx::exception) { ::free(message); throw; diff --git a/frysk-sys/frysk/rsl/ChangeLog b/frysk-sys/frysk/rsl/ChangeLog index fa5fb4a..998ed6a 100644 --- a/frysk-sys/frysk/rsl/ChangeLog +++ b/frysk-sys/frysk/rsl/ChangeLog @@ -1,3 +1,7 @@ +2008-05-09 Andrew Cagney + + * jni/Log.cxx: Use String's JNI methods. + 2008-05-08 Andrew Cagney * jni/Log.cxx: Update to match jnixx::env. diff --git a/frysk-sys/frysk/rsl/jni/Log.cxx b/frysk-sys/frysk/rsl/jni/Log.cxx index 0fe4bc5..6561e27 100644 --- a/frysk-sys/frysk/rsl/jni/Log.cxx +++ b/frysk-sys/frysk/rsl/jni/Log.cxx @@ -45,6 +45,8 @@ #include "frysk/jnixx/print.hxx" #include "frysk/rsl/jni/Log.hxx" +using namespace java::lang; + void logf(::jnixx::env env, frysk::rsl::Log logger, const char* format, ...) { @@ -52,35 +54,41 @@ logf(::jnixx::env env, frysk::rsl::Log logger, return; va_list ap; va_start(ap, format); - java::lang::String message = vajprintf(env, format, ap); + String message = vajprintf(env, format, ap); logger.log(env, message); + message.DeleteLocalRef(env); va_end(ap); } void -logf(::jnixx::env env, frysk::rsl::Log logger, java::lang::Object object, +logf(::jnixx::env env, frysk::rsl::Log logger, Object object, const char* format, ...) { if (!logger.logging(env)) return; va_list ap; va_start(ap, format); - java::lang::String message = vajprintf(env, format, ap); + String message = vajprintf(env, format, ap); logger.log(env, message); + message.DeleteLocalRef(env); va_end(ap); } void log(::jnixx::env env, frysk::rsl::Log logger, - const char* p1, java::lang::Object p2) { + const char* p1, Object p2) { if (!logger.logging(env)) return; - logger.log(env, env.NewStringUTF(p1), p2); + String message = String::NewStringUTF(env, p1); + logger.log(env, message, p2); + message.DeleteLocalRef(env); } void -log(::jnixx::env env, frysk::rsl::Log logger, java::lang::Object self, - const char* p1, java::lang::Object p2) { +log(::jnixx::env env, frysk::rsl::Log logger, Object self, + const char* p1, Object p2) { if (!logger.logging(env)) return; - logger.log(env, self, env.NewStringUTF(p1), p2); + String message = String::NewStringUTF(env, p1); + logger.log(env, self, message, p2); + message.DeleteLocalRef(env); } diff --git a/frysk-sys/frysk/sys/ChangeLog b/frysk-sys/frysk/sys/ChangeLog index a74b04c..a8cd1cd 100644 --- a/frysk-sys/frysk/sys/ChangeLog +++ b/frysk-sys/frysk/sys/ChangeLog @@ -1,3 +1,7 @@ +2008-05-09 Andrew Cagney + + * jni/PseudoTerminal.cxx: Use String's JNI methods. + 2008-05-08 Andrew Cagney * jni/PseudoTerminal.cxx: Update to match jnixx::env. diff --git a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx index d1166d6..04b36d2 100644 --- a/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx +++ b/frysk-sys/frysk/sys/jni/PseudoTerminal.cxx @@ -44,12 +44,14 @@ #include "frysk/jnixx/exceptions.hxx" -::java::lang::String +using namespace java::lang; + +::String frysk::sys::PseudoTerminal::getName(::jnixx::env env, jint pty) { const char *name = ::ptsname(pty); if (name == NULL) errnoException(env, errno, "ptsname"); - return env.NewStringUTF(name); + return String::NewStringUTF(env, name); } jint diff --git a/frysk-sys/frysk/testbed/ChangeLog b/frysk-sys/frysk/testbed/ChangeLog index f4d8977..64ac04f 100644 --- a/frysk-sys/frysk/testbed/ChangeLog +++ b/frysk-sys/frysk/testbed/ChangeLog @@ -1,3 +1,8 @@ +2008-05-09 Andrew Cagney + + * jni/LocalMemory.cxx (LocalMemory::getCodeFile): Use String's JNI + methods. + 2008-05-08 Andrew Cagney * jni/LocalMemory.cxx: Update to match jnixx::env. diff --git a/frysk-sys/frysk/testbed/jni/LocalMemory.cxx b/frysk-sys/frysk/testbed/jni/LocalMemory.cxx index fbad642..a7283ab 100644 --- a/frysk-sys/frysk/testbed/jni/LocalMemory.cxx +++ b/frysk-sys/frysk/testbed/jni/LocalMemory.cxx @@ -44,6 +44,8 @@ #include "jni.hxx" #include "frysk/jnixx/exceptions.hxx" +using namespace java::lang; + static jbyteArray getBytes(::jnixx::env env, void *addr, size_t length) { jbyteArray bytes = env.NewByteArray(length); @@ -76,9 +78,9 @@ frysk::testbed::LocalMemory::getDataBytes(::jnixx::env env) { */ jint frysk::testbed::LocalMemory::getCodeLine (::jnixx::env) { return __LINE__; } -java::lang::String +String frysk::testbed::LocalMemory::getCodeFile(::jnixx::env env) { - return env.NewStringUTF(__FILE__); + return String::NewStringUTF(env, __FILE__); } static void* diff --git a/frysk-sys/lib/stdcpp/ChangeLog b/frysk-sys/lib/stdcpp/ChangeLog index ac5706e..da9d115 100644 --- a/frysk-sys/lib/stdcpp/ChangeLog +++ b/frysk-sys/lib/stdcpp/ChangeLog @@ -1,3 +1,7 @@ +2008-05-09 Andrew Cagney + + * jni/Demangler.cxx: Use String's JNI methods. + 2008-05-08 Andrew Cagney * jni/Demangler.cxx: Update to match jnixx::env. diff --git a/frysk-sys/lib/stdcpp/jni/Demangler.cxx b/frysk-sys/lib/stdcpp/jni/Demangler.cxx index cf4da6a..43cae48 100644 --- a/frysk-sys/lib/stdcpp/jni/Demangler.cxx +++ b/frysk-sys/lib/stdcpp/jni/Demangler.cxx @@ -45,12 +45,13 @@ #include "jni.hxx" using namespace abi; +using namespace java::lang; -::java::lang::String +String lib::stdcpp::Demangler::demangle(::jnixx::env env, - ::java::lang::String mangledString) { + String mangledString) { if (mangledString == NULL) - return NULL; + return mangledString; int status = -1; @@ -59,7 +60,7 @@ lib::stdcpp::Demangler::demangle(::jnixx::env env, mangledString.ReleaseStringUTFChars(env, mangledName); if (status == 0) - return env.NewStringUTF(demangledName); + return String::NewStringUTF(env, demangledName); else return mangledString; } hooks/post-receive -- frysk system monitor/debugger