< prev index next >
src/hotspot/share/gc/g1/g1BarrierSet.inline.hpp
Print this page
rev 50745 : imported patch remove_in_concurrent_root
*** 96,110 ****
template <DecoratorSet decorators, typename BarrierSetT>
template <typename T>
inline void G1BarrierSet::AccessBarrier<decorators, BarrierSetT>::
oop_store_not_in_heap(T* addr, oop new_value) {
! if (HasDecorator<decorators, IN_CONCURRENT_ROOT>::value) {
! // For roots not scanned in a safepoint, we have to apply SATB barriers
! // even for roots.
G1BarrierSet *bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
bs->write_ref_field_pre<decorators>(addr);
- }
Raw::oop_store(addr, new_value);
}
#endif // SHARE_VM_GC_G1_G1BARRIERSET_INLINE_HPP
--- 96,108 ----
template <DecoratorSet decorators, typename BarrierSetT>
template <typename T>
inline void G1BarrierSet::AccessBarrier<decorators, BarrierSetT>::
oop_store_not_in_heap(T* addr, oop new_value) {
! // Apply SATB barriers for all non-heap references, to allow
! // concurrent scanning of such references.
G1BarrierSet *bs = barrier_set_cast<G1BarrierSet>(BarrierSet::barrier_set());
bs->write_ref_field_pre<decorators>(addr);
Raw::oop_store(addr, new_value);
}
#endif // SHARE_VM_GC_G1_G1BARRIERSET_INLINE_HPP
< prev index next >