summaryrefslogtreecommitdiff
path: root/libjava
diff options
context:
space:
mode:
authorMarco Trudel <mtrudel@gmx.ch>2007-01-18 21:47:50 +0100
committerTom Tromey <tromey@gcc.gnu.org>2007-01-18 20:47:50 +0000
commit7896beb27a4556485b50e82e6196f2b8f0e1146a (patch)
tree4c2a62510b05498eb172331a262a4868c7425147 /libjava
parent576c9028f00d275eb9beb66ab2116383759130bb (diff)
downloadgcc-7896beb27a4556485b50e82e6196f2b8f0e1146a.tar.gz
jni.cc (_Jv_JNI_FindClass): Initialize class.
2007-01-18 Marco Trudel <mtrudel@gmx.ch> * jni.cc (_Jv_JNI_FindClass): Initialize class. * testsuite/libjava.jni/findclass2.jar: New file. * testsuite/libjava.jni/findclass2.h: New file. * testsuite/libjava.jni/findclass2.java: New file * testsuite/libjava.jni/findclass2.c: New file. * testsuite/libjava.jni/findclass2.out: New file. From-SVN: r120930
Diffstat (limited to 'libjava')
-rw-r--r--libjava/ChangeLog9
-rw-r--r--libjava/jni.cc3
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.c9
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.h19
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.jarbin0 -> 1073 bytes
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.java24
-rw-r--r--libjava/testsuite/libjava.jni/findclass2.out1
7 files changed, 64 insertions, 1 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index a44076f4f7b..e572a5f91a9 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,12 @@
+2007-01-18 Marco Trudel <mtrudel@gmx.ch>
+
+ * jni.cc (_Jv_JNI_FindClass): Initialize class.
+ * testsuite/libjava.jni/findclass2.jar: New file.
+ * testsuite/libjava.jni/findclass2.h: New file.
+ * testsuite/libjava.jni/findclass2.java: New file
+ * testsuite/libjava.jni/findclass2.c: New file.
+ * testsuite/libjava.jni/findclass2.out: New file.
+
2007-01-18 Tom Tromey <tromey@redhat.com>
* configure: Rebuilt.
diff --git a/libjava/jni.cc b/libjava/jni.cc
index c5c2b0ff3cd..9dc9780f9a0 100644
--- a/libjava/jni.cc
+++ b/libjava/jni.cc
@@ -1,6 +1,6 @@
// jni.cc - JNI implementation, including the jump table.
-/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
Free Software Foundation
This file is part of libgcj.
@@ -552,6 +552,7 @@ _Jv_JNI_FindClass (JNIEnv *env, const char *name)
}
r = loader->loadClass (n);
+ _Jv_InitClass (r);
}
catch (jthrowable t)
{
diff --git a/libjava/testsuite/libjava.jni/findclass2.c b/libjava/testsuite/libjava.jni/findclass2.c
new file mode 100644
index 00000000000..634aea71054
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.c
@@ -0,0 +1,9 @@
+#include <stdlib.h>
+
+#include <findclass2.h>
+
+JNIEXPORT void JNICALL
+Java_findclass2_searchClass (JNIEnv *env, jclass klass)
+{
+ (*env)->FindClass (env, "findclass2$inner");
+}
diff --git a/libjava/testsuite/libjava.jni/findclass2.h b/libjava/testsuite/libjava.jni/findclass2.h
new file mode 100644
index 00000000000..65d074644f4
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.h
@@ -0,0 +1,19 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+
+#include <jni.h>
+
+#ifndef __findclass2__
+#define __findclass2__
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+JNIEXPORT void JNICALL Java_findclass2_searchClass (JNIEnv *env, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __findclass2__ */
diff --git a/libjava/testsuite/libjava.jni/findclass2.jar b/libjava/testsuite/libjava.jni/findclass2.jar
new file mode 100644
index 00000000000..05f867dce0c
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.jar
Binary files differ
diff --git a/libjava/testsuite/libjava.jni/findclass2.java b/libjava/testsuite/libjava.jni/findclass2.java
new file mode 100644
index 00000000000..f7c0996e19a
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.java
@@ -0,0 +1,24 @@
+// Test that FindClass initializes the class.
+
+public class findclass2
+{
+ public static class inner
+ {
+ static
+ {
+ System.out.println("hello");
+ }
+ }
+
+ public static native void searchClass();
+
+ static
+ {
+ System.loadLibrary("findclass2");
+ }
+
+ public static void main(String[] args)
+ {
+ searchClass();
+ }
+}
diff --git a/libjava/testsuite/libjava.jni/findclass2.out b/libjava/testsuite/libjava.jni/findclass2.out
new file mode 100644
index 00000000000..ce013625030
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.out
@@ -0,0 +1 @@
+hello