aboutsummaryrefslogtreecommitdiff
path: root/libjava/java/lang/natClassLoader.cc
diff options
context:
space:
mode:
authorTom Tromey <tromey@cygnus.com>2000-07-07 20:54:32 +0000
committerTom Tromey <tromey@gcc.gnu.org>2000-07-07 20:54:32 +0000
commit4ea9cbf197726cf031645159c7fa192a44b4c9c3 (patch)
tree2bb6dbc2e542c4e7ebe4cb31b0a674f138f59300 /libjava/java/lang/natClassLoader.cc
parent261985c30c196783d037149572b01af0e769a137 (diff)
downloadgcc-4ea9cbf197726cf031645159c7fa192a44b4c9c3.zip
gcc-4ea9cbf197726cf031645159c7fa192a44b4c9c3.tar.gz
gcc-4ea9cbf197726cf031645159c7fa192a44b4c9c3.tar.bz2
natClassLoader.cc (_Jv_PrepareCompiledClass): Initialize static final String fields.
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Initialize static final String fields. From-SVN: r34910
Diffstat (limited to 'libjava/java/lang/natClassLoader.cc')
-rw-r--r--libjava/java/lang/natClassLoader.cc19
1 files changed, 18 insertions, 1 deletions
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc
index b4a9e49..65da613 100644
--- a/libjava/java/lang/natClassLoader.cc
+++ b/libjava/java/lang/natClassLoader.cc
@@ -261,7 +261,6 @@ _Jv_PrepareCompiledClass(jclass klass)
pool->data[index].clazz = found;
pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
}
-
else if (pool->tags[index] == JV_CONSTANT_String)
{
jstring str;
@@ -271,6 +270,24 @@ _Jv_PrepareCompiledClass(jclass klass)
}
}
+ jfieldID f = JvGetFirstStaticField (klass);
+ for (int n = JvNumStaticFields (klass); n > 0; --n)
+ {
+ int mod = f->getModifiers ();
+ // Maybe the compiler should mark these with
+ // _Jv_FIELD_CONSTANT_VALUE? For now we just know that this
+ // only happens for constant strings.
+ if (f->getClass () == &StringClass
+ && java::lang::reflect::Modifier::isStatic (mod)
+ && java::lang::reflect::Modifier::isFinal (mod))
+ {
+ jstring *strp = (jstring *) f->u.addr;
+ if (*strp)
+ *strp = _Jv_NewStringUtf8Const ((_Jv_Utf8Const *) *strp);
+ }
+ f = f->getNextField ();
+ }
+
klass->notifyAll ();
}