--- a/hotspot/src/share/vm/classfile/stringTable.cpp Mon Jul 07 10:12:40 2014 +0200
+++ b/hotspot/src/share/vm/classfile/stringTable.cpp Mon Jul 07 12:37:11 2014 +0200
@@ -37,7 +37,6 @@
#include "runtime/mutexLocker.hpp"
#include "utilities/hashtable.inline.hpp"
#if INCLUDE_ALL_GCS
-#include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
#include "gc_implementation/g1/g1StringDedup.hpp"
#endif
@@ -158,26 +157,11 @@
return lookup(chars, length);
}
-// Tell the GC that this string was looked up in the StringTable.
-static void ensure_string_alive(oop string) {
- // A lookup in the StringTable could return an object that was previously
- // considered dead. The SATB part of G1 needs to get notified about this
- // potential resurrection, otherwise the marking might not find the object.
-#if INCLUDE_ALL_GCS
- if (UseG1GC && string != NULL) {
- G1SATBCardTableModRefBS::enqueue(string);
- }
-#endif
-}
oop StringTable::lookup(jchar* name, int len) {
unsigned int hash = hash_string(name, len);
int index = the_table()->hash_to_index(hash);
- oop string = the_table()->lookup(index, name, len, hash);
-
- ensure_string_alive(string);
-
- return string;
+ return the_table()->lookup(index, name, len, hash);
}
@@ -188,10 +172,7 @@
oop found_string = the_table()->lookup(index, name, len, hashValue);
// Found
- if (found_string != NULL) {
- ensure_string_alive(found_string);
- return found_string;
- }
+ if (found_string != NULL) return found_string;
debug_only(StableMemoryChecker smc(name, len * sizeof(name[0])));
assert(!Universe::heap()->is_in_reserved(name),
@@ -216,17 +197,11 @@
// Grab the StringTable_lock before getting the_table() because it could
// change at safepoint.
- oop added_or_found;
- {
- MutexLocker ml(StringTable_lock, THREAD);
- // Otherwise, add to symbol to table
- added_or_found = the_table()->basic_add(index, string, name, len,
- hashValue, CHECK_NULL);
- }
+ MutexLocker ml(StringTable_lock, THREAD);
- ensure_string_alive(added_or_found);
-
- return added_or_found;
+ // Otherwise, add to symbol to table
+ return the_table()->basic_add(index, string, name, len,
+ hashValue, CHECK_NULL);
}
oop StringTable::intern(Symbol* symbol, TRAPS) {