< prev index next >

src/hotspot/share/gc/g1/heapRegionRemSet.cpp

Print this page




  29 #include "gc/g1/heapRegionManager.inline.hpp"
  30 #include "gc/g1/heapRegionRemSet.inline.hpp"
  31 #include "gc/shared/space.inline.hpp"
  32 #include "memory/allocation.hpp"
  33 #include "memory/padded.inline.hpp"
  34 #include "oops/oop.inline.hpp"
  35 #include "runtime/atomic.hpp"
  36 #include "utilities/bitMap.inline.hpp"
  37 #include "utilities/debug.hpp"
  38 #include "utilities/formatBuffer.hpp"
  39 #include "utilities/globalDefinitions.hpp"
  40 #include "utilities/growableArray.hpp"
  41 
  42 const char* HeapRegionRemSet::_state_strings[] =  {"Untracked", "Updating", "Complete"};
  43 const char* HeapRegionRemSet::_short_state_strings[] =  {"UNTRA", "UPDAT", "CMPLT"};
  44 
  45 PerRegionTable* PerRegionTable::alloc(HeapRegion* hr) {
  46   PerRegionTable* fl = _free_list;
  47   while (fl != NULL) {
  48     PerRegionTable* nxt = fl->next();
  49     PerRegionTable* res = Atomic::cmpxchg(nxt, &_free_list, fl);
  50     if (res == fl) {
  51       fl->init(hr, true);
  52       return fl;
  53     } else {
  54       fl = _free_list;
  55     }
  56   }
  57   assert(fl == NULL, "Loop condition.");
  58   return new PerRegionTable(hr);
  59 }
  60 
  61 PerRegionTable* volatile PerRegionTable::_free_list = NULL;
  62 
  63 size_t OtherRegionsTable::_max_fine_entries = 0;
  64 size_t OtherRegionsTable::_mod_max_fine_entries_mask = 0;
  65 size_t OtherRegionsTable::_fine_eviction_stride = 0;
  66 size_t OtherRegionsTable::_fine_eviction_sample_size = 0;
  67 
  68 OtherRegionsTable::OtherRegionsTable(Mutex* m) :
  69   _g1h(G1CollectedHeap::heap()),




  29 #include "gc/g1/heapRegionManager.inline.hpp"
  30 #include "gc/g1/heapRegionRemSet.inline.hpp"
  31 #include "gc/shared/space.inline.hpp"
  32 #include "memory/allocation.hpp"
  33 #include "memory/padded.inline.hpp"
  34 #include "oops/oop.inline.hpp"
  35 #include "runtime/atomic.hpp"
  36 #include "utilities/bitMap.inline.hpp"
  37 #include "utilities/debug.hpp"
  38 #include "utilities/formatBuffer.hpp"
  39 #include "utilities/globalDefinitions.hpp"
  40 #include "utilities/growableArray.hpp"
  41 
  42 const char* HeapRegionRemSet::_state_strings[] =  {"Untracked", "Updating", "Complete"};
  43 const char* HeapRegionRemSet::_short_state_strings[] =  {"UNTRA", "UPDAT", "CMPLT"};
  44 
  45 PerRegionTable* PerRegionTable::alloc(HeapRegion* hr) {
  46   PerRegionTable* fl = _free_list;
  47   while (fl != NULL) {
  48     PerRegionTable* nxt = fl->next();
  49     PerRegionTable* res = Atomic::cmpxchg(&_free_list, fl, nxt);
  50     if (res == fl) {
  51       fl->init(hr, true);
  52       return fl;
  53     } else {
  54       fl = _free_list;
  55     }
  56   }
  57   assert(fl == NULL, "Loop condition.");
  58   return new PerRegionTable(hr);
  59 }
  60 
  61 PerRegionTable* volatile PerRegionTable::_free_list = NULL;
  62 
  63 size_t OtherRegionsTable::_max_fine_entries = 0;
  64 size_t OtherRegionsTable::_mod_max_fine_entries_mask = 0;
  65 size_t OtherRegionsTable::_fine_eviction_stride = 0;
  66 size_t OtherRegionsTable::_fine_eviction_sample_size = 0;
  67 
  68 OtherRegionsTable::OtherRegionsTable(Mutex* m) :
  69   _g1h(G1CollectedHeap::heap()),


< prev index next >