8213753: SymbolTable is double walked during class unloading and clean up table timing in do_unloading

Remove gc timing for short runtime cleanup triggering; make symbol table cleaning triggered automatically on unloading

Reviewed-by: shade, stefank, gziemski
This commit is contained in:
Coleen Phillimore 2019-01-31 10:29:53 -05:00
parent 85e19d8beb
commit 73ccdf3557
8 changed files with 39 additions and 131 deletions

View file

@ -123,18 +123,19 @@ private:
volatile bool _needs_rehashing;
volatile size_t _items_count;
volatile size_t _uncleaned_items_count;
volatile bool _has_items_to_clean;
double get_load_factor() const;
double get_dead_factor() const;
void check_concurrent_work();
void trigger_concurrent_work();
static void item_added();
static void item_removed();
static void set_item_clean_count(size_t ncl);
static void mark_item_clean_count();
// For cleaning
void reset_has_items_to_clean();
void mark_has_items_to_clean();
bool has_items_to_clean() const;
SymbolTable();
@ -190,12 +191,9 @@ public:
initialize_symbols(symbol_alloc_arena_size);
}
static void unlink() {
do_check_concurrent_work();
}
static void do_check_concurrent_work();
static void do_concurrent_work(JavaThread* jt);
static bool has_work() { return the_table()->_has_work; }
static void trigger_cleanup();
// Probing
static Symbol* lookup(const char* name, int len, TRAPS);