--- old/src/share/vm/oops/typeArrayKlass.cpp 2017-04-25 16:45:28.595173326 +0200 +++ new/src/share/vm/oops/typeArrayKlass.cpp 2017-04-25 16:45:28.447173331 +0200 @@ -41,6 +41,7 @@ #include "oops/oop.inline.hpp" #include "oops/typeArrayKlass.inline.hpp" #include "oops/typeArrayOop.inline.hpp" +#include "runtime/access.inline.hpp" #include "runtime/handles.inline.hpp" #include "utilities/macros.hpp" @@ -352,3 +353,33 @@ PackageEntry* TypeArrayKlass::package() const { return NULL; } + +jbyte typeArrayOopDesc::byte_at(int which) const { return HeapAccess::load_at(oop_base(), byte_at_offset(which)); } +void typeArrayOopDesc::byte_at_put(int which, jbyte contents) { HeapAccess::store_at(oop_base(), byte_at_offset(which), contents); } + +jboolean typeArrayOopDesc::bool_at(int which) const { return HeapAccess::load_at(oop_base(), bool_at_offset(which)); } +void typeArrayOopDesc::bool_at_put(int which, jboolean contents) { HeapAccess::store_at(oop_base(), bool_at_offset(which), (jboolean)(((jint)contents) & 1)); } + +jchar typeArrayOopDesc::char_at(int which) const { return HeapAccess::load_at(oop_base(), char_at_offset(which)); } +void typeArrayOopDesc::char_at_put(int which, jchar contents) { HeapAccess::store_at(oop_base(), char_at_offset(which), contents); } + +jint typeArrayOopDesc::int_at(int which) const { return HeapAccess::load_at(oop_base(), int_at_offset(which)); } +void typeArrayOopDesc::int_at_put(int which, jint contents) { HeapAccess::store_at(oop_base(), int_at_offset(which), contents); } + +jshort typeArrayOopDesc::short_at(int which) const { return HeapAccess::load_at(oop_base(), short_at_offset(which)); } +void typeArrayOopDesc::short_at_put(int which, jshort contents) { HeapAccess::store_at(oop_base(), short_at_offset(which), contents); } + +jushort typeArrayOopDesc::ushort_at(int which) const { return HeapAccess::load_at(oop_base(), short_at_offset(which)); } +void typeArrayOopDesc::ushort_at_put(int which, jushort contents) { HeapAccess::store_at(oop_base(), short_at_offset(which), contents); } + +jlong typeArrayOopDesc::long_at(int which) const { return HeapAccess::load_at(oop_base(), long_at_offset(which)); } +void typeArrayOopDesc::long_at_put(int which, jlong contents) { HeapAccess::store_at(oop_base(), long_at_offset(which), contents); } + +jfloat typeArrayOopDesc::float_at(int which) const { return HeapAccess::load_at(oop_base(), float_at_offset(which)); } +void typeArrayOopDesc::float_at_put(int which, jfloat contents) { HeapAccess::store_at(oop_base(), float_at_offset(which), contents); } + +jdouble typeArrayOopDesc::double_at(int which) const { return HeapAccess::load_at(oop_base(), double_at_offset(which)); } +void typeArrayOopDesc::double_at_put(int which, jdouble contents) { HeapAccess::store_at(oop_base(), double_at_offset(which), contents); } + +jbyte typeArrayOopDesc::byte_at_acquire(int which) const { return HeapAccess::load_at(oop_base(), byte_at_offset(which)); } +void typeArrayOopDesc::release_byte_at_put(int which, jbyte contents) { HeapAccess::store_at(oop_base(), byte_at_offset(which), contents); }