src/hotspot/share/gc/shared/modRefBarrierSet.inline.hpp
changeset 59252 623722a6aeb9
parent 59251 4cbfa5077d68
equal deleted inserted replaced
59251:4cbfa5077d68 59252:623722a6aeb9
    65 }
    65 }
    66 
    66 
    67 template <DecoratorSet decorators, typename BarrierSetT>
    67 template <DecoratorSet decorators, typename BarrierSetT>
    68 template <typename T>
    68 template <typename T>
    69 inline oop ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT>::
    69 inline oop ModRefBarrierSet::AccessBarrier<decorators, BarrierSetT>::
    70 oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value) {
    70 oop_atomic_cmpxchg_in_heap(T* addr, oop compare_value, oop new_value) {
    71   BarrierSetT *bs = barrier_set_cast<BarrierSetT>(barrier_set());
    71   BarrierSetT *bs = barrier_set_cast<BarrierSetT>(barrier_set());
    72   bs->template write_ref_field_pre<decorators>(addr);
    72   bs->template write_ref_field_pre<decorators>(addr);
    73   oop result = Raw::oop_atomic_cmpxchg(new_value, addr, compare_value);
    73   oop result = Raw::oop_atomic_cmpxchg(addr, compare_value, new_value);
    74   if (result == compare_value) {
    74   if (result == compare_value) {
    75     bs->template write_ref_field_post<decorators>(addr, new_value);
    75     bs->template write_ref_field_post<decorators>(addr, new_value);
    76   }
    76   }
    77   return result;
    77   return result;
    78 }
    78 }