--- old/src/share/vm/utilities/hashtable.cpp 2017-06-23 19:18:01.428567734 -0400 +++ new/src/share/vm/utilities/hashtable.cpp 2017-06-23 19:18:01.169989508 -0400 @@ -84,6 +84,17 @@ return entry; } +// Version of hashtable entry allocation that allocates in the C heap directly. +// The allocator in blocks is preferable but doesn't have free semantics. +template HashtableEntry* Hashtable::allocate_new_entry(unsigned int hashValue, T obj) { + HashtableEntry* entry = (HashtableEntry*) NEW_C_HEAP_ARRAY(char, this->entry_size(), F); + + entry->set_hash(hashValue); + entry->set_literal(obj); + entry->set_next(NULL); + return entry; +} + // Check to see if the hashtable is unbalanced. The caller set a flag to // rehash at the next safepoint. If this bucket is 60 times greater than the // expected average bucket length, it's an unbalanced hashtable. @@ -359,6 +370,7 @@ template class Hashtable; template class Hashtable; template class Hashtable; +template class Hashtable; #if defined(SOLARIS) || defined(CHECK_UNHANDLED_OOPS) template class Hashtable; template class RehashableHashtable;