< prev index next >
src/hotspot/share/gc/shared/weakProcessor.cpp
Print this page
rev 53522 : imported patch 8213229-kbarrett-review
rev 53524 : imported patch 8217778-stringtable-wrong-dead-count
@@ -34,19 +34,20 @@
#include "runtime/globals.hpp"
#include "utilities/macros.hpp"
void WeakProcessor::weak_oops_do(BoolObjectClosure* is_alive, OopClosure* keep_alive) {
StringTable::reset_dead_counter();
- CountingIsAliveClosure<BoolObjectClosure> cl(is_alive);
FOR_EACH_WEAK_PROCESSOR_PHASE(phase) {
if (WeakProcessorPhases::is_serial(phase)) {
+ CountingIsAliveClosure<BoolObjectClosure> cl(is_alive);
WeakProcessorPhases::processor(phase)(&cl, keep_alive);
} else {
- WeakProcessorPhases::oop_storage(phase)->weak_oops_do(&cl, keep_alive);
- }
+ CountingSkippedIsAliveClosure<BoolObjectClosure, OopClosure> cl(is_alive, keep_alive);
+ WeakProcessorPhases::oop_storage(phase)->oops_do(&cl);
if (WeakProcessorPhases::is_stringtable(phase)) {
- StringTable::inc_dead_counter(cl.num_dead());
+ StringTable::inc_dead_counter(cl.num_dead() + cl.num_skipped());
+ }
}
}
StringTable::finish_dead_counter();
}
< prev index next >