src/share/vm/memory/cardTableRS.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/memory/cardTableRS.cpp Wed Aug 14 08:58:50 2013
--- new/src/share/vm/memory/cardTableRS.cpp Wed Aug 14 08:58:49 2013
*** 319,357 ****
--- 319,347 ----
// There's a bit of subtlety in the clear() and invalidate()
// methods that we exploit here and in invalidate_or_clear()
// below to avoid missing cards at the fringes. If clear() or
// invalidate() are changed in the future, this code should
// be revisited. 20040107.ysr
! Generation* old_gen = gen;
! for(Generation* prev_gen = gch->prev_gen(g);
! prev_gen != NULL;
g = prev_gen, prev_gen = gch->prev_gen(g)) {
MemRegion to_be_cleared_mr = g->prev_used_region();
clear(to_be_cleared_mr);
}
! clear(old_gen->prev_used_region());
! Generation* young_gen = gch->prev_gen(old_gen);
+ clear(young_gen->prev_used_region());
}
- void CardTableRS::invalidate_or_clear(Generation* gen, bool younger) {
GenCollectedHeap* gch = GenCollectedHeap::heap();
// For each generation gen (and younger)
// invalidate the cards for the currently occupied part
// of that generation and clear the cards for the
+ // For generation gen invalidate the cards for the currently
+ // occupied part of that generation and clear the cards for the
// unoccupied part of the generation (if any, making use
// of that generation's prev_used_region to determine that
// region). No need to do anything for the youngest
// generation. Also see note#20040107.ysr above.
! Generation* g = gen;
! for(Generation* prev_gen = gch->prev_gen(g); prev_gen != NULL;
g = prev_gen, prev_gen = gch->prev_gen(g)) {
MemRegion used_mr = g->used_region();
MemRegion to_be_cleared_mr = g->prev_used_region().minus(used_mr);
! MemRegion used_mr = gen->used_region();
! MemRegion to_be_cleared_mr = gen->prev_used_region().minus(used_mr);
if (!to_be_cleared_mr.is_empty()) {
clear(to_be_cleared_mr);
}
invalidate(used_mr);
if (!younger) break;
}
}
class VerifyCleanCardClosure: public OopClosure {
private:
src/share/vm/memory/cardTableRS.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File