--- old/src/hotspot/share/utilities/hashtable.hpp 2018-11-16 19:19:39.352354077 -0800 +++ new/src/hotspot/share/utilities/hashtable.hpp 2018-11-16 19:19:39.088344029 -0800 @@ -29,6 +29,7 @@ #include "oops/oop.hpp" #include "oops/symbol.hpp" #include "runtime/handles.hpp" +#include "utilities/growableArray.hpp" // This is a generic hashtable, designed to be used for the symbol // and string tables. @@ -145,6 +146,7 @@ BasicHashtable(int table_size, int entry_size); BasicHashtable(int table_size, int entry_size, HashtableBucket* buckets, int number_of_entries); + ~BasicHashtable(); // Bucket handling int hash_to_index(unsigned int full_hash) const { @@ -162,6 +164,7 @@ char* _end_block; int _entry_size; volatile int _number_of_entries; + GrowableArray* _entry_blocks; protected: @@ -291,8 +294,7 @@ // A subclass of BasicHashtable that allows you to do a simple K -> V mapping // without using tons of boilerplate code. template< - typename K, typename V, - MEMFLAGS F = mtInternal, + typename K, typename V, MEMFLAGS F, unsigned (*HASH) (K const&) = primitive_hash, bool (*EQUALS)(K const&, K const&) = primitive_equals >