From 076c702a9ff1f722e49cdf89843cadefdb6a79d2 Mon Sep 17 00:00:00 2001
From: tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 18 Jan 2007 20:47:50 +0000
Subject: [PATCH] 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120930 138bc75d-0d04-0410-961f-82ee72b054a4
---
 libjava/ChangeLog                             |   9 +++++++
 libjava/jni.cc                                |   3 ++-
 libjava/testsuite/libjava.jni/findclass2.c    |   9 +++++++
 libjava/testsuite/libjava.jni/findclass2.h    |  19 ++++++++++++++
 libjava/testsuite/libjava.jni/findclass2.jar  | Bin 0 -> 1073 bytes
 libjava/testsuite/libjava.jni/findclass2.java |  24 ++++++++++++++++++
 libjava/testsuite/libjava.jni/findclass2.out  |   1 +
 7 files changed, 64 insertions(+), 1 deletion(-)
 create mode 100644 libjava/testsuite/libjava.jni/findclass2.c
 create mode 100644 libjava/testsuite/libjava.jni/findclass2.h
 create mode 100644 libjava/testsuite/libjava.jni/findclass2.jar
 create mode 100644 libjava/testsuite/libjava.jni/findclass2.java
 create mode 100644 libjava/testsuite/libjava.jni/findclass2.out

diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index a44076f4f7b7..e572a5f91a99 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 c5c2b0ff3cd9..9dc9780f9a06 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 000000000000..634aea710541
--- /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 000000000000..65d074644f48
--- /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 0000000000000000000000000000000000000000..05f867dce0c022ae3425f3ba1a89c19cd7452dbc
GIT binary patch
literal 1073
zcmWIWW@Zs#-~htnXd^QQBp?E0`?`iW>U#RQ>H9kRdAhj<hv@mbefB+b+Q(a0?;@|a
zuGYCT=Qjr#Trqy|^wCo$h5&DNj!pGU@1%iRC4o2qr{MxX*|f~Ol;oVm;$kB`FqP|n
z+Uu}`i0$Mpm8Q4aw|xx_EDVf|D9J7i7HC=2-6b79xnxc7B~728h4Y`DdUS~Y!{Q^>
zj%&KapV^(a{C@8D@z>G~!EbhLkZ59G*;aVy@|QENjSG#Q`R|!rVEXEgOR``(Pn@~m
zl1VpNoA27~O4j(Y%=zI#E&+v-z+XqD&Rq8Kaaxlwb>S4BpBwa*&wib=@ZP)s2U4R}
zUEFz5`}<O%>zh4QzUcM~9ehyoxs@^Jic`pg2_afL`sAyhg;*sXTAGxx<^BK3JO?iD
zY)q>-m|%5z<BlnA+xPr=+xgJ2CESa1?&_{9NBRDyc3MtJI}vb3`J3mpwv9|SA`b)J
z29-KooDuw4?8AJ`#lBCNBc7~o*|IYD=dtY?Qf?oAuwGTYb8@!X=d%x|{ETq_+r4S}
z;*5_>z5BVPRPHayX)fZPedClm&+RW!AM6=H;eRM`>M<uq28NG7j63|rP{Lm&GcPZ-
z2pS6kzTSr&1Zr>h=LjucyY}nux(27O2^X`wr#C5xh-%%tT(UOWOxiQ(;QXcRto;8N
z>Ze%j<_ay~v)*I={_L4^$DiM}Zb*JpAR@79dr-fUXxhz_^R7fKkx@-jf9QN8Y@ytC
z{dQr&r#yM)K|!bgOj&rtYDc2R*GUsUJV@+2{6AUJCT(X2Gs_J1LL=4k#rda=GUJy9
zJ#V%VO}tYWn5c1|bE%Mg_ln{x60iPiFzYNlc;G$nQj@RQU+d4F?vyJ(6Et<-l}AZZ
z{H|59d{Yw&c9mtzyRKo4XgvIYe^RDYr*Y=1sW%z>e7xHp+_|$bU1MTl&cwuJ3v1ub
z+`#=y+DGKUBA#{w^)3E4TE6pa-}a&Dl`vylYE^CYr!{kChSur$p6V(3`9XBG@y^e_
zlQQr6-8`@?H|dCP&f(uoppaKLyTxM$4E59CkY{8PVL)Uo<Xi#DSf~J7HVg1ZH32zZ
tLAeJ3Vu4Kbyo9bB*=?Y>M}WIP*CKQyr-T4+RyL42W*|HQq{Ep(JOI!Wm}LL}

literal 0
HcmV?d00001

diff --git a/libjava/testsuite/libjava.jni/findclass2.java b/libjava/testsuite/libjava.jni/findclass2.java
new file mode 100644
index 000000000000..f7c0996e19a8
--- /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 000000000000..ce013625030b
--- /dev/null
+++ b/libjava/testsuite/libjava.jni/findclass2.out
@@ -0,0 +1 @@
+hello
-- 
GitLab