summaryrefslogtreecommitdiffstats
path: root/libjava/testsuite/libjava.jni
diff options
context:
space:
mode:
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-29 18:34:58 +0000
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>2005-11-29 18:34:58 +0000
commit279ecc9840f5a71023455f3596e63269c0b8a81d (patch)
tree5ba6f0f10a37c9d1c36de0493f0563ef6f583cad /libjava/testsuite/libjava.jni
parentda6823590442f724687ca09a11aefb0916759ec0 (diff)
downloadppe42-gcc-279ecc9840f5a71023455f3596e63269c0b8a81d.tar.gz
ppe42-gcc-279ecc9840f5a71023455f3596e63269c0b8a81d.zip
gcc/java:
PR java/18278: * expr.c (build_jni_stub): Unwrap the return value. * java-tree.h (soft_unwrapjni_node): New define. (enum java_tree_index): Added JTI_SOFT_UNWRAPJNI_NODE. * decl.c (java_init_decl_processing): Initialize soft_unwrapjni_node. libjava: PR java/18278: * testsuite/libjava.jni/pr18278.out: New file. * testsuite/libjava.jni/pr18278.c: New file. * testsuite/libjava.jni/pr18278.java: New file. * include/jvm.h (_Jv_UnwrapJNIweakReference): Declare. * jni.cc (_Jv_UnwrapJNIweakReference): New function. (call): Unwrap return value if needed. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107676 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/testsuite/libjava.jni')
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.c10
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.java13
-rw-r--r--libjava/testsuite/libjava.jni/pr18278.out2
3 files changed, 25 insertions, 0 deletions
diff --git a/libjava/testsuite/libjava.jni/pr18278.c b/libjava/testsuite/libjava.jni/pr18278.c
new file mode 100644
index 00000000000..7ca73a43062
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.c
@@ -0,0 +1,10 @@
+#include <jni.h>
+#include <stdio.h>
+
+#include "pr18278.h"
+
+jobject Java_pr18278_weakRef(JNIEnv *env, jclass cls, jobject data)
+{
+ jobject r = (* env)->NewWeakGlobalRef(env, data);
+ return r;
+}
diff --git a/libjava/testsuite/libjava.jni/pr18278.java b/libjava/testsuite/libjava.jni/pr18278.java
new file mode 100644
index 00000000000..8a39ddebf4d
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.java
@@ -0,0 +1,13 @@
+public class pr18278 {
+ public pr18278() {}
+
+ public static void main(String[] args) {
+ System.loadLibrary("pr18278");
+ String bob = "Bob";
+ Object o = weakRef("Bob");
+ System.out.println(o);
+ System.out.println(bob == o);
+ }
+
+ static native Object weakRef(Object o);
+}
diff --git a/libjava/testsuite/libjava.jni/pr18278.out b/libjava/testsuite/libjava.jni/pr18278.out
new file mode 100644
index 00000000000..e01142a4a2f
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/pr18278.out
@@ -0,0 +1,2 @@
+Bob
+true
OpenPOWER on IntegriCloud