diff --git a/UnsafeMemcpy.dll b/UnsafeMemcpy.dll index 0746243..067de85 100644 Binary files a/UnsafeMemcpy.dll and b/UnsafeMemcpy.dll differ diff --git a/UnsafeMemcpy.jar b/UnsafeMemcpy.jar index 727cfc2..adc4f11 100644 Binary files a/UnsafeMemcpy.jar and b/UnsafeMemcpy.jar differ diff --git a/java/net/lax1dude/unsafememcpy/UnsafeArrays.java b/java/net/lax1dude/unsafememcpy/UnsafeArrays.java new file mode 100644 index 0000000..2c77d88 --- /dev/null +++ b/java/net/lax1dude/unsafememcpy/UnsafeArrays.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2024 lax1dude + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +package net.lax1dude.unsafememcpy; + +public class UnsafeArrays { + + static { + UnsafeUtils.loadNatives(); + } + + public static final int JNI_COMMIT = 1; + public static final int JNI_ABORT = 2; + + public static native long getBooleanArrayElements(boolean[] array); + + public static native long getByteArrayElements(byte[] array); + + public static native long getCharArrayElements(char[] array); + + public static native long getShortArrayElements(short[] array); + + public static native long getIntArrayElements(int[] array); + + public static native long getLongArrayElements(long[] array); + + public static native long getFloatArrayElements(float[] array); + + public static native long getDoubleArrayElements(double[] array); + + public static native long getBooleanArrayElements(boolean[] array, boolean[] isCopy); + + public static native long getByteArrayElements(byte[] array, boolean[] isCopy); + + public static native long getCharArrayElements(char[] array, boolean[] isCopy); + + public static native long getShortArrayElements(short[] array, boolean[] isCopy); + + public static native long getIntArrayElements(int[] array, boolean[] isCopy); + + public static native long getLongArrayElements(long[] array, boolean[] isCopy); + + public static native long getFloatArrayElements(float[] array, boolean[] isCopy); + + public static native long getDoubleArrayElements(double[] array, boolean[] isCopy); + + public static native void releaseBooleanArrayElements(boolean[] array, long ptr, int mode); + + public static native void releaseByteArrayElements(byte[] array, long ptr, int mode); + + public static native void releaseCharArrayElements(char[] array, long ptr, int mode); + + public static native void releaseShortArrayElements(short[] array, long ptr, int mode); + + public static native void releaseIntArrayElements(int[] array, long ptr, int mode); + + public static native void releaseLongArrayElements(long[] array, long ptr, int mode); + + public static native void releaseFloatArrayElements(float[] array, long ptr, int mode); + + public static native void releaseDoubleArrayElements(double[] array, long ptr, int mode); + +} \ No newline at end of file diff --git a/java/net/lax1dude/unsafememcpy/UnsafeMemcpy.java b/java/net/lax1dude/unsafememcpy/UnsafeMemcpy.java index a3bed39..27ea841 100644 --- a/java/net/lax1dude/unsafememcpy/UnsafeMemcpy.java +++ b/java/net/lax1dude/unsafememcpy/UnsafeMemcpy.java @@ -36,326 +36,392 @@ public class UnsafeMemcpy { public static native void memcpy(long dstAddress, long srcAddress, int byteLength); - public static native void memcpy(long dstAddress, long srcAddress, long byteLength); - public static native void memcpy(Buffer dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(Buffer dstAddress, long dstOffset, long srcAddress, long byteLength); - public static native void memcpy(byte[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(byte[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(short[] dstAddress, int dstOffset, long srcAddress, int byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, long srcAddress, int length); - public static native void memcpy(short[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(char[] dstAddress, int dstOffset, long srcAddress, int byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, long srcAddress, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(int[] dstAddress, int dstOffset, long srcAddress, int byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, long srcAddress, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(long[] dstAddress, int dstOffset, long srcAddress, int byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, long srcAddress, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(double[] dstAddress, int dstOffset, long srcAddress, int byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, long srcAddress, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, long srcAddress, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, long srcAddress, int byteLength); - - public static native void memcpy(float[] dstAddress, long dstOffset, long srcAddress, long byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, long srcAddress, int length); public static native void memcpy(long dstAddress, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, Buffer srcAddress, long srcOffset, long byteLength); - public static native void memcpy(Buffer dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(Buffer dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); - public static native void memcpy(byte[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(short[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(char[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(int[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(double[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int byteLength); - - public static native void memcpy(float[] dstAddress, long dstOffset, Buffer srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, Buffer srcAddress, int srcOffset, int length); public static native void memcpy(long dstAddress, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, byte[] srcAddress, long srcOffset, long byteLength); - public static native void memcpy(Buffer dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(Buffer dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); - public static native void memcpy(byte[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(short[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(char[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(int[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(double[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, byte[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, byte[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long dstAddress, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(long dstAddress, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(Buffer dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(Buffer dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(Buffer dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(byte[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(byte[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(byte[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(short[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAligned(short[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(short[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(int[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(char[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(int[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(long[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, short[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(double[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(float[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(byte[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, short[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(long dstAddress, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(short[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(long dstAddress, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(Buffer dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(char[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(Buffer dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(byte[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(int[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(byte[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(short[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAligned(char[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, char[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(char[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(Buffer dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(int[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(byte[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(long[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(char[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(double[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(int[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(float[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, char[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long dstAddress, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(double[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(long dstAddress, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(Buffer dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(Buffer dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, int[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(byte[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(byte[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(Buffer dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(short[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(byte[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(char[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(char[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAligned(int[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(int[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(long[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(double[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(double[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, long[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(float[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, int[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(long dstAddress, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(Buffer dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(long dstAddress, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(byte[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(Buffer dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(Buffer dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(byte[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(short[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(byte[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(char[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(short[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(char[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(double[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(int[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, double[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long dstAddress, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAligned(long[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(long dstAddress, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(long[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(Buffer dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(byte[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(double[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(byte[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(short[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(short[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignSrc(float[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, long[] srcAddress, int srcOffset, int length); - public static native void memcpy(char[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(long dstAddress, double[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(int[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(long dstAddress, double[] srcAddress, int srcOffset, int length); - public static native void memcpy(int[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(Buffer dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(long[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(Buffer dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); - public static native void memcpy(long[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(byte[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(double[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(byte[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); - public static native void memcpy(double[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); - public static native void memcpy(float[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + public static native void memcpyAlignSrc(short[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); - public static native void memcpy(float[] dstAddress, long dstOffset, float[] srcAddress, long srcOffset, long byteLength); + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(char[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(int[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(long[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAligned(double[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignSrc(double[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(float[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, double[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(long dstAddress, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(long dstAddress, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(Buffer dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(Buffer dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(byte[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(byte[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(short[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(short[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(short[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(char[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(char[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(char[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(int[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(int[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(int[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(long[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(long[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(long[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(double[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAlignSrc(double[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(double[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyUnaligned(float[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int byteLength); + + public static native void memcpyAligned(float[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignSrc(float[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); + + public static native void memcpyAlignDst(float[] dstAddress, int dstOffset, float[] srcAddress, int srcOffset, int length); } diff --git a/java/net/lax1dude/unsafememcpy/UnsafeUtils.java b/java/net/lax1dude/unsafememcpy/UnsafeUtils.java index 6aafa24..cf12275 100644 --- a/java/net/lax1dude/unsafememcpy/UnsafeUtils.java +++ b/java/net/lax1dude/unsafememcpy/UnsafeUtils.java @@ -45,6 +45,11 @@ public class UnsafeUtils { }else { System.loadLibrary("unsafememcpy"); } + int major = getVersionMajor(); + int minor = getVersionMinor(); + if(major != 1 || minor < 0) { + throw new UnsatisfiedLinkError("Invalid UnsafeMemcpy native library version: " + major + "." + minor + " (expected: 1.0)"); + } } } diff --git a/native/UnsafeArrays.c b/native/UnsafeArrays.c new file mode 100644 index 0000000..1b41889 --- /dev/null +++ b/native/UnsafeArrays.c @@ -0,0 +1,267 @@ +/* + * Copyright (c) 2024 lax1dude + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#include "UnsafeArraysImpl.h" + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getBooleanArrayElements + * Signature: ([Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getBooleanArrayElements___3Z + (JNIEnv * jniHandle, jclass jniClass, jbooleanArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jboolean, GetBooleanArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getByteArrayElements + * Signature: ([B)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getByteArrayElements___3B + (JNIEnv * jniHandle, jclass jniClass, jbyteArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jbyte, GetByteArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getCharArrayElements + * Signature: ([C)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getCharArrayElements___3C + (JNIEnv * jniHandle, jclass jniClass, jcharArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jchar, GetCharArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getShortArrayElements + * Signature: ([S)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getShortArrayElements___3S + (JNIEnv * jniHandle, jclass jniClass, jshortArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jshort, GetShortArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getIntArrayElements + * Signature: ([I)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getIntArrayElements___3I + (JNIEnv * jniHandle, jclass jniClass, jintArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jint, GetIntArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getLongArrayElements + * Signature: ([J)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getLongArrayElements___3J + (JNIEnv * jniHandle, jclass jniClass, jlongArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jlong, GetLongArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getFloatArrayElements + * Signature: ([F)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getFloatArrayElements___3F + (JNIEnv * jniHandle, jclass jniClass, jfloatArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jfloat, GetFloatArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getDoubleArrayElements + * Signature: ([D)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getDoubleArrayElements___3D + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray array) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, jdouble, GetDoubleArrayElements); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getBooleanArrayElements + * Signature: ([Z[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getBooleanArrayElements___3Z_3Z + (JNIEnv * jniHandle, jclass jniClass, jbooleanArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jboolean, GetBooleanArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getByteArrayElements + * Signature: ([B[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getByteArrayElements___3B_3Z + (JNIEnv * jniHandle, jclass jniClass, jbyteArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jbyte, GetByteArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getCharArrayElements + * Signature: ([C[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getCharArrayElements___3C_3Z + (JNIEnv * jniHandle, jclass jniClass, jcharArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jchar, GetCharArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getShortArrayElements + * Signature: ([S[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getShortArrayElements___3S_3Z + (JNIEnv * jniHandle, jclass jniClass, jshortArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jshort, GetShortArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getIntArrayElements + * Signature: ([I[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getIntArrayElements___3I_3Z + (JNIEnv * jniHandle, jclass jniClass, jintArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jint, GetIntArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getLongArrayElements + * Signature: ([J[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getLongArrayElements___3J_3Z + (JNIEnv * jniHandle, jclass jniClass, jlongArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jlong, GetLongArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getFloatArrayElements + * Signature: ([F[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getFloatArrayElements___3F_3Z + (JNIEnv * jniHandle, jclass jniClass, jfloatArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jfloat, GetFloatArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: getDoubleArrayElements + * Signature: ([D[Z)J + */ +JNIEXPORT jlong JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_getDoubleArrayElements___3D_3Z + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray array, jbooleanArray isCopy) { + UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, jdouble, GetDoubleArrayElements, isCopy); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseBooleanArrayElements + * Signature: ([ZJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseBooleanArrayElements + (JNIEnv * jniHandle, jclass jniClass, jbooleanArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jboolean, ReleaseBooleanArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseByteArrayElements + * Signature: ([BJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseByteArrayElements + (JNIEnv * jniHandle, jclass jniClass, jbyteArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jbyte, ReleaseByteArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseCharArrayElements + * Signature: ([CJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseCharArrayElements + (JNIEnv * jniHandle, jclass jniClass, jcharArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jchar, ReleaseCharArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseShortArrayElements + * Signature: ([SJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseShortArrayElements + (JNIEnv * jniHandle, jclass jniClass, jshortArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jshort, ReleaseShortArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseIntArrayElements + * Signature: ([IJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseIntArrayElements + (JNIEnv * jniHandle, jclass jniClass, jintArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jint, ReleaseIntArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseLongArrayElements + * Signature: ([JJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseLongArrayElements + (JNIEnv * jniHandle, jclass jniClass, jlongArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jlong, ReleaseLongArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseFloatArrayElements + * Signature: ([FJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseFloatArrayElements + (JNIEnv * jniHandle, jclass jniClass, jfloatArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jfloat, ReleaseFloatArrayElements, mode); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeArrays + * Method: releaseDoubleArrayElements + * Signature: ([DJI)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeArrays_releaseDoubleArrayElements + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray array, jlong ptr, jint mode) { + UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, jdouble, ReleaseDoubleArrayElements, mode); +} diff --git a/native/UnsafeArraysImpl.h b/native/UnsafeArraysImpl.h new file mode 100644 index 0000000..f4f2355 --- /dev/null +++ b/native/UnsafeArraysImpl.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2024 lax1dude + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include + +#include "utils.h" + +#define UNSAFE_ARRAYS_GET_ELEMENTS_IMPL(jniHandle, array, elementType, getElementsFunction)\ + elementType* srcArray = (*jniHandle)->getElementsFunction(jniHandle, array, NULL);\ + if(!srcArray) {\ + unsafeThrowOutOfMemory(jniHandle);\ + return 0;\ + }\ + return (jlong)srcArray;\ + +#define UNSAFE_ARRAYS_GET_ELEMENTS_IMPL_IS_COPY(jniHandle, array, elementType, getElementsFunction, isCopy)\ + jboolean wasCopied;\ + elementType* srcArray = (*jniHandle)->getElementsFunction(jniHandle, array, NULL);\ + if(isCopy) {\ + (*jniHandle)->SetBooleanArrayRegion(jniHandle, isCopy, 0, 1, &wasCopied);\ + }\ + if(!srcArray) {\ + unsafeThrowOutOfMemory(jniHandle);\ + return 0;\ + }\ + return (jlong)srcArray;\ + +#define UNSAFE_ARRAYS_RELEASE_ELEMENTS_IMPL(jniHandle, array, ptr, elementType, releaseElementsFunction, mode)\ + (*jniHandle)->releaseElementsFunction(jniHandle, array, (elementType*)ptr, mode); diff --git a/native/UnsafeMallocImpl.h b/native/UnsafeMallocImpl.h new file mode 100644 index 0000000..bf9a7d7 --- /dev/null +++ b/native/UnsafeMallocImpl.h @@ -0,0 +1,40 @@ +/* + * Copyright (c) 2024 lax1dude + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + */ + +#pragma once + +#include +#include + +#include "utils.h" + +#define UNSAFE_MALLOC_IMPL(size) malloc((size_t)(size)) + +#define UNSAFE_CALLOC_IMPL(num, size) calloc((size_t)(num), (size_t)(size)) + +#define UNSAFE_REALLOC_IMPL(address, size) realloc((void*)(address), (size_t)(size)) + +#define UNSAFE_FREE_IMPL(address) free((void*)(address)) diff --git a/native/UnsafeMemcpy.c b/native/UnsafeMemcpy.c index 4cb688e..e3902f0 100644 --- a/native/UnsafeMemcpy.c +++ b/native/UnsafeMemcpy.c @@ -36,16 +36,6 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__JJI UNSAFE_MEMCPY_IMPL(dstAddress, srcAddress, byteLength); } -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (JJJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__JJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_IMPL(dstAddress, srcAddress, byteLength); -} - /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy * Method: memcpy @@ -56,16 +46,6 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava UNSAFE_MEMCPY_NATIVE_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); } -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;JJJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2JJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); -} - /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy * Method: memcpy @@ -73,137 +53,127 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava */ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BIJI (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, byteLength, SetByteArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJJJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); -} - -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SIJI +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SIJI (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJJJ)V + * Method: memcpyAlignDst + * Signature: ([SIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SIJI + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jlong srcAddress, jint length) { + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, length, SetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([CIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CIJI +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CIJI (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJJJ)V + * Method: memcpyAlignDst + * Signature: ([CIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CIJI + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jlong srcAddress, jint length) { + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, length, SetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([IIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IIJI +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3IIJI (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJJJ)V + * Method: memcpyAlignDst + * Signature: ([IIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3IIJI + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jlong srcAddress, jint length) { + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, length, SetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([JIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JIJI +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JIJI (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJJJ)V + * Method: memcpyAlignDst + * Signature: ([JIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JIJI + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jlong srcAddress, jint length) { + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, length, SetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([DIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DIJI +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DIJI (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJJJ)V + * Method: memcpyAlignDst + * Signature: ([DIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DIJI + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jlong srcAddress, jint length) { + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, length, SetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([FIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FIJI +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FIJI (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jlong srcAddress, jint byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJJJ)V + * Method: memcpyAlignDst + * Signature: ([FIJI)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jlong srcAddress, jlong byteLength) { - UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FIJI + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jlong srcAddress, jint length) { + UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, length, SetFloatArrayRegion); } /* @@ -216,16 +186,6 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__JLjav UNSAFE_MEMCPY_BUFFER_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); } -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (JLjava/nio/Buffer;JJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__JLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); -} - /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy * Method: memcpy @@ -236,16 +196,6 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava UNSAFE_MEMCPY_BUFFER_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); } -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;JLjava/nio/Buffer;JJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2JLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); -} - /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy * Method: memcpy @@ -253,137 +203,127 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava */ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, byteLength, SetByteArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJLjava/nio/Buffer;JJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); -} - -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SILjava_nio_Buffer_2II +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJLjava/nio/Buffer;JJ)V + * Method: memcpyAlignDst + * Signature: ([SILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SILjava_nio_Buffer_2II + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, length, SetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([CILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CILjava_nio_Buffer_2II +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJLjava/nio/Buffer;JJ)V + * Method: memcpyAlignDst + * Signature: ([CILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CILjava_nio_Buffer_2II + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, length, SetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([IILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IILjava_nio_Buffer_2II +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3IILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJLjava/nio/Buffer;JJ)V + * Method: memcpyAlignDst + * Signature: ([IILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3IILjava_nio_Buffer_2II + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, length, SetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([JILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JILjava_nio_Buffer_2II +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJLjava/nio/Buffer;JJ)V + * Method: memcpyAlignDst + * Signature: ([JILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JILjava_nio_Buffer_2II + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, length, SetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([DILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DILjava_nio_Buffer_2II +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJLjava/nio/Buffer;JJ)V + * Method: memcpyAlignDst + * Signature: ([DILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DILjava_nio_Buffer_2II + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, length, SetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([FILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FILjava_nio_Buffer_2II +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FILjava_nio_Buffer_2II (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJLjava/nio/Buffer;JJ)V + * Method: memcpyAlignDst + * Signature: ([FILjava/nio/Buffer;II)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJLjava_nio_Buffer_2JJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jobject srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FILjava_nio_Buffer_2II + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jobject srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, length, SetFloatArrayRegion); } /* @@ -393,17 +333,7 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJL */ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3BII (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); -} - -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[BJJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength, GetByteArrayRegion); } /* @@ -413,17 +343,7 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3BJ */ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3BII (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); -} - -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[BJJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength, GetByteArrayRegion); } /* @@ -433,1216 +353,1626 @@ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava */ JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3BII (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength, GetByteArrayRegion, SetByteArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[BJJ)V - */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); -} - -/* - * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3BII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3BII (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[BJJ)V + * Method: memcpyAlignDst + * Signature: ([SI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3BII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, length, SetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([CI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3BII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3BII (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[BJJ)V + * Method: memcpyAlignDst + * Signature: ([CI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3BII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, length, SetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([II[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3BII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3BII (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[BJJ)V + * Method: memcpyAlignDst + * Signature: ([II[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3BII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, length, SetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([JI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3BII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3BII (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[BJJ)V + * Method: memcpyAlignDst + * Signature: ([JI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3BII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, length, SetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([DI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3BII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3BII (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[BJJ)V + * Method: memcpyAlignDst + * Signature: ([DI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3BII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, length, SetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([FI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3BII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3BII (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[BJJ)V + * Method: memcpyAlignDst + * Signature: ([FI[BII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3BJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jbyteArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3BII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jbyteArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, length, SetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (J[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__J_3SII (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[SJJ)V + * Method: memcpyAlignSrc + * Signature: (J[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__J_3SII + (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (Ljava/nio/Buffer;I[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__Ljava_nio_Buffer_2I_3SII (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[SJJ)V + * Method: memcpyAlignSrc + * Signature: (Ljava/nio/Buffer;I[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__Ljava_nio_Buffer_2I_3SII + (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([BI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3BI_3SII (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[SJJ)V + * Method: memcpyAlignSrc + * Signature: ([BI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3BI_3SII + (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3SII (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[SJJ)V + * Method: memcpyAligned + * Signature: ([SI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAligned___3SI_3SII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion, SetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignSrc + * Signature: ([SI[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3SI_3SII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignDst + * Signature: ([SI[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3SII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, SetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([CI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3SII (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[SJJ)V + * Method: memcpyAlignSrc + * Signature: ([CI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3CI_3SII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([CI[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3SII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, SetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([II[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3SII (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[SJJ)V + * Method: memcpyAlignSrc + * Signature: ([II[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3II_3SII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([II[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3SII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, SetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([JI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3SII (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[SJJ)V + * Method: memcpyAlignSrc + * Signature: ([JI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3JI_3SII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([JI[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3SII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, SetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([DI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3SII (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[SJJ)V + * Method: memcpyAlignSrc + * Signature: ([DI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3DI_3SII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([DI[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3SII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, SetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([FI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3SII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3SII (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[SJJ)V + * Method: memcpyAlignSrc + * Signature: ([FI[SII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3SJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jshortArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3FI_3SII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, GetShortArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([FI[SII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3SII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jshortArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, length, SetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: (J[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__J_3CII (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[CJJ)V + * Method: memcpyAlignSrc + * Signature: (J[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__J_3CII + (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (Ljava/nio/Buffer;I[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__Ljava_nio_Buffer_2I_3CII (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[CJJ)V + * Method: memcpyAlignSrc + * Signature: (Ljava/nio/Buffer;I[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__Ljava_nio_Buffer_2I_3CII + (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([BI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3BI_3CII (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[CJJ)V + * Method: memcpyAlignSrc + * Signature: ([BI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3BI_3CII + (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3CII (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[CJJ)V + * Method: memcpyAlignSrc + * Signature: ([SI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3SI_3CII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([SI[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3CII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, SetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([CI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3CII (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[CJJ)V + * Method: memcpyAligned + * Signature: ([CI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAligned___3CI_3CII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion, SetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignSrc + * Signature: ([CI[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3CI_3CII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignDst + * Signature: ([CI[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3CII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, SetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([II[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3CII (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[CJJ)V + * Method: memcpyAlignSrc + * Signature: ([II[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3II_3CII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([II[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3CII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, SetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([JI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3CII (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[CJJ)V + * Method: memcpyAlignSrc + * Signature: ([JI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3JI_3CII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([JI[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3CII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, SetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([DI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3CII (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[CJJ)V + * Method: memcpyAlignSrc + * Signature: ([DI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3DI_3CII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([DI[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3CII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, SetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([FI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3CII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3CII (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[CJJ)V + * Method: memcpyAlignSrc + * Signature: ([FI[CII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3CJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jcharArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3FI_3CII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, GetCharArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([FI[CII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3CII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jcharArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, length, SetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: (J[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__J_3III (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[IJJ)V + * Method: memcpyAlignSrc + * Signature: (J[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__J_3III + (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (Ljava/nio/Buffer;I[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__Ljava_nio_Buffer_2I_3III (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[IJJ)V + * Method: memcpyAlignSrc + * Signature: (Ljava/nio/Buffer;I[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__Ljava_nio_Buffer_2I_3III + (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([BI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3BI_3III (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[IJJ)V + * Method: memcpyAlignSrc + * Signature: ([BI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3BI_3III + (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3III (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[IJJ)V + * Method: memcpyAlignSrc + * Signature: ([SI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3SI_3III + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([SI[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3III + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, SetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([CI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3III (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[IJJ)V + * Method: memcpyAlignSrc + * Signature: ([CI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3CI_3III + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([CI[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3III + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, SetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([II[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3III (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[IJJ)V + * Method: memcpyAligned + * Signature: ([II[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAligned___3II_3III + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion, SetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignSrc + * Signature: ([II[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3II_3III + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignDst + * Signature: ([II[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3III + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, SetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([JI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3III (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[IJJ)V + * Method: memcpyAlignSrc + * Signature: ([JI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3JI_3III + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([JI[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3III + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, SetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([DI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3III (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[IJJ)V + * Method: memcpyAlignSrc + * Signature: ([DI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3DI_3III + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([DI[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3III + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, SetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([FI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3III +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3III (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[IJJ)V + * Method: memcpyAlignSrc + * Signature: ([FI[III)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3IJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jintArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3FI_3III + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, GetIntArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([FI[III)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3III + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jintArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, length, SetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: (J[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__J_3JII (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[JJJ)V + * Method: memcpyAlignSrc + * Signature: (J[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__J_3JII + (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (Ljava/nio/Buffer;I[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__Ljava_nio_Buffer_2I_3JII (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[JJJ)V + * Method: memcpyAlignSrc + * Signature: (Ljava/nio/Buffer;I[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__Ljava_nio_Buffer_2I_3JII + (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([BI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3BI_3JII (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[JJJ)V + * Method: memcpyAlignSrc + * Signature: ([BI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3BI_3JII + (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3JII (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[JJJ)V + * Method: memcpyAlignSrc + * Signature: ([SI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3SI_3JII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([SI[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3JII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, SetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([CI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3JII (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[JJJ)V + * Method: memcpyAlignSrc + * Signature: ([CI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3CI_3JII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([CI[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3JII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, SetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([II[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3JII (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[JJJ)V + * Method: memcpyAlignSrc + * Signature: ([II[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3II_3JII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([II[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3JII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, SetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([JI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3JII (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[JJJ)V + * Method: memcpyAligned + * Signature: ([JI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAligned___3JI_3JII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion, SetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignSrc + * Signature: ([JI[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3JI_3JII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignDst + * Signature: ([JI[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3JII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, SetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([DI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3JII (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[JJJ)V + * Method: memcpyAlignSrc + * Signature: ([DI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3DI_3JII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([DI[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3JII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, SetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([FI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3JII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3JII (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[JJJ)V + * Method: memcpyAlignSrc + * Signature: ([FI[JII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3JJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jlongArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3FI_3JII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, GetLongArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([FI[JII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3JII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jlongArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, length, SetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: (J[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__J_3DII (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[DJJ)V + * Method: memcpyAlignSrc + * Signature: (J[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__J_3DII + (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (Ljava/nio/Buffer;I[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__Ljava_nio_Buffer_2I_3DII (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[DJJ)V + * Method: memcpyAlignSrc + * Signature: (Ljava/nio/Buffer;I[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__Ljava_nio_Buffer_2I_3DII + (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([BI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3BI_3DII (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[DJJ)V + * Method: memcpyAlignSrc + * Signature: ([BI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3BI_3DII + (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3DII (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[DJJ)V + * Method: memcpyAlignSrc + * Signature: ([SI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3SI_3DII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([SI[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3DII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, SetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([CI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3DII (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[DJJ)V + * Method: memcpyAlignSrc + * Signature: ([CI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3CI_3DII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([CI[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3DII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, SetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([II[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3DII (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[DJJ)V + * Method: memcpyAlignSrc + * Signature: ([II[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3II_3DII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([II[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3DII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, SetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([JI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3DII (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[DJJ)V + * Method: memcpyAlignSrc + * Signature: ([JI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3JI_3DII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([JI[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3DII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, SetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([DI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3DII (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[DJJ)V + * Method: memcpyAligned + * Signature: ([DI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAligned___3DI_3DII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion, SetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignSrc + * Signature: ([DI[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3DI_3DII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignDst + * Signature: ([DI[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3DII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, SetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([FI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3DII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3DII (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[DJJ)V + * Method: memcpyAlignSrc + * Signature: ([FI[DII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3DJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jdoubleArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3FI_3DII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, GetDoubleArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([FI[DII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3DII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jdoubleArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, length, SetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: (J[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__J_3FII (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (J[FJJ)V + * Method: memcpyAlignSrc + * Signature: (J[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__J_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__J_3FII + (JNIEnv * jniHandle, jclass jniClass, jlong dstAddress, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: (Ljava/nio/Buffer;I[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2I_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned__Ljava_nio_Buffer_2I_3FII (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: (Ljava/nio/Buffer;J[FJJ)V + * Method: memcpyAlignSrc + * Signature: (Ljava/nio/Buffer;I[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy__Ljava_nio_Buffer_2J_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc__Ljava_nio_Buffer_2I_3FII + (JNIEnv * jniHandle, jclass jniClass, jobject dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([BI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BI_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3BI_3FII (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([BJ[FJJ)V + * Method: memcpyAlignSrc + * Signature: ([BI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3BJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3BI_3FII + (JNIEnv * jniHandle, jclass jniClass, jbyteArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jbyte, GetByteArrayElements, ReleaseByteArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyUnaligned * Signature: ([SI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SI_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3SI_3FII (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([SJ[FJJ)V + * Method: memcpyAlignSrc + * Signature: ([SI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3SJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3SI_3FII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([SI[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3SI_3FII + (JNIEnv * jniHandle, jclass jniClass, jshortArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jshort, GetShortArrayElements, ReleaseShortArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, SetShortArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([CI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CI_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3CI_3FII (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([CJ[FJJ)V + * Method: memcpyAlignSrc + * Signature: ([CI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3CJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3CI_3FII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([CI[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3CI_3FII + (JNIEnv * jniHandle, jclass jniClass, jcharArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jchar, GetCharArrayElements, ReleaseCharArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, SetCharArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([II[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3II_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3II_3FII (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([IJ[FJJ)V + * Method: memcpyAlignSrc + * Signature: ([II[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3IJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3II_3FII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([II[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3II_3FII + (JNIEnv * jniHandle, jclass jniClass, jintArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jint, GetIntArrayElements, ReleaseIntArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, SetIntArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([JI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JI_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3JI_3FII (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([JJ[FJJ)V + * Method: memcpyAlignSrc + * Signature: ([JI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3JJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3JI_3FII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([JI[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3JI_3FII + (JNIEnv * jniHandle, jclass jniClass, jlongArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jlong, GetLongArrayElements, ReleaseLongArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, SetLongArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([DI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DI_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3DI_3FII (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([DJ[FJJ)V + * Method: memcpyAlignSrc + * Signature: ([DI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3DJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3DI_3FII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy + * Method: memcpyAlignDst + * Signature: ([DI[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3DI_3FII + (JNIEnv * jniHandle, jclass jniClass, jdoubleArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jdouble, GetDoubleArrayElements, ReleaseDoubleArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, SetDoubleArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyUnaligned * Signature: ([FI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FI_3FII +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyUnaligned___3FI_3FII (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, byteLength); } /* * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy - * Method: memcpy - * Signature: ([FJ[FJJ)V + * Method: memcpyAligned + * Signature: ([FI[FII)V */ -JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpy___3FJ_3FJJ - (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jlong dstOffset, jfloatArray srcAddress, jlong srcOffset, jlong byteLength) { - UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength); +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAligned___3FI_3FII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion, SetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignSrc + * Signature: ([FI[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignSrc___3FI_3FII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, GetFloatArrayRegion); +} + +/* + * Class: net_lax1dude_unsafememcpy_UnsafeMemcpy + * Method: memcpyAlignDst + * Signature: ([FI[FII)V + */ +JNIEXPORT void JNICALL Java_net_lax1dude_unsafememcpy_UnsafeMemcpy_memcpyAlignDst___3FI_3FII + (JNIEnv * jniHandle, jclass jniClass, jfloatArray dstAddress, jint dstOffset, jfloatArray srcAddress, jint srcOffset, jint length) { + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, srcAddress, srcOffset, jfloat, GetFloatArrayElements, ReleaseFloatArrayElements, length, SetFloatArrayRegion); } diff --git a/native/UnsafeMemcpyImpl.h b/native/UnsafeMemcpyImpl.h index c50db91..8c0fc2f 100644 --- a/native/UnsafeMemcpyImpl.h +++ b/native/UnsafeMemcpyImpl.h @@ -32,9 +32,12 @@ #include "utils.h" + +// =============== UNALIGNED VERSIONS =============== + #define UNSAFE_MEMCPY_IMPL(dst, src, len) memcpy((void*)(dst), (const void*)(src), (size_t)(len)) -#define UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, byteLength)\ +#define UNSAFE_MEMCPY_ARRAY_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, byteLength)\ uint64_t srcArray = (uint64_t)(*jniHandle)->GetPrimitiveArrayCritical(jniHandle, srcAddress, NULL);\ if(!srcArray) {\ unsafeThrowOutOfMemory(jniHandle);\ @@ -72,7 +75,7 @@ }\ UNSAFE_MEMCPY_IMPL(dstBuffer + dstOffset, srcBuffer + srcOffset, byteLength); -#define UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength)\ +#define UNSAFE_MEMCPY_ARRAY_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, byteLength)\ uint64_t dstBuffer = (uint64_t)(*jniHandle)->GetDirectBufferAddress(jniHandle, dstAddress);\ if(!dstBuffer) {\ unsafeThrowNotDirectBuffer(jniHandle);\ @@ -86,7 +89,7 @@ UNSAFE_MEMCPY_IMPL(dstBuffer + dstOffset, srcArray + srcOffset, byteLength);\ (*jniHandle)->ReleasePrimitiveArrayCritical(jniHandle, srcAddress, (void*)srcArray, JNI_ABORT); -#define UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, byteLength)\ +#define UNSAFE_MEMCPY_NATIVE_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, byteLength)\ uint64_t dstArray = (uint64_t)(*jniHandle)->GetPrimitiveArrayCritical(jniHandle, dstAddress, NULL);\ if(!dstArray) {\ unsafeThrowOutOfMemory(jniHandle);\ @@ -95,7 +98,7 @@ UNSAFE_MEMCPY_IMPL(dstArray + dstOffset, srcAddress, byteLength);\ (*jniHandle)->ReleasePrimitiveArrayCritical(jniHandle, dstAddress, (void*)dstArray, JNI_COMMIT); -#define UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength)\ +#define UNSAFE_MEMCPY_BUFFER_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, srcOffset, byteLength)\ uint64_t srcBuffer = (uint64_t)(*jniHandle)->GetDirectBufferAddress(jniHandle, srcAddress);\ if(!srcBuffer) {\ unsafeThrowNotDirectBuffer(jniHandle);\ @@ -109,7 +112,7 @@ UNSAFE_MEMCPY_IMPL(dstArray + dstOffset, srcBuffer + srcOffset, byteLength);\ (*jniHandle)->ReleasePrimitiveArrayCritical(jniHandle, dstAddress, (void*)dstArray, JNI_COMMIT); -#define UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, byteLength)\ +#define UNSAFE_MEMCPY_ARRAY_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, byteLength)\ uint64_t srcArray = (uint64_t)(*jniHandle)->GetPrimitiveArrayCritical(jniHandle, srcAddress, NULL);\ if(!srcArray) {\ unsafeThrowOutOfMemory(jniHandle);\ @@ -124,3 +127,58 @@ UNSAFE_MEMCPY_IMPL(dstArray + dstOffset, srcArray + srcOffset, byteLength);\ (*jniHandle)->ReleasePrimitiveArrayCritical(jniHandle, dstAddress, (void*)dstArray, JNI_COMMIT);\ (*jniHandle)->ReleasePrimitiveArrayCritical(jniHandle, srcAddress, (void*)srcArray, JNI_ABORT); + + + +// =============== ALIGNED SRC VERSIONS =============== + +#define UNSAFE_MEMCPY_ARRAY_ALIGN_TO_NATIVE_IMPL(jniHandle, dstAddress, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, length, srcGetRegionFunction)\ + (*jniHandle)->srcGetRegionFunction(jniHandle, srcAddress, srcOffset, length, (srcType*)dstAddress); + +#define UNSAFE_MEMCPY_ARRAY_ALIGN_TO_BUFFER_IMPL(jniHandle, dstAddress, dstOffset, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, length, srcGetRegionFunction)\ + uint64_t dstBuffer = (uint64_t)(*jniHandle)->GetDirectBufferAddress(jniHandle, dstAddress);\ + if(!dstBuffer) {\ + unsafeThrowNotDirectBuffer(jniHandle);\ + return;\ + }\ + (*jniHandle)->srcGetRegionFunction(jniHandle, srcAddress, srcOffset, length, (srcType*)(dstBuffer + dstOffset)); + +#define UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, length, srcGetRegionFunction)\ + uint64_t dstArray = (uint64_t)(*jniHandle)->dstGetElements(jniHandle, dstAddress, NULL);\ + if(!dstArray) {\ + unsafeThrowOutOfMemory(jniHandle);\ + return;\ + }\ + (*jniHandle)->srcGetRegionFunction(jniHandle, srcAddress, srcOffset, length, (srcType*)(dstArray + dstOffset));\ + (*jniHandle)->dstReleaseElements(jniHandle, dstAddress, (dstType*)dstArray, JNI_COMMIT);\ + + + +// =============== ALIGNED DST VERSIONS =============== + +#define UNSAFE_MEMCPY_NATIVE_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, length, dstSetRegionFunction)\ + (*jniHandle)->dstSetRegionFunction(jniHandle, dstAddress, dstOffset, length, (const dstType*)srcAddress); + +#define UNSAFE_MEMCPY_BUFFER_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, srcOffset, length, dstSetRegionFunction)\ + uint64_t srcBuffer = (uint64_t)(*jniHandle)->GetDirectBufferAddress(jniHandle, srcAddress);\ + if(!srcBuffer) {\ + unsafeThrowNotDirectBuffer(jniHandle);\ + return;\ + }\ + (*jniHandle)->dstSetRegionFunction(jniHandle, dstAddress, dstOffset, length, (const dstType*)(srcBuffer + srcOffset)); + +#define UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, length, dstSetRegionFunction)\ + uint64_t srcArray = (uint64_t)(*jniHandle)->srcGetElements(jniHandle, srcAddress, NULL);\ + if(!srcArray) {\ + unsafeThrowOutOfMemory(jniHandle);\ + return;\ + }\ + (*jniHandle)->dstSetRegionFunction(jniHandle, dstAddress, dstOffset, length, (const dstType*)(srcArray + srcOffset));\ + (*jniHandle)->srcReleaseElements(jniHandle, srcAddress, (void*)srcArray, JNI_ABORT); + + + +// =============== FULLY ALIGNED VERSIONS =============== + +#define UNSAFE_MEMCPY_ARRAY_ALIGN_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, srcOffset, srcType, srcGetElements, srcReleaseElements, length, srcGetRegionFunction, dstSetRegionFunction)\ + UNSAFE_MEMCPY_ARRAY_TO_ARRAY_ALIGN_IMPL(jniHandle, dstAddress, dstOffset, dstType, dstGetElements, dstReleaseElements, srcAddress, (srcOffset * (jsize)sizeof(srcType)), srcType, srcGetElements, srcReleaseElements, length, dstSetRegionFunction)