< prev index next >

src/hotspot/share/gc/g1/g1RemSet.hpp

Print this page
rev 49826 : imported patch 6672778-partial-queue-trimming
rev 49827 : imported patch 6672778-refactoring

@@ -30,10 +30,11 @@
 #include "gc/g1/g1OopClosures.hpp"
 #include "gc/g1/g1RemSetSummary.hpp"
 #include "gc/g1/heapRegion.hpp"
 #include "memory/allocation.hpp"
 #include "memory/iterator.hpp"
+#include "utilities/ticks.hpp"
 
 // A G1RemSet provides ways of iterating over pointers into a selected
 // collection set.
 
 class BitMap;

@@ -59,13 +60,11 @@
 
   G1RemSetSummary _prev_period_summary;
 
   // Scan all remembered sets of the collection set for references into the collection
   // set.
-  void scan_rem_set(G1ParScanThreadState* pss,
-                    CodeBlobClosure* heap_region_codeblobs,
-                    uint worker_i);
+  void scan_rem_set(G1ParScanThreadState* pss, uint worker_i);
 
   // Flush remaining refinement buffers for cross-region references to either evacuate references
   // into the collection set or update the remembered set.
   void update_rem_set(G1ParScanThreadState* pss, uint worker_i);
 

@@ -100,13 +99,11 @@
   // Process all oops in the collection set from the cards in the refinement buffers and
   // remembered sets using pss.
   //
   // Further applies heap_region_codeblobs on the oops of the unmarked nmethods on the strong code
   // roots list for each region in the collection set.
-  void oops_into_collection_set_do(G1ParScanThreadState* pss,
-                                   CodeBlobClosure* heap_region_codeblobs,
-                                   uint worker_i);
+  void oops_into_collection_set_do(G1ParScanThreadState* pss, uint worker_i);
 
   // Prepare for and cleanup after an oops_into_collection_set_do
   // call.  Must call each of these once before and after (in sequential
   // code) any thread calls oops_into_collection_set_do.
   void prepare_for_oops_into_collection_set_do();

@@ -136,41 +133,48 @@
   // using the given work gang.
   void rebuild_rem_set(G1ConcurrentMark* cm, WorkGang* workers, uint worker_id_offset);
 };
 
 class G1ScanRSForRegionClosure : public HeapRegionClosure {
+  G1CollectedHeap* _g1h;
+  G1CardTable *_ct;
+
+  G1ParScanThreadState* _pss;
+  G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl;
+
   G1RemSetScanState* _scan_state;
 
+  uint   _worker_i;
+
   size_t _cards_scanned;
   size_t _cards_claimed;
   size_t _cards_skipped;
 
-  G1CollectedHeap* _g1h;
-
-  G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl;
-  CodeBlobClosure* _code_root_cl;
-
-  G1BlockOffsetTable* _bot;
-  G1CardTable *_ct;
+  Tickspan _rem_set_root_scan_time;
+  Tickspan _rem_set_trim_partially_time;
 
-  double _strong_code_root_scan_time_sec;
-  uint   _worker_i;
+  Tickspan _strong_code_root_scan_time;
+  Tickspan _strong_code_trim_partially_time;
 
   void claim_card(size_t card_index, const uint region_idx_for_card);
   void scan_card(MemRegion mr, uint region_idx_for_card);
+
+  void scan_rem_set_roots(HeapRegion* r);
   void scan_strong_code_roots(HeapRegion* r);
 public:
   G1ScanRSForRegionClosure(G1RemSetScanState* scan_state,
                            G1ScanObjsDuringScanRSClosure* scan_obj_on_card,
-                           CodeBlobClosure* code_root_cl,
+                           G1ParScanThreadState* pss,
                            uint worker_i);
 
   bool do_heap_region(HeapRegion* r);
 
-  double strong_code_root_scan_time_sec() {
-    return _strong_code_root_scan_time_sec;
-  }
+  Tickspan rem_set_root_scan_time() const { return _rem_set_root_scan_time; }
+  Tickspan rem_set_trim_partially_time() const { return _rem_set_trim_partially_time; }
+
+  Tickspan strong_code_root_scan_time() { return _strong_code_root_scan_time;  }
+  Tickspan strong_code_root_trim_partially_time() { return _strong_code_trim_partially_time; }
 
   size_t cards_scanned() const { return _cards_scanned; }
   size_t cards_claimed() const { return _cards_claimed; }
   size_t cards_skipped() const { return _cards_skipped; }
 };
< prev index next >