diff options
author | Jeff Sturm <jsturm@one-point.com> | 2003-01-30 23:20:45 +0000 |
---|---|---|
committer | Jeff Sturm <jsturm@gcc.gnu.org> | 2003-01-30 23:20:45 +0000 |
commit | ae724017fd554d9c49f9ed3bd515dd236e552eef (patch) | |
tree | 68e1ce35ce8786bd229d9f2d6e91343074b4bcb2 /libjava/java/lang/natClassLoader.cc | |
parent | ccf9f10cc3b4e371c34a01b3210b9e3bed0a8868 (diff) | |
download | gcc-ae724017fd554d9c49f9ed3bd515dd236e552eef.zip gcc-ae724017fd554d9c49f9ed3bd515dd236e552eef.tar.gz gcc-ae724017fd554d9c49f9ed3bd515dd236e552eef.tar.bz2 |
natClass.cc (initializeClass): Check tables when (state == JV_STATE_IN_PROGRESS).
* java/lang/natClass.cc (initializeClass): Check tables when
(state == JV_STATE_IN_PROGRESS).
(_Jv_GetInterfaces): Use _Jv_WaitForState to link interface.
* java/lang/natClassLoader.cc (_Jv_WaitForState): Handle
interpreted classes.
(linkClass0): Use _Jv_WaitForState.
From-SVN: r62161
Diffstat (limited to 'libjava/java/lang/natClassLoader.cc')
-rw-r--r-- | libjava/java/lang/natClassLoader.cc | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index 176f16a..7ca537c 100644 --- a/libjava/java/lang/natClassLoader.cc +++ b/libjava/java/lang/natClassLoader.cc @@ -117,6 +117,10 @@ _Jv_WaitForState (jclass klass, int state) { // Must call _Jv_PrepareCompiledClass while holding the class // mutex. +#ifdef INTERPRETER + if (_Jv_IsInterpretedClass (klass)) + _Jv_PrepareClass (klass); +#endif _Jv_PrepareCompiledClass (klass); _Jv_MonitorExit (klass); return; @@ -141,15 +145,7 @@ _Jv_WaitForState (jclass klass, int state) void java::lang::ClassLoader::linkClass0 (java::lang::Class *klass) { - if (klass->state >= JV_STATE_LINKED) - return; - -#ifdef INTERPRETER - if (_Jv_IsInterpretedClass (klass)) - _Jv_PrepareClass (klass); -#endif - - _Jv_PrepareCompiledClass (klass); + _Jv_WaitForState (klass, JV_STATE_LINKED); } void |