< prev index next >
src/share/vm/gc/parallel/psPromotionManager.cpp
Print this page
*** 28,37 ****
--- 28,38 ----
#include "gc/parallel/psOldGen.hpp"
#include "gc/parallel/psPromotionManager.inline.hpp"
#include "gc/parallel/psScavenge.inline.hpp"
#include "gc/shared/gcTrace.hpp"
#include "gc/shared/taskqueue.inline.hpp"
+ #include "logging/log.hpp"
#include "memory/allocation.inline.hpp"
#include "memory/memRegion.hpp"
#include "memory/padded.inline.hpp"
#include "oops/instanceKlass.inline.hpp"
#include "oops/instanceMirrorKlass.inline.hpp"
*** 97,107 ****
}
bool PSPromotionManager::post_scavenge(YoungGCTracer& gc_tracer) {
bool promotion_failure_occurred = false;
! TASKQUEUE_STATS_ONLY(if (PrintTaskqueue) print_taskqueue_stats());
for (uint i = 0; i < ParallelGCThreads + 1; i++) {
PSPromotionManager* manager = manager_array(i);
assert(manager->claimed_stack_depth()->is_empty(), "should be empty");
if (manager->_promotion_failed_info.has_failed()) {
gc_tracer.report_promotion_failed(manager->_promotion_failed_info);
--- 98,108 ----
}
bool PSPromotionManager::post_scavenge(YoungGCTracer& gc_tracer) {
bool promotion_failure_occurred = false;
! TASKQUEUE_STATS_ONLY(print_taskqueue_stats());
for (uint i = 0; i < ParallelGCThreads + 1; i++) {
PSPromotionManager* manager = manager_array(i);
assert(manager->claimed_stack_depth()->is_empty(), "should be empty");
if (manager->_promotion_failed_info.has_failed()) {
gc_tracer.report_promotion_failed(manager->_promotion_failed_info);
*** 126,136 ****
"thr push steal chunked chunks",
"--- ---------- ---------- ---------- ----------"
};
void
! PSPromotionManager::print_taskqueue_stats(outputStream* const out) {
out->print_cr("== GC Tasks Stats, GC %3d",
ParallelScavengeHeap::heap()->total_collections());
TaskQueueStats totals;
out->print("thr "); TaskQueueStats::print_header(1, out); out->cr();
--- 127,143 ----
"thr push steal chunked chunks",
"--- ---------- ---------- ---------- ----------"
};
void
! PSPromotionManager::print_taskqueue_stats() {
! LogHandle(gc, task, stats) log;
! if (!log.is_develop()) {
! return;
! }
! ResourceMark rm;
! outputStream* out = log.develop_stream();
out->print_cr("== GC Tasks Stats, GC %3d",
ParallelScavengeHeap::heap()->total_collections());
TaskQueueStats totals;
out->print("thr "); TaskQueueStats::print_header(1, out); out->cr();
*** 366,381 ****
// i.e. if next is non-NULL.
T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj);
T next_oop = oopDesc::load_heap_oop(next_addr);
if (!oopDesc::is_null(next_oop)) { // i.e. ref is not "active"
T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj);
! debug_only(
! if(TraceReferenceGC && PrintGCDetails) {
! gclog_or_tty->print_cr(" Process discovered as normal "
! PTR_FORMAT, p2i(discovered_addr));
! }
! )
if (PSScavenge::should_scavenge(discovered_addr)) {
pm->claim_or_forward_depth(discovered_addr);
}
}
// Treat next as normal oop; next is a link in the reference queue.
--- 373,383 ----
// i.e. if next is non-NULL.
T* next_addr = (T*)java_lang_ref_Reference::next_addr(obj);
T next_oop = oopDesc::load_heap_oop(next_addr);
if (!oopDesc::is_null(next_oop)) { // i.e. ref is not "active"
T* discovered_addr = (T*)java_lang_ref_Reference::discovered_addr(obj);
! log_develop(gc, ref)(" Process discovered as normal " PTR_FORMAT, p2i(discovered_addr));
if (PSScavenge::should_scavenge(discovered_addr)) {
pm->claim_or_forward_depth(discovered_addr);
}
}
// Treat next as normal oop; next is a link in the reference queue.
*** 428,444 ****
// No unallocation to worry about.
obj = obj->forwardee();
}
! #ifndef PRODUCT
! if (TraceScavenge) {
! gclog_or_tty->print_cr("{%s %s " PTR_FORMAT " (%d)}",
! "promotion-failure",
! obj->klass()->internal_name(),
! p2i(obj), obj->size());
!
! }
! #endif
return obj;
}
--- 430,438 ----
// No unallocation to worry about.
obj = obj->forwardee();
}
! log_develop(gc, scavenge)("{promotion-failure %s " PTR_FORMAT " (%d)}", obj->klass()->internal_name(), p2i(obj), obj->size());
return obj;
}
< prev index next >