31 // collection set. |
31 // collection set. |
32 |
32 |
33 class G1CollectedHeap; |
33 class G1CollectedHeap; |
34 class CardTableModRefBarrierSet; |
34 class CardTableModRefBarrierSet; |
35 class ConcurrentG1Refine; |
35 class ConcurrentG1Refine; |
|
36 class G1ParPushHeapRSClosure; |
36 |
37 |
37 // A G1RemSet in which each heap region has a rem set that records the |
38 // A G1RemSet in which each heap region has a rem set that records the |
38 // external heap references into it. Uses a mod ref bs to track updates, |
39 // external heap references into it. Uses a mod ref bs to track updates, |
39 // so that they can be used to update the individual region remsets. |
40 // so that they can be used to update the individual region remsets. |
40 |
41 |
66 size_t* _cards_scanned; |
67 size_t* _cards_scanned; |
67 size_t _total_cards_scanned; |
68 size_t _total_cards_scanned; |
68 |
69 |
69 // Used for caching the closure that is responsible for scanning |
70 // Used for caching the closure that is responsible for scanning |
70 // references into the collection set. |
71 // references into the collection set. |
71 OopsInHeapRegionClosure** _cset_rs_update_cl; |
72 G1ParPushHeapRSClosure** _cset_rs_update_cl; |
72 |
73 |
73 // Print the given summary info |
74 // Print the given summary info |
74 virtual void print_summary_info(G1RemSetSummary * summary, const char * header = NULL); |
75 virtual void print_summary_info(G1RemSetSummary * summary, const char * header = NULL); |
75 public: |
76 public: |
76 // This is called to reset dual hash tables after the gc pause |
77 // This is called to reset dual hash tables after the gc pause |
93 // The "worker_i" param is for the parallel case where the id |
94 // The "worker_i" param is for the parallel case where the id |
94 // of the worker thread calling this function can be helpful in |
95 // of the worker thread calling this function can be helpful in |
95 // partitioning the work to be done. It should be the same as |
96 // partitioning the work to be done. It should be the same as |
96 // the "i" passed to the calling thread's work(i) function. |
97 // the "i" passed to the calling thread's work(i) function. |
97 // In the sequential case this param will be ignored. |
98 // In the sequential case this param will be ignored. |
98 void oops_into_collection_set_do(OopsInHeapRegionClosure* blk, |
99 void oops_into_collection_set_do(G1ParPushHeapRSClosure* blk, |
99 CodeBlobClosure* code_root_cl, |
100 CodeBlobClosure* code_root_cl, |
100 uint worker_i); |
101 uint worker_i); |
101 |
102 |
102 // Prepare for and cleanup after an oops_into_collection_set_do |
103 // Prepare for and cleanup after an oops_into_collection_set_do |
103 // call. Must call each of these once before and after (in sequential |
104 // call. Must call each of these once before and after (in sequential |
105 // opportunity to sequential setup and teardown of structures needed by a |
106 // opportunity to sequential setup and teardown of structures needed by a |
106 // parallel iteration over the CS's RS.) |
107 // parallel iteration over the CS's RS.) |
107 void prepare_for_oops_into_collection_set_do(); |
108 void prepare_for_oops_into_collection_set_do(); |
108 void cleanup_after_oops_into_collection_set_do(); |
109 void cleanup_after_oops_into_collection_set_do(); |
109 |
110 |
110 void scanRS(OopsInHeapRegionClosure* oc, |
111 void scanRS(G1ParPushHeapRSClosure* oc, |
111 CodeBlobClosure* code_root_cl, |
112 CodeBlobClosure* code_root_cl, |
112 uint worker_i); |
113 uint worker_i); |
113 |
114 |
114 void updateRS(DirtyCardQueue* into_cset_dcq, uint worker_i); |
115 void updateRS(DirtyCardQueue* into_cset_dcq, uint worker_i); |
115 |
116 |