< prev index next > src/hotspot/share/oops/access.inline.hpp
Print this page
static void access_barrier(oop src, oop dst, size_t size) {
GCBarrierType::clone_in_heap(src, dst, size);
}
};
+ template <class GCBarrierType, DecoratorSet decorators>
+ struct PostRuntimeDispatch<GCBarrierType, BARRIER_VALUE_COPY, decorators>: public AllStatic {
+ static void access_barrier(void* src, void* dst, InlineKlass* md, LayoutKind lk) {
+ GCBarrierType::value_copy_in_heap(src, dst, md, lk);
+ }
+ };
+
// Resolving accessors with barriers from the barrier set happens in two steps.
// 1. Expand paths with runtime-decorators, e.g. is UseCompressedOops on or off.
// 2. Expand paths for each BarrierSet available in the system.
template <DecoratorSet decorators, typename FunctionPointerT, BarrierType barrier_type>
struct BarrierResolver: public AllStatic {
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();
_clone_func = function;
function(src, dst, size);
}
+
+ template <DecoratorSet decorators, typename T>
+ void RuntimeDispatch<decorators, T, BARRIER_VALUE_COPY>::value_copy_init(void* src, void* dst, InlineKlass* md, LayoutKind lk) {
+ func_t function = BarrierResolver<decorators, func_t, BARRIER_VALUE_COPY>::resolve_barrier();
+ _value_copy_func = function;
+ function(src, dst, md,lk);
+ }
}
#endif // SHARE_OOPS_ACCESS_INLINE_HPP
< prev index next >