< prev index next >
src/share/vm/memory/freeList.cpp
Print this page
rev 7212 : imported patch rev3
*** 285,311 ****
curFC = curFC->next();
}
return false;
}
- #ifndef PRODUCT
template <class Chunk>
! void FreeList<Chunk>::assert_proper_lock_protection_work() const {
! assert(protecting_lock() != NULL, "Don't call this directly");
! assert(ParallelGCThreads > 0, "Don't call this directly");
Thread* thr = Thread::current();
if (thr->is_VM_thread() || thr->is_ConcurrentGC_thread()) {
// assert that we are holding the freelist lock
} else if (thr->is_GC_task_thread()) {
assert(protecting_lock()->owned_by_self(), "FreeList RACE DETECTED");
} else if (thr->is_Java_thread()) {
assert(!SafepointSynchronize::is_at_safepoint(), "Should not be executing");
} else {
ShouldNotReachHere(); // unaccounted thread type?
}
- }
#endif
// Print the "label line" for free list stats.
template <class Chunk>
void FreeList<Chunk>::print_labels_on(outputStream* st, const char* c) {
st->print("%16s\t", c);
--- 285,314 ----
curFC = curFC->next();
}
return false;
}
template <class Chunk>
! void FreeList<Chunk>::assert_proper_lock_protection() const {
! #ifdef ASSERT
! // Nothing to do if the list has no assigned protecting lock
! if (protecting_lock() == NULL) {
! return;
! }
!
Thread* thr = Thread::current();
if (thr->is_VM_thread() || thr->is_ConcurrentGC_thread()) {
// assert that we are holding the freelist lock
} else if (thr->is_GC_task_thread()) {
assert(protecting_lock()->owned_by_self(), "FreeList RACE DETECTED");
} else if (thr->is_Java_thread()) {
assert(!SafepointSynchronize::is_at_safepoint(), "Should not be executing");
} else {
ShouldNotReachHere(); // unaccounted thread type?
}
#endif
+ }
// Print the "label line" for free list stats.
template <class Chunk>
void FreeList<Chunk>::print_labels_on(outputStream* st, const char* c) {
st->print("%16s\t", c);
< prev index next >