-
Bug
-
Resolution: Fixed
-
P3
-
8u20, 9
-
b140
This must be done with care, as compilers must be prevented from putting local variables into registers using volatile specifiers. Issues like
Look through (GC) code that uses these Atomic instructions (Atomic::cmpxchg_ptr, Atomic::cmpxchg) and make sure there might not be problems due to valid compiler optimizations.
A first look identified at least the following potential places for such issues:
void G1CollectedHeap::push_dirty_cards_region(HeapRegion* hr) rereading _dirty_cards_region_list
HeapRegion* G1CollectedHeap::pop_dirty_cards_region(), rereading _dirty_cards_region_list
PerRegionTable::bulk_free, rereading _free_list
PerRegionTable*::alloc(HeapRegion* hr), rereading _free_list
mutableNUMASpace.cpp: 850, rereading top() [end()]
MutableSpace::cas_allocate(size_t size), rereading top(), end()
DefNewGeneration::allocate()
ContiguousSpace::par_allocate_impl() ,rereading top(), end()
ConcEdenSpace::par_allocate(), probably the OrderAccess::loadload() helps?
runtime.cpp:1348: head = _named_counters;
- is blocked by
-
JDK-8165856 g1ConcurrentMark is missing volatile specifiers for _finger
- Resolved
-
JDK-8165857 CMS _overflow_list is missing volatile specifiers.
- Resolved
- relates to
-
JDK-8165856 g1ConcurrentMark is missing volatile specifiers for _finger
- Resolved
-
JDK-8165857 CMS _overflow_list is missing volatile specifiers.
- Resolved
-
JDK-8165858 heapRegionManager is missing volatile specifier for _claims.
- Resolved
-
JDK-8165860 WorkGroup classes are missing volatile specifiers for lock-free code
- Resolved
-
JDK-8164038 Missing volatile keyword at CardTableRS::write_ref_field_gc_par()
- Resolved
-
JDK-8165859 gcTaskThread is missing volatile specifier and barriers for _time_stamps.
- Closed