mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-26 06:14:49 +02:00
4988100: oop_verify_old_oop appears to be dead
Removed oop_verify_old_oop and allow_dirty. Also reviewed by: alexlamsl@gmail.com Reviewed-by: jmasa, jwilhelm
This commit is contained in:
parent
bb59715dae
commit
f695b75d78
43 changed files with 110 additions and 197 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -2444,7 +2444,7 @@ class VerifyAllOopsClosure: public OopClosure {
|
||||||
virtual void do_oop(narrowOop* p) { VerifyAllOopsClosure::do_oop_work(p); }
|
virtual void do_oop(narrowOop* p) { VerifyAllOopsClosure::do_oop_work(p); }
|
||||||
};
|
};
|
||||||
|
|
||||||
void CompactibleFreeListSpace::verify(bool ignored) const {
|
void CompactibleFreeListSpace::verify() const {
|
||||||
assert_lock_strong(&_freelistLock);
|
assert_lock_strong(&_freelistLock);
|
||||||
verify_objects_initialized();
|
verify_objects_initialized();
|
||||||
MemRegion span = _collector->_span;
|
MemRegion span = _collector->_span;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -492,7 +492,7 @@ class CompactibleFreeListSpace: public CompactibleSpace {
|
||||||
void print() const;
|
void print() const;
|
||||||
void print_on(outputStream* st) const;
|
void print_on(outputStream* st) const;
|
||||||
void prepare_for_verify();
|
void prepare_for_verify();
|
||||||
void verify(bool allow_dirty) const;
|
void verify() const;
|
||||||
void verifyFreeLists() const PRODUCT_RETURN;
|
void verifyFreeLists() const PRODUCT_RETURN;
|
||||||
void verifyIndexedFreeLists() const;
|
void verifyIndexedFreeLists() const;
|
||||||
void verifyIndexedFreeList(size_t size) const;
|
void verifyIndexedFreeList(size_t size) const;
|
||||||
|
|
|
@ -3109,21 +3109,21 @@ ConcurrentMarkSweepGeneration::prepare_for_verify() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ConcurrentMarkSweepGeneration::verify(bool allow_dirty /* ignored */) {
|
ConcurrentMarkSweepGeneration::verify() {
|
||||||
// Locks are normally acquired/released in gc_prologue/gc_epilogue, but those
|
// Locks are normally acquired/released in gc_prologue/gc_epilogue, but those
|
||||||
// are not called when the heap is verified during universe initialization and
|
// are not called when the heap is verified during universe initialization and
|
||||||
// at vm shutdown.
|
// at vm shutdown.
|
||||||
if (freelistLock()->owned_by_self()) {
|
if (freelistLock()->owned_by_self()) {
|
||||||
cmsSpace()->verify(false /* ignored */);
|
cmsSpace()->verify();
|
||||||
} else {
|
} else {
|
||||||
MutexLockerEx fll(freelistLock(), Mutex::_no_safepoint_check_flag);
|
MutexLockerEx fll(freelistLock(), Mutex::_no_safepoint_check_flag);
|
||||||
cmsSpace()->verify(false /* ignored */);
|
cmsSpace()->verify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMSCollector::verify(bool allow_dirty /* ignored */) {
|
void CMSCollector::verify() {
|
||||||
_cmsGen->verify(allow_dirty);
|
_cmsGen->verify();
|
||||||
_permGen->verify(allow_dirty);
|
_permGen->verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -988,7 +988,7 @@ class CMSCollector: public CHeapObj {
|
||||||
CMSGCAdaptivePolicyCounters* gc_adaptive_policy_counters();
|
CMSGCAdaptivePolicyCounters* gc_adaptive_policy_counters();
|
||||||
|
|
||||||
// debugging
|
// debugging
|
||||||
void verify(bool);
|
void verify();
|
||||||
bool verify_after_remark();
|
bool verify_after_remark();
|
||||||
void verify_ok_to_terminate() const PRODUCT_RETURN;
|
void verify_ok_to_terminate() const PRODUCT_RETURN;
|
||||||
void verify_work_stacks_empty() const PRODUCT_RETURN;
|
void verify_work_stacks_empty() const PRODUCT_RETURN;
|
||||||
|
@ -1279,7 +1279,7 @@ class ConcurrentMarkSweepGeneration: public CardGeneration {
|
||||||
|
|
||||||
// Debugging
|
// Debugging
|
||||||
void prepare_for_verify();
|
void prepare_for_verify();
|
||||||
void verify(bool allow_dirty);
|
void verify();
|
||||||
void print_statistics() PRODUCT_RETURN;
|
void print_statistics() PRODUCT_RETURN;
|
||||||
|
|
||||||
// Performance Counters support
|
// Performance Counters support
|
||||||
|
|
|
@ -1120,8 +1120,7 @@ void ConcurrentMark::checkpointRootsFinal(bool clear_all_soft_refs) {
|
||||||
HandleMark hm; // handle scope
|
HandleMark hm; // handle scope
|
||||||
gclog_or_tty->print(" VerifyDuringGC:(before)");
|
gclog_or_tty->print(" VerifyDuringGC:(before)");
|
||||||
Universe::heap()->prepare_for_verify();
|
Universe::heap()->prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ true,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1160,8 +1159,7 @@ void ConcurrentMark::checkpointRootsFinal(bool clear_all_soft_refs) {
|
||||||
HandleMark hm; // handle scope
|
HandleMark hm; // handle scope
|
||||||
gclog_or_tty->print(" VerifyDuringGC:(after)");
|
gclog_or_tty->print(" VerifyDuringGC:(after)");
|
||||||
Universe::heap()->prepare_for_verify();
|
Universe::heap()->prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ true,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UseNextMarking);
|
/* option */ VerifyOption_G1UseNextMarking);
|
||||||
}
|
}
|
||||||
assert(!restart_for_overflow(), "sanity");
|
assert(!restart_for_overflow(), "sanity");
|
||||||
|
@ -1950,8 +1948,7 @@ void ConcurrentMark::cleanup() {
|
||||||
HandleMark hm; // handle scope
|
HandleMark hm; // handle scope
|
||||||
gclog_or_tty->print(" VerifyDuringGC:(before)");
|
gclog_or_tty->print(" VerifyDuringGC:(before)");
|
||||||
Universe::heap()->prepare_for_verify();
|
Universe::heap()->prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ true,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2132,8 +2129,7 @@ void ConcurrentMark::cleanup() {
|
||||||
HandleMark hm; // handle scope
|
HandleMark hm; // handle scope
|
||||||
gclog_or_tty->print(" VerifyDuringGC:(after)");
|
gclog_or_tty->print(" VerifyDuringGC:(after)");
|
||||||
Universe::heap()->prepare_for_verify();
|
Universe::heap()->prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ true,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1291,8 +1291,7 @@ bool G1CollectedHeap::do_collection(bool explicit_gc,
|
||||||
HandleMark hm; // Discard invalid handles created during verification
|
HandleMark hm; // Discard invalid handles created during verification
|
||||||
gclog_or_tty->print(" VerifyBeforeGC:");
|
gclog_or_tty->print(" VerifyBeforeGC:");
|
||||||
prepare_for_verify();
|
prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ true,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1366,8 +1365,7 @@ bool G1CollectedHeap::do_collection(bool explicit_gc,
|
||||||
HandleMark hm; // Discard invalid handles created during verification
|
HandleMark hm; // Discard invalid handles created during verification
|
||||||
gclog_or_tty->print(" VerifyAfterGC:");
|
gclog_or_tty->print(" VerifyAfterGC:");
|
||||||
prepare_for_verify();
|
prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ false,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3036,7 +3034,6 @@ public:
|
||||||
|
|
||||||
class VerifyRegionClosure: public HeapRegionClosure {
|
class VerifyRegionClosure: public HeapRegionClosure {
|
||||||
private:
|
private:
|
||||||
bool _allow_dirty;
|
|
||||||
bool _par;
|
bool _par;
|
||||||
VerifyOption _vo;
|
VerifyOption _vo;
|
||||||
bool _failures;
|
bool _failures;
|
||||||
|
@ -3044,9 +3041,8 @@ public:
|
||||||
// _vo == UsePrevMarking -> use "prev" marking information,
|
// _vo == UsePrevMarking -> use "prev" marking information,
|
||||||
// _vo == UseNextMarking -> use "next" marking information,
|
// _vo == UseNextMarking -> use "next" marking information,
|
||||||
// _vo == UseMarkWord -> use mark word from object header.
|
// _vo == UseMarkWord -> use mark word from object header.
|
||||||
VerifyRegionClosure(bool allow_dirty, bool par, VerifyOption vo)
|
VerifyRegionClosure(bool par, VerifyOption vo)
|
||||||
: _allow_dirty(allow_dirty),
|
: _par(par),
|
||||||
_par(par),
|
|
||||||
_vo(vo),
|
_vo(vo),
|
||||||
_failures(false) {}
|
_failures(false) {}
|
||||||
|
|
||||||
|
@ -3059,7 +3055,7 @@ public:
|
||||||
"Should be unclaimed at verify points.");
|
"Should be unclaimed at verify points.");
|
||||||
if (!r->continuesHumongous()) {
|
if (!r->continuesHumongous()) {
|
||||||
bool failures = false;
|
bool failures = false;
|
||||||
r->verify(_allow_dirty, _vo, &failures);
|
r->verify(_vo, &failures);
|
||||||
if (failures) {
|
if (failures) {
|
||||||
_failures = true;
|
_failures = true;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3127,7 +3123,6 @@ public:
|
||||||
class G1ParVerifyTask: public AbstractGangTask {
|
class G1ParVerifyTask: public AbstractGangTask {
|
||||||
private:
|
private:
|
||||||
G1CollectedHeap* _g1h;
|
G1CollectedHeap* _g1h;
|
||||||
bool _allow_dirty;
|
|
||||||
VerifyOption _vo;
|
VerifyOption _vo;
|
||||||
bool _failures;
|
bool _failures;
|
||||||
|
|
||||||
|
@ -3135,10 +3130,9 @@ public:
|
||||||
// _vo == UsePrevMarking -> use "prev" marking information,
|
// _vo == UsePrevMarking -> use "prev" marking information,
|
||||||
// _vo == UseNextMarking -> use "next" marking information,
|
// _vo == UseNextMarking -> use "next" marking information,
|
||||||
// _vo == UseMarkWord -> use mark word from object header.
|
// _vo == UseMarkWord -> use mark word from object header.
|
||||||
G1ParVerifyTask(G1CollectedHeap* g1h, bool allow_dirty, VerifyOption vo) :
|
G1ParVerifyTask(G1CollectedHeap* g1h, VerifyOption vo) :
|
||||||
AbstractGangTask("Parallel verify task"),
|
AbstractGangTask("Parallel verify task"),
|
||||||
_g1h(g1h),
|
_g1h(g1h),
|
||||||
_allow_dirty(allow_dirty),
|
|
||||||
_vo(vo),
|
_vo(vo),
|
||||||
_failures(false) { }
|
_failures(false) { }
|
||||||
|
|
||||||
|
@ -3148,7 +3142,7 @@ public:
|
||||||
|
|
||||||
void work(uint worker_id) {
|
void work(uint worker_id) {
|
||||||
HandleMark hm;
|
HandleMark hm;
|
||||||
VerifyRegionClosure blk(_allow_dirty, true, _vo);
|
VerifyRegionClosure blk(true, _vo);
|
||||||
_g1h->heap_region_par_iterate_chunked(&blk, worker_id,
|
_g1h->heap_region_par_iterate_chunked(&blk, worker_id,
|
||||||
_g1h->workers()->active_workers(),
|
_g1h->workers()->active_workers(),
|
||||||
HeapRegion::ParVerifyClaimValue);
|
HeapRegion::ParVerifyClaimValue);
|
||||||
|
@ -3158,12 +3152,11 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
void G1CollectedHeap::verify(bool allow_dirty, bool silent) {
|
void G1CollectedHeap::verify(bool silent) {
|
||||||
verify(allow_dirty, silent, VerifyOption_G1UsePrevMarking);
|
verify(silent, VerifyOption_G1UsePrevMarking);
|
||||||
}
|
}
|
||||||
|
|
||||||
void G1CollectedHeap::verify(bool allow_dirty,
|
void G1CollectedHeap::verify(bool silent,
|
||||||
bool silent,
|
|
||||||
VerifyOption vo) {
|
VerifyOption vo) {
|
||||||
if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
|
if (SafepointSynchronize::is_at_safepoint() || ! UseTLAB) {
|
||||||
if (!silent) { gclog_or_tty->print("Roots (excluding permgen) "); }
|
if (!silent) { gclog_or_tty->print("Roots (excluding permgen) "); }
|
||||||
|
@ -3215,7 +3208,7 @@ void G1CollectedHeap::verify(bool allow_dirty,
|
||||||
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
||||||
"sanity check");
|
"sanity check");
|
||||||
|
|
||||||
G1ParVerifyTask task(this, allow_dirty, vo);
|
G1ParVerifyTask task(this, vo);
|
||||||
assert(UseDynamicNumberOfGCThreads ||
|
assert(UseDynamicNumberOfGCThreads ||
|
||||||
workers()->active_workers() == workers()->total_workers(),
|
workers()->active_workers() == workers()->total_workers(),
|
||||||
"If not dynamic should be using all the workers");
|
"If not dynamic should be using all the workers");
|
||||||
|
@ -3237,7 +3230,7 @@ void G1CollectedHeap::verify(bool allow_dirty,
|
||||||
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
assert(check_heap_region_claim_values(HeapRegion::InitialClaimValue),
|
||||||
"sanity check");
|
"sanity check");
|
||||||
} else {
|
} else {
|
||||||
VerifyRegionClosure blk(allow_dirty, false, vo);
|
VerifyRegionClosure blk(false, vo);
|
||||||
heap_region_iterate(&blk);
|
heap_region_iterate(&blk);
|
||||||
if (blk.failures()) {
|
if (blk.failures()) {
|
||||||
failures = true;
|
failures = true;
|
||||||
|
@ -3650,8 +3643,7 @@ G1CollectedHeap::do_collection_pause_at_safepoint(double target_pause_time_ms) {
|
||||||
HandleMark hm; // Discard invalid handles created during verification
|
HandleMark hm; // Discard invalid handles created during verification
|
||||||
gclog_or_tty->print(" VerifyBeforeGC:");
|
gclog_or_tty->print(" VerifyBeforeGC:");
|
||||||
prepare_for_verify();
|
prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ false,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3895,8 +3887,7 @@ G1CollectedHeap::do_collection_pause_at_safepoint(double target_pause_time_ms) {
|
||||||
HandleMark hm; // Discard invalid handles created during verification
|
HandleMark hm; // Discard invalid handles created during verification
|
||||||
gclog_or_tty->print(" VerifyAfterGC:");
|
gclog_or_tty->print(" VerifyAfterGC:");
|
||||||
prepare_for_verify();
|
prepare_for_verify();
|
||||||
Universe::verify(/* allow dirty */ true,
|
Universe::verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UsePrevMarking);
|
/* option */ VerifyOption_G1UsePrevMarking);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1504,10 +1504,10 @@ public:
|
||||||
// Currently there is only one place where this is called with
|
// Currently there is only one place where this is called with
|
||||||
// vo == UseMarkWord, which is to verify the marking during a
|
// vo == UseMarkWord, which is to verify the marking during a
|
||||||
// full GC.
|
// full GC.
|
||||||
void verify(bool allow_dirty, bool silent, VerifyOption vo);
|
void verify(bool silent, VerifyOption vo);
|
||||||
|
|
||||||
// Override; it uses the "prev" marking information
|
// Override; it uses the "prev" marking information
|
||||||
virtual void verify(bool allow_dirty, bool silent);
|
virtual void verify(bool silent);
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
virtual void print_extended_on(outputStream* st) const;
|
virtual void print_extended_on(outputStream* st) const;
|
||||||
|
|
||||||
|
|
|
@ -193,8 +193,7 @@ void G1MarkSweep::mark_sweep_phase1(bool& marked_for_unloading,
|
||||||
// fail. At the end of the GC, the orginal mark word values
|
// fail. At the end of the GC, the orginal mark word values
|
||||||
// (including hash values) are restored to the appropriate
|
// (including hash values) are restored to the appropriate
|
||||||
// objects.
|
// objects.
|
||||||
Universe::heap()->verify(/* allow dirty */ true,
|
Universe::heap()->verify(/* silent */ false,
|
||||||
/* silent */ false,
|
|
||||||
/* option */ VerifyOption_G1UseMarkWord);
|
/* option */ VerifyOption_G1UseMarkWord);
|
||||||
|
|
||||||
G1CollectedHeap* g1h = G1CollectedHeap::heap();
|
G1CollectedHeap* g1h = G1CollectedHeap::heap();
|
||||||
|
|
|
@ -779,16 +779,15 @@ void HeapRegion::print_on(outputStream* st) const {
|
||||||
G1OffsetTableContigSpace::print_on(st);
|
G1OffsetTableContigSpace::print_on(st);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HeapRegion::verify(bool allow_dirty) const {
|
void HeapRegion::verify() const {
|
||||||
bool dummy = false;
|
bool dummy = false;
|
||||||
verify(allow_dirty, VerifyOption_G1UsePrevMarking, /* failures */ &dummy);
|
verify(VerifyOption_G1UsePrevMarking, /* failures */ &dummy);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This really ought to be commoned up into OffsetTableContigSpace somehow.
|
// This really ought to be commoned up into OffsetTableContigSpace somehow.
|
||||||
// We would need a mechanism to make that code skip dead objects.
|
// We would need a mechanism to make that code skip dead objects.
|
||||||
|
|
||||||
void HeapRegion::verify(bool allow_dirty,
|
void HeapRegion::verify(VerifyOption vo,
|
||||||
VerifyOption vo,
|
|
||||||
bool* failures) const {
|
bool* failures) const {
|
||||||
G1CollectedHeap* g1 = G1CollectedHeap::heap();
|
G1CollectedHeap* g1 = G1CollectedHeap::heap();
|
||||||
*failures = false;
|
*failures = false;
|
||||||
|
|
|
@ -823,10 +823,10 @@ class HeapRegion: public G1OffsetTableContigSpace {
|
||||||
// Currently there is only one place where this is called with
|
// Currently there is only one place where this is called with
|
||||||
// vo == UseMarkWord, which is to verify the marking during a
|
// vo == UseMarkWord, which is to verify the marking during a
|
||||||
// full GC.
|
// full GC.
|
||||||
void verify(bool allow_dirty, VerifyOption vo, bool *failures) const;
|
void verify(VerifyOption vo, bool *failures) const;
|
||||||
|
|
||||||
// Override; it uses the "prev" marking information
|
// Override; it uses the "prev" marking information
|
||||||
virtual void verify(bool allow_dirty) const;
|
virtual void verify() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
// HeapRegionClosure is used for iterating over regions.
|
// HeapRegionClosure is used for iterating over regions.
|
||||||
|
|
|
@ -911,23 +911,23 @@ void ParallelScavengeHeap::print_tracing_info() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ParallelScavengeHeap::verify(bool allow_dirty, bool silent, VerifyOption option /* ignored */) {
|
void ParallelScavengeHeap::verify(bool silent, VerifyOption option /* ignored */) {
|
||||||
// Why do we need the total_collections()-filter below?
|
// Why do we need the total_collections()-filter below?
|
||||||
if (total_collections() > 0) {
|
if (total_collections() > 0) {
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
gclog_or_tty->print("permanent ");
|
gclog_or_tty->print("permanent ");
|
||||||
}
|
}
|
||||||
perm_gen()->verify(allow_dirty);
|
perm_gen()->verify();
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
gclog_or_tty->print("tenured ");
|
gclog_or_tty->print("tenured ");
|
||||||
}
|
}
|
||||||
old_gen()->verify(allow_dirty);
|
old_gen()->verify();
|
||||||
|
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
gclog_or_tty->print("eden ");
|
gclog_or_tty->print("eden ");
|
||||||
}
|
}
|
||||||
young_gen()->verify(allow_dirty);
|
young_gen()->verify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -257,7 +257,7 @@ CollectorPolicy* collector_policy() const { return (CollectorPolicy*) _collector
|
||||||
virtual void gc_threads_do(ThreadClosure* tc) const;
|
virtual void gc_threads_do(ThreadClosure* tc) const;
|
||||||
virtual void print_tracing_info() const;
|
virtual void print_tracing_info() const;
|
||||||
|
|
||||||
void verify(bool allow_dirty, bool silent, VerifyOption option /* ignored */);
|
void verify(bool silent, VerifyOption option /* ignored */);
|
||||||
|
|
||||||
void print_heap_change(size_t prev_used);
|
void print_heap_change(size_t prev_used);
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -477,8 +477,8 @@ void PSOldGen::space_invariants() {
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void PSOldGen::verify(bool allow_dirty) {
|
void PSOldGen::verify() {
|
||||||
object_space()->verify(allow_dirty);
|
object_space()->verify();
|
||||||
}
|
}
|
||||||
class VerifyObjectStartArrayClosure : public ObjectClosure {
|
class VerifyObjectStartArrayClosure : public ObjectClosure {
|
||||||
PSOldGen* _gen;
|
PSOldGen* _gen;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -174,7 +174,7 @@ class PSOldGen : public CHeapObj {
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
void print_used_change(size_t prev_used) const;
|
void print_used_change(size_t prev_used) const;
|
||||||
|
|
||||||
void verify(bool allow_dirty);
|
void verify();
|
||||||
void verify_object_start_array();
|
void verify_object_start_array();
|
||||||
|
|
||||||
// These should not used
|
// These should not used
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -937,10 +937,10 @@ void PSYoungGen::update_counters() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PSYoungGen::verify(bool allow_dirty) {
|
void PSYoungGen::verify() {
|
||||||
eden_space()->verify(allow_dirty);
|
eden_space()->verify();
|
||||||
from_space()->verify(allow_dirty);
|
from_space()->verify();
|
||||||
to_space()->verify(allow_dirty);
|
to_space()->verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -181,7 +181,7 @@ class PSYoungGen : public CHeapObj {
|
||||||
void print_used_change(size_t prev_used) const;
|
void print_used_change(size_t prev_used) const;
|
||||||
virtual const char* name() const { return "PSYoungGen"; }
|
virtual const char* name() const { return "PSYoungGen"; }
|
||||||
|
|
||||||
void verify(bool allow_dirty);
|
void verify();
|
||||||
|
|
||||||
// Space boundary invariant checker
|
// Space boundary invariant checker
|
||||||
void space_invariants() PRODUCT_RETURN;
|
void space_invariants() PRODUCT_RETURN;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -70,7 +70,7 @@ void ImmutableSpace::print() const {
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ImmutableSpace::verify(bool allow_dirty) {
|
void ImmutableSpace::verify() {
|
||||||
HeapWord* p = bottom();
|
HeapWord* p = bottom();
|
||||||
HeapWord* t = end();
|
HeapWord* t = end();
|
||||||
HeapWord* prev_p = NULL;
|
HeapWord* prev_p = NULL;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -65,7 +65,7 @@ class ImmutableSpace: public CHeapObj {
|
||||||
// Debugging
|
// Debugging
|
||||||
virtual void print() const PRODUCT_RETURN;
|
virtual void print() const PRODUCT_RETURN;
|
||||||
virtual void print_short() const PRODUCT_RETURN;
|
virtual void print_short() const PRODUCT_RETURN;
|
||||||
virtual void verify(bool allow_dirty);
|
virtual void verify();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
|
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_IMMUTABLESPACE_HPP
|
||||||
|
|
|
@ -891,12 +891,12 @@ void MutableNUMASpace::print_on(outputStream* st) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MutableNUMASpace::verify(bool allow_dirty) {
|
void MutableNUMASpace::verify() {
|
||||||
// This can be called after setting an arbitary value to the space's top,
|
// This can be called after setting an arbitary value to the space's top,
|
||||||
// so an object can cross the chunk boundary. We ensure the parsablity
|
// so an object can cross the chunk boundary. We ensure the parsablity
|
||||||
// of the space and just walk the objects in linear fashion.
|
// of the space and just walk the objects in linear fashion.
|
||||||
ensure_parsability();
|
ensure_parsability();
|
||||||
MutableSpace::verify(allow_dirty);
|
MutableSpace::verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Scan pages and gather stats about page placement and size.
|
// Scan pages and gather stats about page placement and size.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -225,7 +225,7 @@ class MutableNUMASpace : public MutableSpace {
|
||||||
// Debugging
|
// Debugging
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
virtual void print_short_on(outputStream* st) const;
|
virtual void print_short_on(outputStream* st) const;
|
||||||
virtual void verify(bool allow_dirty);
|
virtual void verify();
|
||||||
|
|
||||||
virtual void set_top(HeapWord* value);
|
virtual void set_top(HeapWord* value);
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -246,7 +246,7 @@ void MutableSpace::print_on(outputStream* st) const {
|
||||||
bottom(), top(), end());
|
bottom(), top(), end());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MutableSpace::verify(bool allow_dirty) {
|
void MutableSpace::verify() {
|
||||||
HeapWord* p = bottom();
|
HeapWord* p = bottom();
|
||||||
HeapWord* t = top();
|
HeapWord* t = top();
|
||||||
HeapWord* prev_p = NULL;
|
HeapWord* prev_p = NULL;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -141,7 +141,7 @@ class MutableSpace: public ImmutableSpace {
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
virtual void print_short() const;
|
virtual void print_short() const;
|
||||||
virtual void print_short_on(outputStream* st) const;
|
virtual void print_short_on(outputStream* st) const;
|
||||||
virtual void verify(bool allow_dirty);
|
virtual void verify();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLESPACE_HPP
|
#endif // SHARE_VM_GC_IMPLEMENTATION_SHARED_MUTABLESPACE_HPP
|
||||||
|
|
|
@ -659,7 +659,7 @@ class CollectedHeap : public CHeapObj {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Heap verification
|
// Heap verification
|
||||||
virtual void verify(bool allow_dirty, bool silent, VerifyOption option) = 0;
|
virtual void verify(bool silent, VerifyOption option) = 0;
|
||||||
|
|
||||||
// Non product verification and debugging.
|
// Non product verification and debugging.
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
|
|
|
@ -444,11 +444,11 @@ void CompactingPermGenGen::invalidate_remembered_set() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void CompactingPermGenGen::verify(bool allow_dirty) {
|
void CompactingPermGenGen::verify() {
|
||||||
the_space()->verify(allow_dirty);
|
the_space()->verify();
|
||||||
if (!SharedSkipVerify && spec()->enable_shared_spaces()) {
|
if (!SharedSkipVerify && spec()->enable_shared_spaces()) {
|
||||||
ro_space()->verify(allow_dirty);
|
ro_space()->verify();
|
||||||
rw_space()->verify(allow_dirty);
|
rw_space()->verify();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -230,7 +230,7 @@ public:
|
||||||
void* new_vtable_start,
|
void* new_vtable_start,
|
||||||
void* obj);
|
void* obj);
|
||||||
|
|
||||||
void verify(bool allow_dirty);
|
void verify();
|
||||||
|
|
||||||
// Serialization
|
// Serialization
|
||||||
static void initialize_oops() KERNEL_RETURN;
|
static void initialize_oops() KERNEL_RETURN;
|
||||||
|
|
|
@ -939,10 +939,10 @@ void DefNewGeneration::update_counters() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefNewGeneration::verify(bool allow_dirty) {
|
void DefNewGeneration::verify() {
|
||||||
eden()->verify(allow_dirty);
|
eden()->verify();
|
||||||
from()->verify(allow_dirty);
|
from()->verify();
|
||||||
to()->verify(allow_dirty);
|
to()->verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DefNewGeneration::print_on(outputStream* st) const {
|
void DefNewGeneration::print_on(outputStream* st) const {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -340,7 +340,7 @@ protected:
|
||||||
// PrintHeapAtGC support.
|
// PrintHeapAtGC support.
|
||||||
void print_on(outputStream* st) const;
|
void print_on(outputStream* st) const;
|
||||||
|
|
||||||
void verify(bool allow_dirty);
|
void verify();
|
||||||
|
|
||||||
bool promo_failure_scan_is_complete() const {
|
bool promo_failure_scan_is_complete() const {
|
||||||
return _promo_failure_scan_stack.is_empty();
|
return _promo_failure_scan_stack.is_empty();
|
||||||
|
|
|
@ -1247,18 +1247,18 @@ GCStats* GenCollectedHeap::gc_stats(int level) const {
|
||||||
return _gens[level]->gc_stats();
|
return _gens[level]->gc_stats();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GenCollectedHeap::verify(bool allow_dirty, bool silent, VerifyOption option /* ignored */) {
|
void GenCollectedHeap::verify(bool silent, VerifyOption option /* ignored */) {
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
gclog_or_tty->print("permgen ");
|
gclog_or_tty->print("permgen ");
|
||||||
}
|
}
|
||||||
perm_gen()->verify(allow_dirty);
|
perm_gen()->verify();
|
||||||
for (int i = _n_gens-1; i >= 0; i--) {
|
for (int i = _n_gens-1; i >= 0; i--) {
|
||||||
Generation* g = _gens[i];
|
Generation* g = _gens[i];
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
gclog_or_tty->print(g->name());
|
gclog_or_tty->print(g->name());
|
||||||
gclog_or_tty->print(" ");
|
gclog_or_tty->print(" ");
|
||||||
}
|
}
|
||||||
g->verify(allow_dirty);
|
g->verify();
|
||||||
}
|
}
|
||||||
if (!silent) {
|
if (!silent) {
|
||||||
gclog_or_tty->print("remset ");
|
gclog_or_tty->print("remset ");
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -357,7 +357,7 @@ public:
|
||||||
void prepare_for_verify();
|
void prepare_for_verify();
|
||||||
|
|
||||||
// Override.
|
// Override.
|
||||||
void verify(bool allow_dirty, bool silent, VerifyOption option);
|
void verify(bool silent, VerifyOption option);
|
||||||
|
|
||||||
// Override.
|
// Override.
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -696,8 +696,8 @@ void OneContigSpaceCardGeneration::record_spaces_top() {
|
||||||
the_space()->set_top_for_allocations();
|
the_space()->set_top_for_allocations();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OneContigSpaceCardGeneration::verify(bool allow_dirty) {
|
void OneContigSpaceCardGeneration::verify() {
|
||||||
the_space()->verify(allow_dirty);
|
the_space()->verify();
|
||||||
}
|
}
|
||||||
|
|
||||||
void OneContigSpaceCardGeneration::print_on(outputStream* st) const {
|
void OneContigSpaceCardGeneration::print_on(outputStream* st) const {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -599,7 +599,7 @@ class Generation: public CHeapObj {
|
||||||
virtual void print() const;
|
virtual void print() const;
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
|
|
||||||
virtual void verify(bool allow_dirty) = 0;
|
virtual void verify() = 0;
|
||||||
|
|
||||||
struct StatRecord {
|
struct StatRecord {
|
||||||
int invocations;
|
int invocations;
|
||||||
|
@ -753,7 +753,7 @@ class OneContigSpaceCardGeneration: public CardGeneration {
|
||||||
|
|
||||||
virtual void record_spaces_top();
|
virtual void record_spaces_top();
|
||||||
|
|
||||||
virtual void verify(bool allow_dirty);
|
virtual void verify();
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -531,7 +531,7 @@ void OffsetTableContigSpace::print_on(outputStream* st) const {
|
||||||
bottom(), top(), _offsets.threshold(), end());
|
bottom(), top(), _offsets.threshold(), end());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContiguousSpace::verify(bool allow_dirty) const {
|
void ContiguousSpace::verify() const {
|
||||||
HeapWord* p = bottom();
|
HeapWord* p = bottom();
|
||||||
HeapWord* t = top();
|
HeapWord* t = top();
|
||||||
HeapWord* prev_p = NULL;
|
HeapWord* prev_p = NULL;
|
||||||
|
@ -965,27 +965,12 @@ OffsetTableContigSpace::OffsetTableContigSpace(BlockOffsetSharedArray* sharedOff
|
||||||
initialize(mr, SpaceDecorator::Clear, SpaceDecorator::Mangle);
|
initialize(mr, SpaceDecorator::Clear, SpaceDecorator::Mangle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class VerifyOldOopClosure : public OopClosure {
|
|
||||||
public:
|
|
||||||
oop _the_obj;
|
|
||||||
bool _allow_dirty;
|
|
||||||
void do_oop(oop* p) {
|
|
||||||
_the_obj->verify_old_oop(p, _allow_dirty);
|
|
||||||
}
|
|
||||||
void do_oop(narrowOop* p) {
|
|
||||||
_the_obj->verify_old_oop(p, _allow_dirty);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define OBJ_SAMPLE_INTERVAL 0
|
#define OBJ_SAMPLE_INTERVAL 0
|
||||||
#define BLOCK_SAMPLE_INTERVAL 100
|
#define BLOCK_SAMPLE_INTERVAL 100
|
||||||
|
|
||||||
void OffsetTableContigSpace::verify(bool allow_dirty) const {
|
void OffsetTableContigSpace::verify() const {
|
||||||
HeapWord* p = bottom();
|
HeapWord* p = bottom();
|
||||||
HeapWord* prev_p = NULL;
|
HeapWord* prev_p = NULL;
|
||||||
VerifyOldOopClosure blk; // Does this do anything?
|
|
||||||
blk._allow_dirty = allow_dirty;
|
|
||||||
int objs = 0;
|
int objs = 0;
|
||||||
int blocks = 0;
|
int blocks = 0;
|
||||||
|
|
||||||
|
@ -1007,8 +992,6 @@ void OffsetTableContigSpace::verify(bool allow_dirty) const {
|
||||||
|
|
||||||
if (objs == OBJ_SAMPLE_INTERVAL) {
|
if (objs == OBJ_SAMPLE_INTERVAL) {
|
||||||
oop(p)->verify();
|
oop(p)->verify();
|
||||||
blk._the_obj = oop(p);
|
|
||||||
oop(p)->oop_iterate(&blk);
|
|
||||||
objs = 0;
|
objs = 0;
|
||||||
} else {
|
} else {
|
||||||
objs++;
|
objs++;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -306,7 +306,7 @@ class Space: public CHeapObj {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debugging
|
// Debugging
|
||||||
virtual void verify(bool allow_dirty) const = 0;
|
virtual void verify() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
// A MemRegionClosure (ResourceObj) whose "do_MemRegion" function applies an
|
// A MemRegionClosure (ResourceObj) whose "do_MemRegion" function applies an
|
||||||
|
@ -948,7 +948,7 @@ class ContiguousSpace: public CompactibleSpace {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Debugging
|
// Debugging
|
||||||
virtual void verify(bool allow_dirty) const;
|
virtual void verify() const;
|
||||||
|
|
||||||
// Used to increase collection frequency. "factor" of 0 means entire
|
// Used to increase collection frequency. "factor" of 0 means entire
|
||||||
// space.
|
// space.
|
||||||
|
@ -1100,7 +1100,7 @@ class OffsetTableContigSpace: public ContiguousSpace {
|
||||||
virtual void print_on(outputStream* st) const;
|
virtual void print_on(outputStream* st) const;
|
||||||
|
|
||||||
// Debugging
|
// Debugging
|
||||||
void verify(bool allow_dirty) const;
|
void verify() const;
|
||||||
|
|
||||||
// Shared space support
|
// Shared space support
|
||||||
void serialize_block_offset_array_offsets(SerializeOopClosure* soc);
|
void serialize_block_offset_array_offsets(SerializeOopClosure* soc);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -1326,7 +1326,7 @@ void Universe::print_heap_after_gc(outputStream* st, bool ignore_extended) {
|
||||||
st->print_cr("}");
|
st->print_cr("}");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Universe::verify(bool allow_dirty, bool silent, VerifyOption option) {
|
void Universe::verify(bool silent, VerifyOption option) {
|
||||||
if (SharedSkipVerify) {
|
if (SharedSkipVerify) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -1350,7 +1350,7 @@ void Universe::verify(bool allow_dirty, bool silent, VerifyOption option) {
|
||||||
if (!silent) gclog_or_tty->print("[Verifying ");
|
if (!silent) gclog_or_tty->print("[Verifying ");
|
||||||
if (!silent) gclog_or_tty->print("threads ");
|
if (!silent) gclog_or_tty->print("threads ");
|
||||||
Threads::verify();
|
Threads::verify();
|
||||||
heap()->verify(allow_dirty, silent, option);
|
heap()->verify(silent, option);
|
||||||
|
|
||||||
if (!silent) gclog_or_tty->print("syms ");
|
if (!silent) gclog_or_tty->print("syms ");
|
||||||
SymbolTable::verify();
|
SymbolTable::verify();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -412,7 +412,7 @@ class Universe: AllStatic {
|
||||||
|
|
||||||
// Debugging
|
// Debugging
|
||||||
static bool verify_in_progress() { return _verify_in_progress; }
|
static bool verify_in_progress() { return _verify_in_progress; }
|
||||||
static void verify(bool allow_dirty = true, bool silent = false,
|
static void verify(bool silent = false,
|
||||||
VerifyOption option = VerifyOption_Default );
|
VerifyOption option = VerifyOption_Default );
|
||||||
static int verify_count() { return _verify_count; }
|
static int verify_count() { return _verify_count; }
|
||||||
// The default behavior is to call print_on() on gclog_or_tty.
|
// The default behavior is to call print_on() on gclog_or_tty.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -497,36 +497,12 @@ void instanceRefKlass::oop_verify_on(oop obj, outputStream* st) {
|
||||||
|
|
||||||
if (referent != NULL) {
|
if (referent != NULL) {
|
||||||
guarantee(referent->is_oop(), "referent field heap failed");
|
guarantee(referent->is_oop(), "referent field heap failed");
|
||||||
if (gch != NULL && !gch->is_in_young(obj)) {
|
|
||||||
// We do a specific remembered set check here since the referent
|
|
||||||
// field is not part of the oop mask and therefore skipped by the
|
|
||||||
// regular verify code.
|
|
||||||
if (UseCompressedOops) {
|
|
||||||
narrowOop* referent_addr = (narrowOop*)java_lang_ref_Reference::referent_addr(obj);
|
|
||||||
obj->verify_old_oop(referent_addr, true);
|
|
||||||
} else {
|
|
||||||
oop* referent_addr = (oop*)java_lang_ref_Reference::referent_addr(obj);
|
|
||||||
obj->verify_old_oop(referent_addr, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
// Verify next field
|
// Verify next field
|
||||||
oop next = java_lang_ref_Reference::next(obj);
|
oop next = java_lang_ref_Reference::next(obj);
|
||||||
if (next != NULL) {
|
if (next != NULL) {
|
||||||
guarantee(next->is_oop(), "next field verify failed");
|
guarantee(next->is_oop(), "next field verify failed");
|
||||||
guarantee(next->is_instanceRef(), "next field verify failed");
|
guarantee(next->is_instanceRef(), "next field verify failed");
|
||||||
if (gch != NULL && !gch->is_in_young(obj)) {
|
|
||||||
// We do a specific remembered set check here since the next field is
|
|
||||||
// not part of the oop mask and therefore skipped by the regular
|
|
||||||
// verify code.
|
|
||||||
if (UseCompressedOops) {
|
|
||||||
narrowOop* next_addr = (narrowOop*)java_lang_ref_Reference::next_addr(obj);
|
|
||||||
obj->verify_old_oop(next_addr, true);
|
|
||||||
} else {
|
|
||||||
oop* next_addr = (oop*)java_lang_ref_Reference::next_addr(obj);
|
|
||||||
obj->verify_old_oop(next_addr, true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -581,14 +581,6 @@ void Klass::oop_verify_on(oop obj, outputStream* st) {
|
||||||
guarantee(obj->klass()->is_klass(), "klass field is not a klass");
|
guarantee(obj->klass()->is_klass(), "klass field is not a klass");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Klass::oop_verify_old_oop(oop obj, oop* p, bool allow_dirty) {
|
|
||||||
/* $$$ I think this functionality should be handled by verification of
|
|
||||||
RememberedSet::verify_old_oop(obj, p, allow_dirty, false);
|
|
||||||
the card table. */
|
|
||||||
}
|
|
||||||
void Klass::oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty) { }
|
|
||||||
|
|
||||||
#ifndef PRODUCT
|
#ifndef PRODUCT
|
||||||
|
|
||||||
void Klass::verify_vtable_index(int i) {
|
void Klass::verify_vtable_index(int i) {
|
||||||
|
|
|
@ -805,8 +805,6 @@ class Klass : public Klass_vtbl {
|
||||||
// Verification
|
// Verification
|
||||||
virtual const char* internal_name() const = 0;
|
virtual const char* internal_name() const = 0;
|
||||||
virtual void oop_verify_on(oop obj, outputStream* st);
|
virtual void oop_verify_on(oop obj, outputStream* st);
|
||||||
virtual void oop_verify_old_oop(oop obj, oop* p, bool allow_dirty);
|
|
||||||
virtual void oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty);
|
|
||||||
// tells whether obj is partially constructed (gc during class loading)
|
// tells whether obj is partially constructed (gc during class loading)
|
||||||
virtual bool oop_partially_loaded(oop obj) const { return false; }
|
virtual bool oop_partially_loaded(oop obj) const { return false; }
|
||||||
virtual void oop_set_partially_loaded(oop obj) {};
|
virtual void oop_set_partially_loaded(oop obj) {};
|
||||||
|
|
|
@ -545,10 +545,3 @@ void objArrayKlass::oop_verify_on(oop obj, outputStream* st) {
|
||||||
guarantee(oa->obj_at(index)->is_oop_or_null(), "should be oop");
|
guarantee(oa->obj_at(index)->is_oop_or_null(), "should be oop");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void objArrayKlass::oop_verify_old_oop(oop obj, oop* p, bool allow_dirty) {
|
|
||||||
/* $$$ move into remembered set verification?
|
|
||||||
RememberedSet::verify_old_oop(obj, p, allow_dirty, true);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
void objArrayKlass::oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty) {}
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -144,8 +144,6 @@ class objArrayKlass : public arrayKlass {
|
||||||
// Verification
|
// Verification
|
||||||
const char* internal_name() const;
|
const char* internal_name() const;
|
||||||
void oop_verify_on(oop obj, outputStream* st);
|
void oop_verify_on(oop obj, outputStream* st);
|
||||||
void oop_verify_old_oop(oop obj, oop* p, bool allow_dirty);
|
|
||||||
void oop_verify_old_oop(oop obj, narrowOop* p, bool allow_dirty);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SHARE_VM_OOPS_OBJARRAYKLASS_HPP
|
#endif // SHARE_VM_OOPS_OBJARRAYKLASS_HPP
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -107,16 +107,6 @@ void oopDesc::verify() {
|
||||||
verify_on(tty);
|
verify_on(tty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// XXX verify_old_oop doesn't do anything (should we remove?)
|
|
||||||
void oopDesc::verify_old_oop(oop* p, bool allow_dirty) {
|
|
||||||
blueprint()->oop_verify_old_oop(this, p, allow_dirty);
|
|
||||||
}
|
|
||||||
|
|
||||||
void oopDesc::verify_old_oop(narrowOop* p, bool allow_dirty) {
|
|
||||||
blueprint()->oop_verify_old_oop(this, p, allow_dirty);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool oopDesc::partially_loaded() {
|
bool oopDesc::partially_loaded() {
|
||||||
return blueprint()->oop_partially_loaded(this);
|
return blueprint()->oop_partially_loaded(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -293,8 +293,6 @@ class oopDesc {
|
||||||
// verification operations
|
// verification operations
|
||||||
void verify_on(outputStream* st);
|
void verify_on(outputStream* st);
|
||||||
void verify();
|
void verify();
|
||||||
void verify_old_oop(oop* p, bool allow_dirty);
|
|
||||||
void verify_old_oop(narrowOop* p, bool allow_dirty);
|
|
||||||
|
|
||||||
// tells whether this oop is partially constructed (gc during class loading)
|
// tells whether this oop is partially constructed (gc during class loading)
|
||||||
bool partially_loaded();
|
bool partially_loaded();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -304,7 +304,7 @@ void VMThread::run() {
|
||||||
os::check_heap();
|
os::check_heap();
|
||||||
// Silent verification so as not to pollute normal output,
|
// Silent verification so as not to pollute normal output,
|
||||||
// unless we really asked for it.
|
// unless we really asked for it.
|
||||||
Universe::verify(true, !(PrintGCDetails || Verbose));
|
Universe::verify(!(PrintGCDetails || Verbose));
|
||||||
}
|
}
|
||||||
|
|
||||||
CompileBroker::set_should_block();
|
CompileBroker::set_should_block();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue