comparison src/share/vm/memory/space.hpp @ 7448:b735136e0d82

8004132: SerialGC: ValidateMarkSweep broken when running GCOld Summary: Remove bit-rotten ValidateMarkSweep functionality and flag. Reviewed-by: johnc, jmasa Contributed-by: tamao <tao.mao@oracle.com>
author johnc
date Wed, 02 Jan 2013 11:32:41 -0800
parents da91efe96a93
children db9981fd3124
comparison
equal deleted inserted replaced
7447:1de1b145f6bc 7448:b735136e0d82
653 * after their pointers have been \ 653 * after their pointers have been \
654 * updated, until the actual compaction is done. dld, 4/00 */ \ 654 * updated, until the actual compaction is done. dld, 4/00 */ \
655 assert(block_is_obj(q), \ 655 assert(block_is_obj(q), \
656 "should be at block boundaries, and should be looking at objs"); \ 656 "should be at block boundaries, and should be looking at objs"); \
657 \ 657 \
658 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::track_interior_pointers(oop(q))); \
659 \
660 /* point all the oops to the new location */ \ 658 /* point all the oops to the new location */ \
661 size_t size = oop(q)->adjust_pointers(); \ 659 size_t size = oop(q)->adjust_pointers(); \
662 size = adjust_obj_size(size); \ 660 size = adjust_obj_size(size); \
663 \
664 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::check_interior_pointers()); \
665 \
666 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::validate_live_oop(oop(q), size)); \
667 \ 661 \
668 q += size; \ 662 q += size; \
669 } \ 663 } \
670 \ 664 \
671 if (_first_dead == t) { \ 665 if (_first_dead == t) { \
683 while (q < t) { \ 677 while (q < t) { \
684 /* prefetch beyond q */ \ 678 /* prefetch beyond q */ \
685 Prefetch::write(q, interval); \ 679 Prefetch::write(q, interval); \
686 if (oop(q)->is_gc_marked()) { \ 680 if (oop(q)->is_gc_marked()) { \
687 /* q is alive */ \ 681 /* q is alive */ \
688 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::track_interior_pointers(oop(q))); \
689 /* point all the oops to the new location */ \ 682 /* point all the oops to the new location */ \
690 size_t size = oop(q)->adjust_pointers(); \ 683 size_t size = oop(q)->adjust_pointers(); \
691 size = adjust_obj_size(size); \ 684 size = adjust_obj_size(size); \
692 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::check_interior_pointers()); \
693 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::validate_live_oop(oop(q), size)); \
694 debug_only(prev_q = q); \ 685 debug_only(prev_q = q); \
695 q += size; \ 686 q += size; \
696 } else { \ 687 } else { \
697 /* q is not a live object, so its mark should point at the next \ 688 /* q is not a live object, so its mark should point at the next \
698 * live object */ \ 689 * live object */ \
723 \ 714 \
724 while (q < end) { \ 715 while (q < end) { \
725 size_t size = obj_size(q); \ 716 size_t size = obj_size(q); \
726 assert(!oop(q)->is_gc_marked(), \ 717 assert(!oop(q)->is_gc_marked(), \
727 "should be unmarked (special dense prefix handling)"); \ 718 "should be unmarked (special dense prefix handling)"); \
728 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::live_oop_moved_to(q, size, q)); \
729 debug_only(prev_q = q); \ 719 debug_only(prev_q = q); \
730 q += size; \ 720 q += size; \
731 } \ 721 } \
732 ) /* debug_only */ \ 722 ) /* debug_only */ \
733 \ 723 \
757 \ 747 \
758 /* prefetch beyond compaction_top */ \ 748 /* prefetch beyond compaction_top */ \
759 Prefetch::write(compaction_top, copy_interval); \ 749 Prefetch::write(compaction_top, copy_interval); \
760 \ 750 \
761 /* copy object and reinit its mark */ \ 751 /* copy object and reinit its mark */ \
762 VALIDATE_MARK_SWEEP_ONLY(MarkSweep::live_oop_moved_to(q, size, \
763 compaction_top)); \
764 assert(q != compaction_top, "everything in this pass should be moving"); \ 752 assert(q != compaction_top, "everything in this pass should be moving"); \
765 Copy::aligned_conjoint_words(q, compaction_top, size); \ 753 Copy::aligned_conjoint_words(q, compaction_top, size); \
766 oop(compaction_top)->init_mark(); \ 754 oop(compaction_top)->init_mark(); \
767 assert(oop(compaction_top)->klass() != NULL, "should have a class"); \ 755 assert(oop(compaction_top)->klass() != NULL, "should have a class"); \
768 \ 756 \