< prev index next >

src/share/vm/classfile/stringTable.cpp

Print this page
rev 10186 : [mq]: webrev.01
rev 10187 : [mq]: webrev.02

*** 198,208 **** ensure_string_alive(string); return string; } - oop StringTable::intern(Handle string_or_null, jchar* name, int len, TRAPS) { oop found_string = lookup_shared(name, len); if (found_string != NULL) { return found_string; --- 198,207 ----
*** 212,222 **** --- 211,223 ---- int index = the_table()->hash_to_index(hashValue); found_string = the_table()->lookup_in_main_table(index, name, len, hashValue); // Found if (found_string != NULL) { + if (found_string != string_or_null()) { ensure_string_alive(found_string); + } return found_string; } debug_only(StableMemoryChecker smc(name, len * sizeof(name[0]))); assert(!Universe::heap()->is_in_reserved(name),
*** 247,257 **** --- 248,260 ---- // Otherwise, add to symbol to table added_or_found = the_table()->basic_add(index, string, name, len, hashValue, CHECK_NULL); } + if (added_or_found != string()) { ensure_string_alive(added_or_found); + } return added_or_found; } oop StringTable::intern(Symbol* symbol, TRAPS) {
< prev index next >