Print this page
rev 2724 : 6484965: G1: piggy-back liveness accounting phase on marking
Summary: Remove the separate counting phase of concurrent marking by tracking the amount of marked bytes and the cards spanned by marked objects in marking task/worker thread local data structures, which are updated as individual objects are marked.
Reviewed-by:

Split Close
Expand all
Collapse all
          --- old/src/share/vm/gc_implementation/g1/g1OopClosures.hpp
          +++ new/src/share/vm/gc_implementation/g1/g1OopClosures.hpp
↓ open down ↓ 43 lines elided ↑ open up ↑
  44   44  public:
  45   45    void set_region(HeapRegion* from) { _from = from; }
  46   46  };
  47   47  
  48   48  class G1ParClosureSuper : public OopsInHeapRegionClosure {
  49   49  protected:
  50   50    G1CollectedHeap* _g1;
  51   51    G1RemSet* _g1_rem;
  52   52    ConcurrentMark* _cm;
  53   53    G1ParScanThreadState* _par_scan_state;
       54 +  int _worker_i;
  54   55    bool _during_initial_mark;
  55   56    bool _mark_in_progress;
  56   57  public:
  57   58    G1ParClosureSuper(G1CollectedHeap* g1, G1ParScanThreadState* par_scan_state);
  58   59    bool apply_to_weak_ref_discovered_field() { return true; }
  59   60  };
  60   61  
  61   62  class G1ParPushHeapRSClosure : public G1ParClosureSuper {
  62   63  public:
  63   64    G1ParPushHeapRSClosure(G1CollectedHeap* g1,
↓ open down ↓ 172 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX