diff options
| author | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-07 20:54:32 +0000 |
|---|---|---|
| committer | tromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4> | 2000-07-07 20:54:32 +0000 |
| commit | 2b473af4525032545e11b816a163bd490fee4ae1 (patch) | |
| tree | 2bb6dbc2e542c4e7ebe4cb31b0a674f138f59300 /libjava/java/lang | |
| parent | d6197be2c11d55df3bd2794cd9c54b5d8a19ce8a (diff) | |
| download | ppe42-gcc-2b473af4525032545e11b816a163bd490fee4ae1.tar.gz ppe42-gcc-2b473af4525032545e11b816a163bd490fee4ae1.zip | |
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass):
Initialize static final String fields.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@34910 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/java/lang')
| -rw-r--r-- | libjava/java/lang/natClassLoader.cc | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/libjava/java/lang/natClassLoader.cc b/libjava/java/lang/natClassLoader.cc index b4a9e49b71c..65da6135787 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 (); } |

