Mercurial > hg > graal-jvmci-8
comparison src/share/vm/memory/cardTableModRefBS.cpp @ 940:8624da129f0b
6841313: G1: dirty cards of survivor regions in parallel
Reviewed-by: tonyp, iveresov
author | apetrusenko |
---|---|
date | Mon, 31 Aug 2009 05:27:29 -0700 |
parents | ff004bcd2596 |
children | 6aa7255741f3 |
comparison
equal
deleted
inserted
replaced
939:9eebd3ac74cf | 940:8624da129f0b |
---|---|
658 | 658 |
659 void CardTableModRefBS::verify_clean_region(MemRegion mr) { | 659 void CardTableModRefBS::verify_clean_region(MemRegion mr) { |
660 GuaranteeNotModClosure blk(this); | 660 GuaranteeNotModClosure blk(this); |
661 non_clean_card_iterate_work(mr, &blk, false); | 661 non_clean_card_iterate_work(mr, &blk, false); |
662 } | 662 } |
663 | |
664 // To verify a MemRegion is entirely dirty this closure is passed to | |
665 // dirty_card_iterate. If the region is dirty do_MemRegion will be | |
666 // invoked only once with a MemRegion equal to the one being | |
667 // verified. | |
668 class GuaranteeDirtyClosure: public MemRegionClosure { | |
669 CardTableModRefBS* _ct; | |
670 MemRegion _mr; | |
671 bool _result; | |
672 public: | |
673 GuaranteeDirtyClosure(CardTableModRefBS* ct, MemRegion mr) | |
674 : _ct(ct), _mr(mr), _result(false) {} | |
675 void do_MemRegion(MemRegion mr) { | |
676 _result = _mr.equals(mr); | |
677 } | |
678 bool result() const { return _result; } | |
679 }; | |
680 | |
681 void CardTableModRefBS::verify_dirty_region(MemRegion mr) { | |
682 GuaranteeDirtyClosure blk(this, mr); | |
683 dirty_card_iterate(mr, &blk); | |
684 guarantee(blk.result(), "Non-dirty cards in region that should be dirty"); | |
685 } | |
663 #endif | 686 #endif |
664 | 687 |
665 bool CardTableModRefBSForCTRS::card_will_be_scanned(jbyte cv) { | 688 bool CardTableModRefBSForCTRS::card_will_be_scanned(jbyte cv) { |
666 return | 689 return |
667 CardTableModRefBS::card_will_be_scanned(cv) || | 690 CardTableModRefBS::card_will_be_scanned(cv) || |