< prev index next >
src/hotspot/share/oops/access.inline.hpp
Print this page
rev 49674 : 8198285: More consistent Access API for arraycopy
@@ -121,21 +121,20 @@
};
template <class GCBarrierType, DecoratorSet decorators>
struct PostRuntimeDispatch<GCBarrierType, BARRIER_ARRAYCOPY, decorators>: public AllStatic {
template <typename T>
- static bool access_barrier(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) {
- GCBarrierType::arraycopy_in_heap(src_obj, dst_obj, src, dst, length);
+ static bool access_barrier(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) {
+ GCBarrierType::arraycopy_in_heap(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
return true;
}
template <typename T>
- static bool oop_access_barrier(arrayOop src_obj, arrayOop dst_obj, T* src, T* dst, size_t length) {
+ static bool oop_access_barrier(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) {
typedef typename HeapOopType<decorators>::type OopType;
- return GCBarrierType::oop_arraycopy_in_heap(src_obj, dst_obj,
- reinterpret_cast<OopType*>(src),
- reinterpret_cast<OopType*>(dst), length);
+ return GCBarrierType::oop_arraycopy_in_heap(src_obj, src_offset_in_bytes, reinterpret_cast<const OopType*>(src_raw),
+ dst_obj, dst_offset_in_bytes, reinterpret_cast<OopType*>(dst_raw), length);
}
};
template <class GCBarrierType, DecoratorSet decorators>
struct PostRuntimeDispatch<GCBarrierType, BARRIER_STORE_AT, decorators>: public AllStatic {
@@ -335,14 +334,14 @@
_atomic_xchg_at_func = function;
return function(new_value, base, offset);
}
template <DecoratorSet decorators, typename T>
- bool RuntimeDispatch<decorators, T, BARRIER_ARRAYCOPY>::arraycopy_init(arrayOop src_obj, arrayOop dst_obj, T *src, T* dst, size_t length) {
+ bool RuntimeDispatch<decorators, T, BARRIER_ARRAYCOPY>::arraycopy_init(arrayOop src_obj, size_t src_offset_in_bytes, const T* src_raw, arrayOop dst_obj, size_t dst_offset_in_bytes, T* dst_raw, size_t length) {
func_t function = BarrierResolver<decorators, func_t, BARRIER_ARRAYCOPY>::resolve_barrier();
_arraycopy_func = function;
- return function(src_obj, dst_obj, src, dst, length);
+ return function(src_obj, src_offset_in_bytes, src_raw, dst_obj, dst_offset_in_bytes, dst_raw, length);
}
template <DecoratorSet decorators, typename T>
void RuntimeDispatch<decorators, T, BARRIER_CLONE>::clone_init(oop src, oop dst, size_t size) {
func_t function = BarrierResolver<decorators, func_t, BARRIER_CLONE>::resolve_barrier();
< prev index next >