8255847: Shenandoah: Shenandoah should not mark through weak roots
Reviewed-by: rkennke
This commit is contained in:
parent
867a484df1
commit
31918c55f3
@ -200,7 +200,6 @@ private:
|
|||||||
ShenandoahVMRoots<CONCURRENT> _vm_roots;
|
ShenandoahVMRoots<CONCURRENT> _vm_roots;
|
||||||
ShenandoahClassLoaderDataRoots<CONCURRENT, false /* single-threaded*/>
|
ShenandoahClassLoaderDataRoots<CONCURRENT, false /* single-threaded*/>
|
||||||
_cld_roots;
|
_cld_roots;
|
||||||
ShenandoahConcurrentStringDedupRoots _dedup_roots;
|
|
||||||
ShenandoahNMethodTableSnapshot* _codecache_snapshot;
|
ShenandoahNMethodTableSnapshot* _codecache_snapshot;
|
||||||
ShenandoahPhaseTimings::Phase _phase;
|
ShenandoahPhaseTimings::Phase _phase;
|
||||||
|
|
||||||
|
@ -149,7 +149,6 @@ ShenandoahConcurrentRootScanner<CONCURRENT>::ShenandoahConcurrentRootScanner(uin
|
|||||||
ShenandoahPhaseTimings::Phase phase) :
|
ShenandoahPhaseTimings::Phase phase) :
|
||||||
_vm_roots(phase),
|
_vm_roots(phase),
|
||||||
_cld_roots(phase, n_workers),
|
_cld_roots(phase, n_workers),
|
||||||
_dedup_roots(phase),
|
|
||||||
_codecache_snapshot(NULL),
|
_codecache_snapshot(NULL),
|
||||||
_phase(phase) {
|
_phase(phase) {
|
||||||
if (!ShenandoahHeap::heap()->unload_classes()) {
|
if (!ShenandoahHeap::heap()->unload_classes()) {
|
||||||
@ -180,9 +179,7 @@ void ShenandoahConcurrentRootScanner<CONCURRENT>::oops_do(OopClosure* oops, uint
|
|||||||
_vm_roots.oops_do(oops, worker_id);
|
_vm_roots.oops_do(oops, worker_id);
|
||||||
|
|
||||||
if (!heap->unload_classes()) {
|
if (!heap->unload_classes()) {
|
||||||
AlwaysTrueClosure always_true;
|
|
||||||
_cld_roots.cld_do(&clds_cl, worker_id);
|
_cld_roots.cld_do(&clds_cl, worker_id);
|
||||||
_dedup_roots.oops_do(&always_true, oops, worker_id);
|
|
||||||
ShenandoahWorkerTimingsTracker timer(_phase, ShenandoahPhaseTimings::CodeCacheRoots, worker_id);
|
ShenandoahWorkerTimingsTracker timer(_phase, ShenandoahPhaseTimings::CodeCacheRoots, worker_id);
|
||||||
CodeBlobToOopClosure blobs(oops, !CodeBlobToOopClosure::FixRelocations);
|
CodeBlobToOopClosure blobs(oops, !CodeBlobToOopClosure::FixRelocations);
|
||||||
_codecache_snapshot->parallel_blobs_do(&blobs);
|
_codecache_snapshot->parallel_blobs_do(&blobs);
|
||||||
|
@ -136,13 +136,6 @@ void ShenandoahRootVerifier::roots_do(OopClosure* oops) {
|
|||||||
JNIHandles::oops_do(oops);
|
JNIHandles::oops_do(oops);
|
||||||
Universe::vm_global()->oops_do(oops);
|
Universe::vm_global()->oops_do(oops);
|
||||||
|
|
||||||
AlwaysTrueClosure always_true;
|
|
||||||
WeakProcessor::weak_oops_do(&always_true, oops);
|
|
||||||
|
|
||||||
if (ShenandoahStringDedup::is_enabled()) {
|
|
||||||
ShenandoahStringDedup::oops_do_slow(oops);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Do thread roots the last. This allows verification code to find
|
// Do thread roots the last. This allows verification code to find
|
||||||
// any broken objects from those special roots first, not the accidental
|
// any broken objects from those special roots first, not the accidental
|
||||||
// dangling reference from the thread root.
|
// dangling reference from the thread root.
|
||||||
|
Loading…
Reference in New Issue
Block a user