hotspot/src/share/vm/gc_implementation/g1/g1CollectedHeap.hpp
changeset 20318 a02849111b27
parent 20282 7f9cbdf89af2
parent 20309 7445302daff6
child 21767 41eaa9a17059
equal deleted inserted replaced
20304:e4b626bef54e 20318:a02849111b27
    29 #include "gc_implementation/g1/evacuationInfo.hpp"
    29 #include "gc_implementation/g1/evacuationInfo.hpp"
    30 #include "gc_implementation/g1/g1AllocRegion.hpp"
    30 #include "gc_implementation/g1/g1AllocRegion.hpp"
    31 #include "gc_implementation/g1/g1HRPrinter.hpp"
    31 #include "gc_implementation/g1/g1HRPrinter.hpp"
    32 #include "gc_implementation/g1/g1MonitoringSupport.hpp"
    32 #include "gc_implementation/g1/g1MonitoringSupport.hpp"
    33 #include "gc_implementation/g1/g1RemSet.hpp"
    33 #include "gc_implementation/g1/g1RemSet.hpp"
       
    34 #include "gc_implementation/g1/g1SATBCardTableModRefBS.hpp"
    34 #include "gc_implementation/g1/g1YCTypes.hpp"
    35 #include "gc_implementation/g1/g1YCTypes.hpp"
    35 #include "gc_implementation/g1/heapRegionSeq.hpp"
    36 #include "gc_implementation/g1/heapRegionSeq.hpp"
    36 #include "gc_implementation/g1/heapRegionSets.hpp"
    37 #include "gc_implementation/g1/heapRegionSets.hpp"
    37 #include "gc_implementation/shared/hSpaceCounters.hpp"
    38 #include "gc_implementation/shared/hSpaceCounters.hpp"
    38 #include "gc_implementation/shared/parGCAllocBuffer.hpp"
    39 #include "gc_implementation/shared/parGCAllocBuffer.hpp"
   789   // Actually do the work of evacuating the collection set.
   790   // Actually do the work of evacuating the collection set.
   790   void evacuate_collection_set(EvacuationInfo& evacuation_info);
   791   void evacuate_collection_set(EvacuationInfo& evacuation_info);
   791 
   792 
   792   // The g1 remembered set of the heap.
   793   // The g1 remembered set of the heap.
   793   G1RemSet* _g1_rem_set;
   794   G1RemSet* _g1_rem_set;
   794   // And it's mod ref barrier set, used to track updates for the above.
       
   795   ModRefBarrierSet* _mr_bs;
       
   796 
   795 
   797   // A set of cards that cover the objects for which the Rsets should be updated
   796   // A set of cards that cover the objects for which the Rsets should be updated
   798   // concurrently after the collection.
   797   // concurrently after the collection.
   799   DirtyCardQueueSet _dirty_card_queue_set;
   798   DirtyCardQueueSet _dirty_card_queue_set;
   800 
   799 
  1125   // Adaptive size policy.  No such thing for g1.
  1124   // Adaptive size policy.  No such thing for g1.
  1126   virtual AdaptiveSizePolicy* size_policy() { return NULL; }
  1125   virtual AdaptiveSizePolicy* size_policy() { return NULL; }
  1127 
  1126 
  1128   // The rem set and barrier set.
  1127   // The rem set and barrier set.
  1129   G1RemSet* g1_rem_set() const { return _g1_rem_set; }
  1128   G1RemSet* g1_rem_set() const { return _g1_rem_set; }
  1130   ModRefBarrierSet* mr_bs() const { return _mr_bs; }
       
  1131 
  1129 
  1132   unsigned get_gc_time_stamp() {
  1130   unsigned get_gc_time_stamp() {
  1133     return _gc_time_stamp;
  1131     return _gc_time_stamp;
  1134   }
  1132   }
  1135 
  1133 
  1343   MemRegion g1_committed() {
  1341   MemRegion g1_committed() {
  1344     return _g1_committed;
  1342     return _g1_committed;
  1345   }
  1343   }
  1346 
  1344 
  1347   virtual bool is_in_closed_subset(const void* p) const;
  1345   virtual bool is_in_closed_subset(const void* p) const;
       
  1346 
       
  1347   G1SATBCardTableModRefBS* g1_barrier_set() {
       
  1348     return (G1SATBCardTableModRefBS*) barrier_set();
       
  1349   }
  1348 
  1350 
  1349   // This resets the card table to all zeros.  It is used after
  1351   // This resets the card table to all zeros.  It is used after
  1350   // a collection pause which used the card table to claim cards.
  1352   // a collection pause which used the card table to claim cards.
  1351   void cleanUpCardTable();
  1353   void cleanUpCardTable();
  1352 
  1354 
  1873 class G1ParScanThreadState : public StackObj {
  1875 class G1ParScanThreadState : public StackObj {
  1874 protected:
  1876 protected:
  1875   G1CollectedHeap* _g1h;
  1877   G1CollectedHeap* _g1h;
  1876   RefToScanQueue*  _refs;
  1878   RefToScanQueue*  _refs;
  1877   DirtyCardQueue   _dcq;
  1879   DirtyCardQueue   _dcq;
  1878   CardTableModRefBS* _ct_bs;
  1880   G1SATBCardTableModRefBS* _ct_bs;
  1879   G1RemSet* _g1_rem;
  1881   G1RemSet* _g1_rem;
  1880 
  1882 
  1881   G1ParGCAllocBufferContainer  _surviving_alloc_buffer;
  1883   G1ParGCAllocBufferContainer  _surviving_alloc_buffer;
  1882   G1ParGCAllocBufferContainer  _tenured_alloc_buffer;
  1884   G1ParGCAllocBufferContainer  _tenured_alloc_buffer;
  1883   G1ParGCAllocBufferContainer* _alloc_buffers[GCAllocPurposeCount];
  1885   G1ParGCAllocBufferContainer* _alloc_buffers[GCAllocPurposeCount];
  1912   void   add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; }
  1914   void   add_to_alloc_buffer_waste(size_t waste) { _alloc_buffer_waste += waste; }
  1913 
  1915 
  1914   void   add_to_undo_waste(size_t waste)         { _undo_waste += waste; }
  1916   void   add_to_undo_waste(size_t waste)         { _undo_waste += waste; }
  1915 
  1917 
  1916   DirtyCardQueue& dirty_card_queue()             { return _dcq;  }
  1918   DirtyCardQueue& dirty_card_queue()             { return _dcq;  }
  1917   CardTableModRefBS* ctbs()                      { return _ct_bs; }
  1919   G1SATBCardTableModRefBS* ctbs()                { return _ct_bs; }
  1918 
  1920 
  1919   template <class T> void immediate_rs_update(HeapRegion* from, T* p, int tid) {
  1921   template <class T> void immediate_rs_update(HeapRegion* from, T* p, int tid) {
  1920     if (!from->is_survivor()) {
  1922     if (!from->is_survivor()) {
  1921       _g1_rem->par_write_ref(from, p, tid);
  1923       _g1_rem->par_write_ref(from, p, tid);
  1922     }
  1924     }