mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 06:45:07 +02:00
6810653: Change String cache class used by Hotspot from String to StringValue
Change create_vm() to load and initialize StringValue rather than String. Reviewed-by: kvn
This commit is contained in:
parent
fface2e4ca
commit
5231fcdc40
2 changed files with 13 additions and 10 deletions
|
@ -49,6 +49,7 @@
|
||||||
template(java_lang_Object, "java/lang/Object") \
|
template(java_lang_Object, "java/lang/Object") \
|
||||||
template(java_lang_Class, "java/lang/Class") \
|
template(java_lang_Class, "java/lang/Class") \
|
||||||
template(java_lang_String, "java/lang/String") \
|
template(java_lang_String, "java/lang/String") \
|
||||||
|
template(java_lang_StringValue, "java/lang/StringValue") \
|
||||||
template(java_lang_Thread, "java/lang/Thread") \
|
template(java_lang_Thread, "java/lang/Thread") \
|
||||||
template(java_lang_ThreadGroup, "java/lang/ThreadGroup") \
|
template(java_lang_ThreadGroup, "java/lang/ThreadGroup") \
|
||||||
template(java_lang_Cloneable, "java/lang/Cloneable") \
|
template(java_lang_Cloneable, "java/lang/Cloneable") \
|
||||||
|
|
|
@ -3007,17 +3007,19 @@ jint Threads::create_vm(JavaVMInitArgs* args, bool* canTryAgain) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UseStringCache) {
|
if (UseStringCache) {
|
||||||
// Forcibly initialize java/lang/String and mutate the private
|
// Forcibly initialize java/lang/StringValue and mutate the private
|
||||||
// static final "stringCacheEnabled" field before we start creating instances
|
// static final "stringCacheEnabled" field before we start creating instances
|
||||||
klassOop k_o = SystemDictionary::resolve_or_null(vmSymbolHandles::java_lang_String(), Handle(), Handle(), CHECK_0);
|
klassOop k_o = SystemDictionary::resolve_or_null(vmSymbolHandles::java_lang_StringValue(), Handle(), Handle(), CHECK_0);
|
||||||
KlassHandle k = KlassHandle(THREAD, k_o);
|
// Possible that StringValue isn't present: if so, silently don't break
|
||||||
guarantee(k.not_null(), "Must find java/lang/String");
|
if (k_o != NULL) {
|
||||||
instanceKlassHandle ik = instanceKlassHandle(THREAD, k());
|
KlassHandle k = KlassHandle(THREAD, k_o);
|
||||||
ik->initialize(CHECK_0);
|
instanceKlassHandle ik = instanceKlassHandle(THREAD, k());
|
||||||
fieldDescriptor fd;
|
ik->initialize(CHECK_0);
|
||||||
// Possible we might not find this field; if so, don't break
|
fieldDescriptor fd;
|
||||||
if (ik->find_local_field(vmSymbols::stringCacheEnabled_name(), vmSymbols::bool_signature(), &fd)) {
|
// Possible we might not find this field: if so, silently don't break
|
||||||
k()->bool_field_put(fd.offset(), true);
|
if (ik->find_local_field(vmSymbols::stringCacheEnabled_name(), vmSymbols::bool_signature(), &fd)) {
|
||||||
|
k()->bool_field_put(fd.offset(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue