< prev index next >
src/share/vm/gc_implementation/parallelScavenge/cardTableExtension.cpp
Print this page
rev 8068 : imported patch parallelscavenge_cleanup
*** 74,86 ****
PSYoungGen* _young_gen;
CardTableExtension* _card_table;
public:
CheckForUnmarkedObjects() {
! ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
! assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
!
_young_gen = heap->young_gen();
_card_table = barrier_set_cast<CardTableExtension>(heap->barrier_set());
// No point in asserting barrier set type here. Need to make CardTableExtension
// a unique barrier set type.
}
--- 74,84 ----
PSYoungGen* _young_gen;
CardTableExtension* _card_table;
public:
CheckForUnmarkedObjects() {
! ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
_young_gen = heap->young_gen();
_card_table = barrier_set_cast<CardTableExtension>(heap->barrier_set());
// No point in asserting barrier set type here. Need to make CardTableExtension
// a unique barrier set type.
}
*** 323,345 ****
// This should be called before a scavenge.
void CardTableExtension::verify_all_young_refs_imprecise() {
CheckForUnmarkedObjects check;
! ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
! assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
!
PSOldGen* old_gen = heap->old_gen();
old_gen->object_iterate(&check);
}
// This should be called immediately after a scavenge, before mutators resume.
void CardTableExtension::verify_all_young_refs_precise() {
! ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
! assert(heap->kind() == CollectedHeap::ParallelScavengeHeap, "Sanity");
!
PSOldGen* old_gen = heap->old_gen();
CheckForPreciseMarks check(
heap->young_gen(),
barrier_set_cast<CardTableExtension>(heap->barrier_set()));
--- 321,339 ----
// This should be called before a scavenge.
void CardTableExtension::verify_all_young_refs_imprecise() {
CheckForUnmarkedObjects check;
! ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
PSOldGen* old_gen = heap->old_gen();
old_gen->object_iterate(&check);
}
// This should be called immediately after a scavenge, before mutators resume.
void CardTableExtension::verify_all_young_refs_precise() {
! ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
PSOldGen* old_gen = heap->old_gen();
CheckForPreciseMarks check(
heap->young_gen(),
barrier_set_cast<CardTableExtension>(heap->barrier_set()));
*** 349,359 ****
verify_all_young_refs_precise_helper(old_gen->object_space()->used_region());
}
void CardTableExtension::verify_all_young_refs_precise_helper(MemRegion mr) {
CardTableExtension* card_table =
! barrier_set_cast<CardTableExtension>(Universe::heap()->barrier_set());
jbyte* bot = card_table->byte_for(mr.start());
jbyte* top = card_table->byte_for(mr.end());
while(bot <= top) {
assert(*bot == clean_card || *bot == verify_card, "Found unwanted or unknown card mark");
--- 343,353 ----
verify_all_young_refs_precise_helper(old_gen->object_space()->used_region());
}
void CardTableExtension::verify_all_young_refs_precise_helper(MemRegion mr) {
CardTableExtension* card_table =
! barrier_set_cast<CardTableExtension>(ParallelScavengeHeap::heap()->barrier_set());
jbyte* bot = card_table->byte_for(mr.start());
jbyte* top = card_table->byte_for(mr.end());
while(bot <= top) {
assert(*bot == clean_card || *bot == verify_card, "Found unwanted or unknown card mark");
*** 521,531 ****
MemRegion new_committed =
MemRegion(min_prev_start, cur_committed.end());
cur_committed = new_committed;
}
#ifdef ASSERT
! ParallelScavengeHeap* heap = (ParallelScavengeHeap*)Universe::heap();
assert(cur_committed.start() ==
(HeapWord*) align_size_up((uintptr_t) cur_committed.start(),
os::vm_page_size()),
"Starts should have proper alignment");
#endif
--- 515,525 ----
MemRegion new_committed =
MemRegion(min_prev_start, cur_committed.end());
cur_committed = new_committed;
}
#ifdef ASSERT
! ParallelScavengeHeap* heap = ParallelScavengeHeap::heap();
assert(cur_committed.start() ==
(HeapWord*) align_size_up((uintptr_t) cur_committed.start(),
os::vm_page_size()),
"Starts should have proper alignment");
#endif
< prev index next >