Commit 5e5c1371 by Tom Tromey Committed by Tom Tromey

natClassLoader.cc (_Jv_PrepareCompiledClass): Only initialize String fields for…

natClassLoader.cc (_Jv_PrepareCompiledClass): Only initialize String fields for interpreted classes.

	* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Only
	initialize String fields for interpreted classes.  Fixes bug
	reported by Hans Boehm.

From-SVN: r35150
parent 373d3b18
2000-07-20 Tom Tromey <tromey@cygnus.com> 2000-07-20 Tom Tromey <tromey@cygnus.com>
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Only
initialize String fields for interpreted classes. Fixes bug
reported by Hans Boehm.
* java/io/File.java (getParentFile): New method, from Classpath * java/io/File.java (getParentFile): New method, from Classpath
via Oskar Liljeblad. via Oskar Liljeblad.
......
...@@ -165,9 +165,7 @@ java::lang::ClassLoader::linkClass0 (java::lang::Class *klass) ...@@ -165,9 +165,7 @@ java::lang::ClassLoader::linkClass0 (java::lang::Class *klass)
#ifdef INTERPRETER #ifdef INTERPRETER
if (_Jv_IsInterpretedClass (klass)) if (_Jv_IsInterpretedClass (klass))
{
_Jv_PrepareClass (klass); _Jv_PrepareClass (klass);
}
#endif #endif
_Jv_PrepareCompiledClass (klass); _Jv_PrepareCompiledClass (klass);
...@@ -230,7 +228,7 @@ java::lang::ClassLoader::findLoadedClass (jstring name) ...@@ -230,7 +228,7 @@ java::lang::ClassLoader::findLoadedClass (jstring name)
lives in resolve.cc which is entirely conditionally compiled. lives in resolve.cc which is entirely conditionally compiled.
*/ */
void void
_Jv_PrepareCompiledClass(jclass klass) _Jv_PrepareCompiledClass (jclass klass)
{ {
if (klass->state >= JV_STATE_LINKED) if (klass->state >= JV_STATE_LINKED)
return; return;
...@@ -270,6 +268,13 @@ _Jv_PrepareCompiledClass(jclass klass) ...@@ -270,6 +268,13 @@ _Jv_PrepareCompiledClass(jclass klass)
} }
} }
#ifdef INTERPRETER
// FIXME: although the comment up top says that this function is
// only called for compiled classes, it is actually called for every
// class.
if (! _Jv_IsInterpretedClass (klass))
{
#endif /* INTERPRETER */
jfieldID f = JvGetFirstStaticField (klass); jfieldID f = JvGetFirstStaticField (klass);
for (int n = JvNumStaticFields (klass); n > 0; --n) for (int n = JvNumStaticFields (klass); n > 0; --n)
{ {
...@@ -287,6 +292,9 @@ _Jv_PrepareCompiledClass(jclass klass) ...@@ -287,6 +292,9 @@ _Jv_PrepareCompiledClass(jclass klass)
} }
f = f->getNextField (); f = f->getNextField ();
} }
#ifdef INTERPRETER
}
#endif /* INTERPRETER */
klass->notifyAll (); klass->notifyAll ();
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment