The direct memory accessors in typeArrayOop.hpp, which are usually used for bulk memory access operations, should use the Access API, in order to give the garbage collector a chance to intercept the access (for example, employ read- or write-barriers on the target array). This also means it's necessary to distinguish between write-accesses and read-accesses (for example, GCs might want to use a copy-on-write-barrier for write-accesses only).