< prev index next >

src/hotspot/share/prims/resolvedMethodTable.cpp

Print this page
*** 210,15 ***
    Atomic::dec(&_items_count);
    log_trace(membername, table) ("ResolvedMethod entry removed");
  }
  
  double ResolvedMethodTable::get_load_factor() {
!   return (double)_items_count/_current_size;
  }
  
  double ResolvedMethodTable::get_dead_factor() {
!   return (double)_uncleaned_items_count/_current_size;
  }
  
  static const double PREF_AVG_LIST_LEN = 2.0;
  // If we have as many dead items as 50% of the number of bucket
  static const double CLEAN_DEAD_HIGH_WATER_MARK = 0.5;
--- 210,15 ---
    Atomic::dec(&_items_count);
    log_trace(membername, table) ("ResolvedMethod entry removed");
  }
  
  double ResolvedMethodTable::get_load_factor() {
!   return double(_items_count)/double(_current_size);
  }
  
  double ResolvedMethodTable::get_dead_factor() {
!   return double(_uncleaned_items_count)/double(_current_size);
  }
  
  static const double PREF_AVG_LIST_LEN = 2.0;
  // If we have as many dead items as 50% of the number of bucket
  static const double CLEAN_DEAD_HIGH_WATER_MARK = 0.5;

*** 236,10 ***
--- 236,11 ---
    if ((dead_factor > load_factor) ||
        (load_factor > PREF_AVG_LIST_LEN) ||
        (dead_factor > CLEAN_DEAD_HIGH_WATER_MARK)) {
      log_debug(membername, table)("Concurrent work triggered, live factor: %g dead factor: %g",
                                   load_factor, dead_factor);
+     _uncleaned_items_count = 0;
      trigger_concurrent_work();
    }
  }
  
  void ResolvedMethodTable::trigger_concurrent_work() {

*** 321,24 ***
      }
      bdt.done(jt);
    }
    log_info(membername, table)("Cleaned %ld of %ld", stdc._count, stdc._item);
  }
- void ResolvedMethodTable::reset_dead_counter() {
-   _uncleaned_items_count = 0;
- }
  
! void ResolvedMethodTable::inc_dead_counter(size_t ndead) {
!   size_t total = Atomic::add(&_uncleaned_items_count, ndead);
    log_trace(membername, table)(
!      "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
!      _uncleaned_items_count, ndead, total);
- }
- 
- // After the parallel walk this method must be called to trigger
- // cleaning. Note it might trigger a resize instead.
- void ResolvedMethodTable::finish_dead_counter() {
    check_concurrent_work();
  }
  
  #if INCLUDE_JVMTI
  class AdjustMethodEntries : public StackObj {
--- 322,16 ---
      }
      bdt.done(jt);
    }
    log_info(membername, table)("Cleaned %ld of %ld", stdc._count, stdc._item);
  }
  
! void ResolvedMethodTable::gc_notification(size_t num_dead) {
!   size_t total = Atomic::add(&_uncleaned_items_count, num_dead);
    log_trace(membername, table)(
!                                "Uncleaned items:" SIZE_FORMAT " added: " SIZE_FORMAT " total:" SIZE_FORMAT,
!                                _uncleaned_items_count, num_dead, total);
    check_concurrent_work();
  }
  
  #if INCLUDE_JVMTI
  class AdjustMethodEntries : public StackObj {
< prev index next >