Clemens Eisserer wrote:
:

PS: The striding+GetPrimitive... is even used by NIO for copying
java-arrays into direct-ByteBuffers:
    while (length > 0) {
        size = (length > MBYTE ? MBYTE : length);
        GETCRITICAL(bytes, env, dst);
        memcpy(bytes + dstPos, (void *)srcAddr, size);
        RELEASECRITICAL(bytes, env, dst, 0);
    ................
Yes, NIO uses JNI critical sections when copying to/from arrays, but as a FYI, we hope to eliminate this native code soon. The replacement uses the Unsafe interface to do the copying and will be much faster than the current native implementation. To allow for safepoint polling (in the VM) it also copies very large arrays/buffers in strides.

-Alan.

Reply via email to