diff options
author | Tom Tromey <tromey@redhat.com> | 2001-01-26 22:41:41 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2001-01-26 22:41:41 +0000 |
commit | d0815622ea10a9a0f8c8a31a72660ecd7e483527 (patch) | |
tree | 17bd19053cde7d6de4e9c446d110697f23276823 /libjava/testsuite | |
parent | 66cce54da0e53c27e2b59ebb416c95e54191e9fc (diff) | |
download | gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.zip gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.tar.gz gcc-d0815622ea10a9a0f8c8a31a72660ecd7e483527.tar.bz2 |
martin.out: New file.
* libjava.jni/martin.out: New file.
* libjava.jni/martin.c: New file.
* libjava.jni/martin.java: New file.
From-SVN: r39286
Diffstat (limited to 'libjava/testsuite')
-rw-r--r-- | libjava/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jni/martin.c | 41 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jni/martin.java | 21 | ||||
-rw-r--r-- | libjava/testsuite/libjava.jni/martin.out | 4 |
4 files changed, 72 insertions, 0 deletions
diff --git a/libjava/testsuite/ChangeLog b/libjava/testsuite/ChangeLog index ab8f5b1..59dff24 100644 --- a/libjava/testsuite/ChangeLog +++ b/libjava/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2001-01-26 Tom Tromey <tromey@redhat.com> + + * libjava.jni/martin.out: New file. + * libjava.jni/martin.c: New file. + * libjava.jni/martin.java: New file. + 2001-01-16 Richard Henderson <rth@redhat.com> * lib/libjava.exp (bytecompile_file): Don't unset CLASSPATH. diff --git a/libjava/testsuite/libjava.jni/martin.c b/libjava/testsuite/libjava.jni/martin.c new file mode 100644 index 0000000..31f53e1 --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.c @@ -0,0 +1,41 @@ +#include <jni.h> +#include "martin.h" +#include <stdio.h> + +void Java_martin_myNative(JNIEnv* env, jobject this, jstring s) +{ + jclass cls; + jfieldID fid; + jobject obj; + jmethodID mid; + + printf("From C\n"); + + cls = (*env)->FindClass(env, "java/lang/System"); + if (cls == 0) { + printf("java/lang/System lookup failed\n"); + return; + } + fid = (*env)->GetStaticFieldID(env, cls, "out", "Ljava/io/PrintStream;"); + if (fid == 0) { + printf("java/lang/System::out lookup failed\n"); + return; + } + obj = (*env)->GetStaticObjectField(env, cls, fid); + if (obj == 0) { + printf("GetStaticObjectField call failed\n"); + return; + } + cls = (*env)->GetObjectClass(env, obj); + if (cls == 0) { + printf("GetObjectClass(out) failed\n"); + return; + } + mid = (*env)->GetMethodID(env, cls, "println", "(Ljava/lang/String;)V"); + if (mid == 0) { + printf("println method lookup failed\n"); + return; + } + (*env)->CallVoidMethod(env, obj, mid, s); +} + diff --git a/libjava/testsuite/libjava.jni/martin.java b/libjava/testsuite/libjava.jni/martin.java new file mode 100644 index 0000000..b866a60 --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.java @@ -0,0 +1,21 @@ +// Test case from Martin Kahlert <martin.kahlert@infineon.com> + +public class martin { + public native void myNative(String s); + + public void myJava(String s) { + s = s + ", Java"; + System.out.println(s); + } + + public static void main(String args[]) { + martin x = new martin(); + x.myJava("Hello"); + x.myNative("Hello, Java (from C)"); + x.myJava("Goodbye"); + } + + static { + System.loadLibrary("martin"); + } +} diff --git a/libjava/testsuite/libjava.jni/martin.out b/libjava/testsuite/libjava.jni/martin.out new file mode 100644 index 0000000..a25bc6c --- /dev/null +++ b/libjava/testsuite/libjava.jni/martin.out @@ -0,0 +1,4 @@ +Hello, Java +From C +Hello, Java (from C) +Goodbye, Java |