64
65 // Set if one bucket is out of balance due to hash algorithm deficiency
66 StringTableHash* _local_table;
67 size_t _current_size;
68 volatile bool _has_work;
69 volatile bool _needs_rehashing;
70
71 OopStorage* _weak_handles;
72
73 volatile size_t _items;
74 DEFINE_PAD_MINUS_SIZE(1, DEFAULT_CACHE_LINE_SIZE, sizeof(volatile size_t));
75 volatile size_t _uncleaned_items;
76 DEFINE_PAD_MINUS_SIZE(2, DEFAULT_CACHE_LINE_SIZE, sizeof(volatile size_t));
77
78 double get_load_factor();
79 double get_dead_factor();
80
81 void check_concurrent_work();
82 void trigger_concurrent_work();
83
84 static uintx item_added();
85 static void item_removed();
86 static size_t items_to_clean(size_t ncl);
87
88 StringTable();
89
90 static oop intern(Handle string_or_null_h, jchar* name, int len, TRAPS);
91 oop do_intern(Handle string_or_null, jchar* name, int len, uintx hash, TRAPS);
92 oop do_lookup(jchar* name, int len, uintx hash);
93
94 void concurrent_work(JavaThread* jt);
95 void print_table_statistics(outputStream* st, const char* table_name);
96
97 void try_rehash_table();
98 bool do_rehash();
99
100 public:
101 // The string table
102 static StringTable* the_table() { return _the_table; }
103 size_t table_size(Thread* thread = NULL);
104
|
64
65 // Set if one bucket is out of balance due to hash algorithm deficiency
66 StringTableHash* _local_table;
67 size_t _current_size;
68 volatile bool _has_work;
69 volatile bool _needs_rehashing;
70
71 OopStorage* _weak_handles;
72
73 volatile size_t _items;
74 DEFINE_PAD_MINUS_SIZE(1, DEFAULT_CACHE_LINE_SIZE, sizeof(volatile size_t));
75 volatile size_t _uncleaned_items;
76 DEFINE_PAD_MINUS_SIZE(2, DEFAULT_CACHE_LINE_SIZE, sizeof(volatile size_t));
77
78 double get_load_factor();
79 double get_dead_factor();
80
81 void check_concurrent_work();
82 void trigger_concurrent_work();
83
84 static size_t item_added();
85 static void item_removed();
86 static size_t items_to_clean(size_t ncl);
87
88 StringTable();
89
90 static oop intern(Handle string_or_null_h, jchar* name, int len, TRAPS);
91 oop do_intern(Handle string_or_null, jchar* name, int len, uintx hash, TRAPS);
92 oop do_lookup(jchar* name, int len, uintx hash);
93
94 void concurrent_work(JavaThread* jt);
95 void print_table_statistics(outputStream* st, const char* table_name);
96
97 void try_rehash_table();
98 bool do_rehash();
99
100 public:
101 // The string table
102 static StringTable* the_table() { return _the_table; }
103 size_t table_size(Thread* thread = NULL);
104
|