< prev index next >

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

Print this page
rev 13131 : imported patch 8178148-more-detailed-scan-rs-logging
rev 13132 : imported patch 8178148-sangheon-review
rev 13135 : imported patch 8175554-improve-g1updatersorpushrefclosure
rev 13137 : imported patch 8175554-erikd-review2
rev 13138 : [mq]: 8175554-erikd-review3

*** 39,52 **** class CardTableModRefBS; class G1BlockOffsetTable; class CodeBlobClosure; class G1CollectedHeap; class G1HotCardCache; - class G1ParPushHeapRSClosure; class G1RemSetScanState; class G1Policy; class G1SATBCardTableModRefBS; class HeapRegionClaimer; // A G1RemSet in which each heap region has a rem set that records the // external heap references into it. Uses a mod ref bs to track updates, // so that they can be used to update the individual region remsets. --- 39,54 ---- class CardTableModRefBS; class G1BlockOffsetTable; class CodeBlobClosure; class G1CollectedHeap; class G1HotCardCache; class G1RemSetScanState; + class G1ParScanThreadState; class G1Policy; class G1SATBCardTableModRefBS; + class G1ScanObjsDuringScanRSClosure; + class G1ScanObjsDuringUpdateRSClosure; class HeapRegionClaimer; // A G1RemSet in which each heap region has a rem set that records the // external heap references into it. Uses a mod ref bs to track updates, // so that they can be used to update the individual region remsets.
*** 92,116 **** G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs, G1HotCardCache* hot_card_cache); ~G1RemSet(); ! // Invoke "cl->do_oop" on all pointers into the collection set ! // from objects in regions outside the collection set (having ! // invoked "cl->set_region" to set the "from" region correctly ! // beforehand.) // ! // Apply non_heap_roots on the oops of the unmarked nmethods ! // on the strong code roots list for each region in the ! // collection set. ! // ! // The "worker_i" param is for the parallel case where the id ! // of the worker thread calling this function can be helpful in ! // partitioning the work to be done. It should be the same as ! // the "i" passed to the calling thread's work(i) function. ! // In the sequential case this param will be ignored. ! void oops_into_collection_set_do(G1ParPushHeapRSClosure* cl, CodeBlobClosure* heap_region_codeblobs, 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 --- 94,109 ---- G1RemSet(G1CollectedHeap* g1, CardTableModRefBS* ct_bs, G1HotCardCache* hot_card_cache); ~G1RemSet(); ! // 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); // Prepare for and cleanup after an oops_into_collection_set_do // call. Must call each of these once before and after (in sequential
*** 118,136 **** // opportunity to sequential setup and teardown of structures needed by a // parallel iteration over the CS's RS.) void prepare_for_oops_into_collection_set_do(); void cleanup_after_oops_into_collection_set_do(); ! void scan_rem_set(G1ParPushHeapRSClosure* oops_in_heap_closure, CodeBlobClosure* heap_region_codeblobs, uint worker_i); G1RemSetScanState* scan_state() const { return _scan_state; } // Flush remaining refinement buffers into the remembered set, // applying oops_in_heap_closure on the references found. ! void update_rem_set(DirtyCardQueue* into_cset_dcq, G1ParPushHeapRSClosure* oops_in_heap_closure, uint worker_i); // Record, if necessary, the fact that *p (where "p" is in region "from", // which is required to be non-NULL) has changed to a new non-NULL value. template <class T> void par_write_ref(HeapRegion* from, T* p, uint tid); --- 111,129 ---- // opportunity to sequential setup and teardown of structures needed by a // parallel iteration over the CS's RS.) void prepare_for_oops_into_collection_set_do(); void cleanup_after_oops_into_collection_set_do(); ! void scan_rem_set(G1ScanObjsDuringScanRSClosure* oops_in_heap_closure, CodeBlobClosure* heap_region_codeblobs, uint worker_i); G1RemSetScanState* scan_state() const { return _scan_state; } // Flush remaining refinement buffers into the remembered set, // applying oops_in_heap_closure on the references found. ! void update_rem_set(DirtyCardQueue* into_cset_dcq, G1ScanObjsDuringUpdateRSClosure* oops_in_heap_closure, uint worker_i); // Record, if necessary, the fact that *p (where "p" is in region "from", // which is required to be non-NULL) has changed to a new non-NULL value. template <class T> void par_write_ref(HeapRegion* from, T* p, uint tid);
*** 147,158 **** uint worker_i); // Refine the card corresponding to "card_ptr". Returns "true" if the given card contains // oops that have references into the current collection set. bool refine_card_during_gc(jbyte* card_ptr, ! uint worker_i, ! G1ParPushHeapRSClosure* oops_in_heap_closure); // Print accumulated summary info from the start of the VM. void print_summary_info(); // Print accumulated summary info from the last time called. --- 140,150 ---- uint worker_i); // Refine the card corresponding to "card_ptr". Returns "true" if the given card contains // oops that have references into the current collection set. bool refine_card_during_gc(jbyte* card_ptr, ! G1ScanObjsDuringUpdateRSClosure* oops_in_heap_closure); // Print accumulated summary info from the start of the VM. void print_summary_info(); // Print accumulated summary info from the last time called.
*** 186,196 **** size_t _cards_claimed; size_t _cards_skipped; G1CollectedHeap* _g1h; ! G1ParPushHeapRSClosure* _push_heap_cl; CodeBlobClosure* _code_root_cl; G1BlockOffsetTable* _bot; G1SATBCardTableModRefBS *_ct_bs; --- 178,188 ---- size_t _cards_claimed; size_t _cards_skipped; G1CollectedHeap* _g1h; ! G1ScanObjsDuringScanRSClosure* _scan_objs_on_card_cl; CodeBlobClosure* _code_root_cl; G1BlockOffsetTable* _bot; G1SATBCardTableModRefBS *_ct_bs;
*** 200,210 **** void scan_card(size_t index, HeapWord* card_start, HeapRegion *r); void scan_strong_code_roots(HeapRegion* r); public: G1ScanRSClosure(G1RemSetScanState* scan_state, ! G1ParPushHeapRSClosure* push_heap_cl, CodeBlobClosure* code_root_cl, uint worker_i); bool doHeapRegion(HeapRegion* r); --- 192,202 ---- void scan_card(size_t index, HeapWord* card_start, HeapRegion *r); void scan_strong_code_roots(HeapRegion* r); public: G1ScanRSClosure(G1RemSetScanState* scan_state, ! G1ScanObjsDuringScanRSClosure* scan_obj_on_card, CodeBlobClosure* code_root_cl, uint worker_i); bool doHeapRegion(HeapRegion* r);
< prev index next >