--- old/src/hotspot/share/oops/constantPool.cpp 2017-10-31 19:42:07.652618853 -0400 +++ new/src/hotspot/share/oops/constantPool.cpp 2017-10-31 19:42:06.240538265 -0400 @@ -305,14 +305,9 @@ constantPoolHandle cp(THREAD, this); for (int index = 1; index < length(); index++) { // Index 0 is unused - if (tag_at(index).is_string()) { - Symbol* sym = cp->unresolved_string_at(index); - // Look up only. Only resolve references to already interned strings. - oop str = StringTable::lookup(sym); - if (str != NULL) { - int cache_index = cp->cp_to_object_index(index); - cp->string_at_put(index, cache_index, str); - } + if (tag_at(index).is_string() && !cp->is_pseudo_string_at(index)) { + int cache_index = cp->cp_to_object_index(index); + string_at_impl(cp, index, cache_index, CHECK); } } }