< prev index next >

src/hotspot/share/classfile/stringTable.cpp

Print this page




 197     _found = Handle(_thread, value->resolve());
 198     return true;
 199   }
 200 };
 201 
 202 static size_t ceil_log2(size_t val) {
 203   size_t ret;
 204   for (ret = 1; ((size_t)1 << ret) < val; ++ret);
 205   return ret;
 206 }
 207 
 208 void StringTable::create_table() {
 209   size_t start_size_log_2 = ceil_log2(StringTableSize);
 210   _current_size = ((size_t)1) << start_size_log_2;
 211   log_trace(stringtable)("Start size: " SIZE_FORMAT " (" SIZE_FORMAT ")",
 212                          _current_size, start_size_log_2);
 213   _local_table = new StringTableHash(start_size_log_2, END_SIZE, REHASH_LEN);
 214 }
 215 
 216 size_t StringTable::item_added() {
 217   return Atomic::add((size_t)1, &_items_count);
 218 }
 219 
 220 size_t StringTable::add_items_to_clean(size_t ndead) {
 221   size_t total = Atomic::add((size_t)ndead, &_uncleaned_items_count);
 222   log_trace(stringtable)(
 223      "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
 224      _uncleaned_items_count, ndead, total);
 225   return total;
 226 }
 227 
 228 void StringTable::item_removed() {
 229   Atomic::add((size_t)-1, &_items_count);
 230 }
 231 
 232 double StringTable::get_load_factor() {
 233   return (double)_items_count/_current_size;
 234 }
 235 
 236 double StringTable::get_dead_factor() {
 237   return (double)_uncleaned_items_count/_current_size;
 238 }
 239 
 240 size_t StringTable::table_size() {
 241   return ((size_t)1) << _local_table->get_size_log2(Thread::current());
 242 }
 243 
 244 void StringTable::trigger_concurrent_work() {
 245   MutexLocker ml(Service_lock, Mutex::_no_safepoint_check_flag);
 246   _has_work = true;
 247   Service_lock->notify_all();
 248 }
 249 




 197     _found = Handle(_thread, value->resolve());
 198     return true;
 199   }
 200 };
 201 
 202 static size_t ceil_log2(size_t val) {
 203   size_t ret;
 204   for (ret = 1; ((size_t)1 << ret) < val; ++ret);
 205   return ret;
 206 }
 207 
 208 void StringTable::create_table() {
 209   size_t start_size_log_2 = ceil_log2(StringTableSize);
 210   _current_size = ((size_t)1) << start_size_log_2;
 211   log_trace(stringtable)("Start size: " SIZE_FORMAT " (" SIZE_FORMAT ")",
 212                          _current_size, start_size_log_2);
 213   _local_table = new StringTableHash(start_size_log_2, END_SIZE, REHASH_LEN);
 214 }
 215 
 216 size_t StringTable::item_added() {
 217   return Atomic::add(&_items_count, (size_t)1);
 218 }
 219 
 220 size_t StringTable::add_items_to_clean(size_t ndead) {
 221   size_t total = Atomic::add(&_uncleaned_items_count, (size_t)ndead);
 222   log_trace(stringtable)(
 223      "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
 224      _uncleaned_items_count, ndead, total);
 225   return total;
 226 }
 227 
 228 void StringTable::item_removed() {
 229   Atomic::add(&_items_count, (size_t)-1);
 230 }
 231 
 232 double StringTable::get_load_factor() {
 233   return (double)_items_count/_current_size;
 234 }
 235 
 236 double StringTable::get_dead_factor() {
 237   return (double)_uncleaned_items_count/_current_size;
 238 }
 239 
 240 size_t StringTable::table_size() {
 241   return ((size_t)1) << _local_table->get_size_log2(Thread::current());
 242 }
 243 
 244 void StringTable::trigger_concurrent_work() {
 245   MutexLocker ml(Service_lock, Mutex::_no_safepoint_check_flag);
 246   _has_work = true;
 247   Service_lock->notify_all();
 248 }
 249 


< prev index next >