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) ||