8195100: Use a low latency hashtable for SymbolTable

Used concurrentHashTable, similar to stringTable

Reviewed-by: coleenp, kbarrett, iklam, pliden
This commit is contained in:
Gerard Ziemski 2018-08-14 18:42:14 -05:00
parent 9cea96184f
commit b75805c1a5
26 changed files with 1094 additions and 798 deletions

View file

@ -162,12 +162,8 @@
typedef HashtableEntry<intptr_t, mtInternal> IntptrHashtableEntry;
typedef Hashtable<intptr_t, mtInternal> IntptrHashtable;
typedef Hashtable<Symbol*, mtSymbol> SymbolHashtable;
typedef HashtableEntry<Symbol*, mtClass> SymbolHashtableEntry;
typedef Hashtable<InstanceKlass*, mtClass> KlassHashtable;
typedef HashtableEntry<InstanceKlass*, mtClass> KlassHashtableEntry;
typedef CompactHashtable<Symbol*, char> SymbolCompactHashTable;
typedef RehashableHashtable<Symbol*, mtSymbol> RehashableSymbolHashtable;
typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
@ -467,24 +463,6 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
static_field(PerfMemory, _prologue, PerfDataPrologue*) \
static_field(PerfMemory, _initialized, int) \
\
/***************/ \
/* SymbolTable */ \
/***************/ \
\
static_field(SymbolTable, _the_table, SymbolTable*) \
static_field(SymbolTable, _shared_table, SymbolCompactHashTable) \
static_field(RehashableSymbolHashtable, _seed, juint) \
\
/********************/ \
/* CompactHashTable */ \
/********************/ \
\
nonstatic_field(SymbolCompactHashTable, _base_address, address) \
nonstatic_field(SymbolCompactHashTable, _entry_count, u4) \
nonstatic_field(SymbolCompactHashTable, _bucket_count, u4) \
nonstatic_field(SymbolCompactHashTable, _buckets, u4*) \
nonstatic_field(SymbolCompactHashTable, _entries, u4*) \
\
/********************/ \
/* SystemDictionary */ \
/********************/ \
@ -1351,15 +1329,13 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
declare_toplevel_type(PerfMemory) \
declare_type(PerfData, CHeapObj<mtInternal>) \
\
/*********************************/ \
/* SymbolTable, SystemDictionary */ \
/*********************************/ \
/********************/ \
/* SystemDictionary */ \
/********************/ \
\
declare_toplevel_type(BasicHashtable<mtInternal>) \
declare_type(IntptrHashtable, BasicHashtable<mtInternal>) \
declare_toplevel_type(BasicHashtable<mtSymbol>) \
declare_type(RehashableSymbolHashtable, BasicHashtable<mtSymbol>) \
declare_type(SymbolTable, SymbolHashtable) \
declare_type(Dictionary, KlassHashtable) \
declare_toplevel_type(BasicHashtableEntry<mtInternal>) \
declare_type(IntptrHashtableEntry, BasicHashtableEntry<mtInternal>) \
@ -1373,8 +1349,6 @@ typedef PaddedEnd<ObjectMonitor> PaddedObjectMonitor;
declare_toplevel_type(Arena) \
declare_type(ResourceArea, Arena) \
\
declare_toplevel_type(SymbolCompactHashTable) \
\
/***********************************************************/ \
/* Thread hierarchy (needed for run-time type information) */ \
/***********************************************************/ \