23 |
23 |
24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_INLINE_HPP |
24 #ifndef SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_INLINE_HPP |
25 #define SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_INLINE_HPP |
25 #define SHARE_GC_SHENANDOAH_SHENANDOAHBARRIERSET_INLINE_HPP |
26 |
26 |
27 #include "gc/shared/barrierSet.hpp" |
27 #include "gc/shared/barrierSet.hpp" |
|
28 #include "gc/shenandoah/shenandoahAsserts.hpp" |
28 #include "gc/shenandoah/shenandoahBarrierSet.hpp" |
29 #include "gc/shenandoah/shenandoahBarrierSet.hpp" |
29 #include "gc/shenandoah/shenandoahForwarding.inline.hpp" |
30 #include "gc/shenandoah/shenandoahForwarding.inline.hpp" |
30 #include "gc/shenandoah/shenandoahHeap.inline.hpp" |
31 #include "gc/shenandoah/shenandoahHeap.inline.hpp" |
31 #include "gc/shenandoah/shenandoahHeapRegion.hpp" |
32 #include "gc/shenandoah/shenandoahHeapRegion.hpp" |
32 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp" |
33 #include "gc/shenandoah/shenandoahMarkingContext.inline.hpp" |
82 } |
83 } |
83 |
84 |
84 template <DecoratorSet decorators, typename BarrierSetT> |
85 template <DecoratorSet decorators, typename BarrierSetT> |
85 inline void ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) { |
86 inline void ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_store_in_heap_at(oop base, ptrdiff_t offset, oop value) { |
86 oop_store_in_heap(AccessInternal::oop_field_addr<decorators>(base, offset), value); |
87 oop_store_in_heap(AccessInternal::oop_field_addr<decorators>(base, offset), value); |
|
88 } |
|
89 |
|
90 template <DecoratorSet decorators, typename BarrierSetT> |
|
91 template <typename T> |
|
92 inline void ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_store_not_in_heap(T* addr, oop value) { |
|
93 shenandoah_assert_marked_if(NULL, value, !CompressedOops::is_null(value) && ShenandoahHeap::heap()->is_evacuation_in_progress()); |
|
94 Raw::oop_store(addr, value); |
87 } |
95 } |
88 |
96 |
89 template <DecoratorSet decorators, typename BarrierSetT> |
97 template <DecoratorSet decorators, typename BarrierSetT> |
90 template <typename T> |
98 template <typename T> |
91 inline oop ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) { |
99 inline oop ShenandoahBarrierSet::AccessBarrier<decorators, BarrierSetT>::oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value) { |