java-1.8.0-openjdk/8035496-hotspot.patch
Jiri Vanek 5d847512a3 updated to aarch64-jdk8u151-b12 (from aarch64-port/jdk8u)
- updated to aarch64-shenandoah-jdk8u151-b12 (from aarch64-port/jdk8u-shenandoah) of hotspot
- used aarch64-port-jdk8u-aarch64-jdk8u151-b12.tar.xz as new sources
- used aarch64-port-jdk8u-shenandoah-aarch64-shenandoah-jdk8u151-b12.tar.xz as new sources for hotspot
- tapset updated to 3.6pre02
- policies adapted to new limited/unlimited schmea
- above acomapnied by c-j-c 3.3
- alligned patches and added PPC ones (thanx to gnu_andrew)
- added patch209: 8035496-hotspot.patch
- added patch210: suse_linuxfilestore.patc
2017-10-25 16:10:28 +02:00

31 lines
1.5 KiB
Diff

# HG changeset patch
# User bdelsart
# Date 1508481469 -28800
# Fri Oct 20 14:37:49 2017 +0800
# Node ID 111ed1a4719008b83bf427ae16bbeac2a7a516bc
# Parent 471de666658d7ec14c5d3f97076fb95f70dd6ffa
8035496: G1 ARM: missing remset entry noticed by VerifyAfterGC for vm/gc/concurrent/lp50yp10rp70mr30st0
Summary: release_store used when registering a PerRegionTable. Also reviewed-by: vitalyd@gmail.com
Reviewed-by: jmasa, tschatzl, brutisso
diff --git a/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp b/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
--- openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
+++ openjdk/hotspot/src/share/vm/gc_implementation/g1/heapRegionRemSet.cpp
@@ -514,7 +514,15 @@
PerRegionTable* first_prt = _fine_grain_regions[ind];
prt->set_collision_list_next(first_prt);
- _fine_grain_regions[ind] = prt;
+ // The assignment into _fine_grain_regions allows the prt to
+ // start being used concurrently. In addition to
+ // collision_list_next which must be visible (else concurrent
+ // parsing of the list, if any, may fail to see other entries),
+ // the content of the prt must be visible (else for instance
+ // some mark bits may not yet seem cleared or a 'later' update
+ // performed by a concurrent thread could be undone when the
+ // zeroing becomes visible). This requires store ordering.
+ OrderAccess::release_store_ptr((volatile PerRegionTable*)&_fine_grain_regions[ind], prt);
_n_fine_entries++;
if (G1HRRSUseSparseTable) {