143 |
143 |
144 template <typename T> |
144 template <typename T> |
145 static oop oop_atomic_cmpxchg_in_heap_impl(oop new_value, T* addr, oop compare_value); |
145 static oop oop_atomic_cmpxchg_in_heap_impl(oop new_value, T* addr, oop compare_value); |
146 |
146 |
147 template <typename T> |
147 template <typename T> |
148 static oop oop_atomic_xchg_in_heap_impl(oop new_value, T* addr); |
148 static oop oop_atomic_xchg_in_heap_impl(T* addr, oop new_value); |
149 |
149 |
150 public: |
150 public: |
151 // Heap oop accesses. These accessors get resolved when |
151 // Heap oop accesses. These accessors get resolved when |
152 // IN_HEAP is set (e.g. when using the HeapAccess API), it is |
152 // IN_HEAP is set (e.g. when using the HeapAccess API), it is |
153 // an oop_* overload, and the barrier strength is AS_NORMAL. |
153 // an oop_* overload, and the barrier strength is AS_NORMAL. |
162 template <typename T> |
162 template <typename T> |
163 static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value); |
163 static oop oop_atomic_cmpxchg_in_heap(oop new_value, T* addr, oop compare_value); |
164 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value); |
164 static oop oop_atomic_cmpxchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset, oop compare_value); |
165 |
165 |
166 template <typename T> |
166 template <typename T> |
167 static oop oop_atomic_xchg_in_heap(oop new_value, T* addr); |
167 static oop oop_atomic_xchg_in_heap(T* addr, oop new_value); |
168 static oop oop_atomic_xchg_in_heap_at(oop new_value, oop base, ptrdiff_t offset); |
168 static oop oop_atomic_xchg_in_heap_at(oop base, ptrdiff_t offset, oop new_value); |
169 |
169 |
170 template <typename T> |
170 template <typename T> |
171 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, |
171 static bool oop_arraycopy_in_heap(arrayOop src_obj, size_t src_offset_in_bytes, T* src_raw, |
172 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, |
172 arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, |
173 size_t length); |
173 size_t length); |
185 |
185 |
186 template <typename T> |
186 template <typename T> |
187 static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value); |
187 static oop oop_atomic_cmpxchg_not_in_heap(oop new_value, T* addr, oop compare_value); |
188 |
188 |
189 template <typename T> |
189 template <typename T> |
190 static oop oop_atomic_xchg_not_in_heap(oop new_value, T* addr); |
190 static oop oop_atomic_xchg_not_in_heap(T* addr, oop new_value); |
191 |
191 |
192 }; |
192 }; |
193 |
193 |
194 }; |
194 }; |
195 |
195 |