< prev index next >
src/share/vm/gc/g1/g1ConcurrentMark.cpp
Print this page
*** 1121,1131 ****
// Clear the marking state because we will be restarting
// marking due to overflowing the global mark stack.
reset_marking_state();
} else {
{
! GCTraceTime(Debug, gc) trace("Aggregate Data", g1h->gc_timer_cm());
// Aggregate the per-task counting data that we have accumulated
// while marking.
aggregate_count_data();
}
--- 1121,1131 ----
// Clear the marking state because we will be restarting
// marking due to overflowing the global mark stack.
reset_marking_state();
} else {
{
! GCTraceTime(Debug, gc, phases) trace("Aggregate Data", g1h->gc_timer_cm());
// Aggregate the per-task counting data that we have accumulated
// while marking.
aggregate_count_data();
}
*** 2042,2052 ****
G1CMIsAliveClosure g1_is_alive(g1h);
// Inner scope to exclude the cleaning of the string and symbol
// tables from the displayed time.
{
! GCTraceTime(Debug, gc) trace("Reference Processing", g1h->gc_timer_cm());
ReferenceProcessor* rp = g1h->ref_processor_cm();
// See the comment in G1CollectedHeap::ref_processing_init()
// about how reference processing currently works in G1.
--- 2042,2052 ----
G1CMIsAliveClosure g1_is_alive(g1h);
// Inner scope to exclude the cleaning of the string and symbol
// tables from the displayed time.
{
! GCTraceTime(Debug, gc, phases) trace("Reference Processing", g1h->gc_timer_cm());
ReferenceProcessor* rp = g1h->ref_processor_cm();
// See the comment in G1CollectedHeap::ref_processing_init()
// about how reference processing currently works in G1.
*** 2131,2162 ****
}
assert(_markStack.isEmpty(), "Marking should have completed");
// Unload Klasses, String, Symbols, Code Cache, etc.
- {
- GCTraceTime(Debug, gc) trace("Unloading", g1h->gc_timer_cm());
-
if (ClassUnloadingWithConcurrentMark) {
bool purged_classes;
{
! GCTraceTime(Trace, gc) trace("System Dictionary Unloading", g1h->gc_timer_cm());
purged_classes = SystemDictionary::do_unloading(&g1_is_alive, false /* Defer klass cleaning */);
}
{
! GCTraceTime(Trace, gc) trace("Parallel Unloading", g1h->gc_timer_cm());
weakRefsWorkParallelPart(&g1_is_alive, purged_classes);
}
}
if (G1StringDedup::is_enabled()) {
! GCTraceTime(Trace, gc) trace("String Deduplication Unlink", g1h->gc_timer_cm());
G1StringDedup::unlink(&g1_is_alive);
}
- }
}
void G1ConcurrentMark::swapMarkBitMaps() {
G1CMBitMapRO* temp = _prevMarkBitMap;
_prevMarkBitMap = (G1CMBitMapRO*)_nextMarkBitMap;
--- 2131,2158 ----
}
assert(_markStack.isEmpty(), "Marking should have completed");
// Unload Klasses, String, Symbols, Code Cache, etc.
if (ClassUnloadingWithConcurrentMark) {
bool purged_classes;
{
! GCTraceTime(Debug, gc, phases) trace("System Dictionary Unloading", g1h->gc_timer_cm());
purged_classes = SystemDictionary::do_unloading(&g1_is_alive, false /* Defer klass cleaning */);
}
{
! GCTraceTime(Debug, gc, phases) trace("Parallel Unloading", g1h->gc_timer_cm());
weakRefsWorkParallelPart(&g1_is_alive, purged_classes);
}
}
if (G1StringDedup::is_enabled()) {
! GCTraceTime(Debug, gc, phases) trace("String Deduplication Unlink", g1h->gc_timer_cm());
G1StringDedup::unlink(&g1_is_alive);
}
}
void G1ConcurrentMark::swapMarkBitMaps() {
G1CMBitMapRO* temp = _prevMarkBitMap;
_prevMarkBitMap = (G1CMBitMapRO*)_nextMarkBitMap;
*** 2270,2280 ****
void G1ConcurrentMark::checkpointRootsFinalWork() {
ResourceMark rm;
HandleMark hm;
G1CollectedHeap* g1h = G1CollectedHeap::heap();
! GCTraceTime(Debug, gc) trace("Finalize Marking", g1h->gc_timer_cm());
g1h->ensure_parsability(false);
// this is remark, so we'll use up all active threads
uint active_workers = g1h->workers()->active_workers();
--- 2266,2276 ----
void G1ConcurrentMark::checkpointRootsFinalWork() {
ResourceMark rm;
HandleMark hm;
G1CollectedHeap* g1h = G1CollectedHeap::heap();
! GCTraceTime(Debug, gc, phases) trace("Finalize Marking", g1h->gc_timer_cm());
g1h->ensure_parsability(false);
// this is remark, so we'll use up all active threads
uint active_workers = g1h->workers()->active_workers();
< prev index next >