35 lines
1.3 KiB
Diff
35 lines
1.3 KiB
Diff
# HG changeset patch
|
|
# User rkennke
|
|
# Date 1463083411 -7200
|
|
# Thu May 12 22:03:31 2016 +0200
|
|
# Node ID 632ccab070e6b8f0114f4c636508de5b9d7210ab
|
|
# Parent 04726a0d70bbbdef63056ebfe3ef20bf21fb4be7
|
|
Enable weak reference discovery in ShenandoahMarkCompact. Otherwise we never process any weak references in full-gc.
|
|
|
|
diff --git a/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp b/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp
|
|
--- openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp
|
|
+++ openjdk/hotspot/src/share/vm/gc_implementation/shenandoah/shenandoahMarkCompact.cpp
|
|
@@ -126,6 +126,8 @@
|
|
ShenandoahMarkCompactBarrierSet bs(_heap);
|
|
oopDesc::set_bs(&bs);
|
|
|
|
+ _heap->set_need_update_refs(true);
|
|
+
|
|
OrderAccess::fence();
|
|
|
|
phase1_mark_heap();
|
|
@@ -260,6 +262,12 @@
|
|
ShenandoahConcurrentMark* cm = _heap->concurrentMark();
|
|
|
|
cm->prepare_unmarked_root_objs_no_derived_ptrs(true);
|
|
+ if (ShenandoahProcessReferences) {
|
|
+ ReferenceProcessor* rp = _heap->ref_processor();
|
|
+ // enable ("weak") refs discovery
|
|
+ rp->enable_discovery(true /*verify_no_refs*/, true);
|
|
+ rp->setup_policy(true); // snapshot the soft ref policy to be used in this cycle
|
|
+ }
|
|
cm->shared_finish_mark_from_roots();
|
|
|
|
if (VerifyDuringGC) {
|
|
|