diff --git a/java/adapter/jdbc/pom.xml b/java/adapter/jdbc/pom.xml index 1f653d3f5c1..20136c3b4e8 100644 --- a/java/adapter/jdbc/pom.xml +++ b/java/adapter/jdbc/pom.xml @@ -86,11 +86,6 @@ test - - io.netty - netty-common - - diff --git a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/consumer/ClobConsumer.java b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/consumer/ClobConsumer.java index 4694f1c7e39..a52d9b73b4d 100644 --- a/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/consumer/ClobConsumer.java +++ b/java/adapter/jdbc/src/main/java/org/apache/arrow/adapter/jdbc/consumer/ClobConsumer.java @@ -23,11 +23,10 @@ import java.sql.SQLException; import org.apache.arrow.memory.ArrowBuf; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.vector.BitVectorHelper; import org.apache.arrow.vector.VarCharVector; -import io.netty.util.internal.PlatformDependent; - /** * Consumer which consume clob type values from {@link ResultSet}. * Write the data to {@link org.apache.arrow.vector.VarCharVector}. @@ -97,8 +96,12 @@ public void consume(ResultSet resultSet) throws SQLException { while ((dataBuffer.writerIndex() + bytes.length) > dataBuffer.capacity()) { vector.reallocDataBuffer(); } - PlatformDependent.copyMemory(bytes, 0, - dataBuffer.memoryAddress() + startIndex + totalBytes, bytes.length); + MemoryUtil.UNSAFE.copyMemory( + bytes, + MemoryUtil.BYTE_ARRAY_BASE_OFFSET, + null, + dataBuffer.memoryAddress() + startIndex + totalBytes, + bytes.length); totalBytes += bytes.length; read += readSize; @@ -144,8 +147,12 @@ public void consume(ResultSet resultSet) throws SQLException { while ((dataBuffer.writerIndex() + bytes.length) > dataBuffer.capacity()) { vector.reallocDataBuffer(); } - PlatformDependent.copyMemory(bytes, 0, - dataBuffer.memoryAddress() + startIndex + totalBytes, bytes.length); + MemoryUtil.UNSAFE.copyMemory( + bytes, + MemoryUtil.BYTE_ARRAY_BASE_OFFSET, + null, + dataBuffer.memoryAddress() + startIndex + totalBytes, + bytes.length); totalBytes += bytes.length; read += readSize; diff --git a/java/algorithm/pom.xml b/java/algorithm/pom.xml index ffe3651b2a8..5cacb6ce6be 100644 --- a/java/algorithm/pom.xml +++ b/java/algorithm/pom.xml @@ -44,10 +44,6 @@ ${project.version} test - - io.netty - netty-common - diff --git a/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/FixedWidthOutOfPlaceVectorSorter.java b/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/FixedWidthOutOfPlaceVectorSorter.java index 4f6c7665718..43d604060d0 100644 --- a/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/FixedWidthOutOfPlaceVectorSorter.java +++ b/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/FixedWidthOutOfPlaceVectorSorter.java @@ -18,13 +18,12 @@ package org.apache.arrow.algorithm.sort; import org.apache.arrow.memory.ArrowBuf; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.BaseFixedWidthVector; import org.apache.arrow.vector.BitVectorHelper; import org.apache.arrow.vector.IntVector; -import io.netty.util.internal.PlatformDependent; - /** * Default out-of-place sorter for fixed-width vectors. * It is an out-of-place sort, with time complexity O(n*log(n)). @@ -69,7 +68,7 @@ public void sortOutOfPlace(V srcVector, V dstVector, VectorValueComparator co BitVectorHelper.unsetBit(dstValidityBuffer, dstIndex); } else { BitVectorHelper.setBit(dstValidityBuffer, dstIndex); - PlatformDependent.copyMemory( + MemoryUtil.UNSAFE.copyMemory( srcValueBuffer.memoryAddress() + srcIndex * valueWidth, dstValueBuffer.memoryAddress() + dstIndex * valueWidth, valueWidth); diff --git a/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/VariableWidthOutOfPlaceVectorSorter.java b/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/VariableWidthOutOfPlaceVectorSorter.java index 62003752ec7..c60e273e9e8 100644 --- a/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/VariableWidthOutOfPlaceVectorSorter.java +++ b/java/algorithm/src/main/java/org/apache/arrow/algorithm/sort/VariableWidthOutOfPlaceVectorSorter.java @@ -18,13 +18,12 @@ package org.apache.arrow.algorithm.sort; import org.apache.arrow.memory.ArrowBuf; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.BaseVariableWidthVector; import org.apache.arrow.vector.BitVectorHelper; import org.apache.arrow.vector.IntVector; -import io.netty.util.internal.PlatformDependent; - /** * Default sorter for variable-width vectors. * It is an out-of-place sort, with time complexity O(n*log(n)). @@ -80,7 +79,7 @@ public void sortOutOfPlace(V srcVector, V dstVector, VectorValueComparator co BitVectorHelper.setBit(dstValidityBuffer, dstIndex); int srcOffset = srcOffsetBuffer.getInt(srcIndex * BaseVariableWidthVector.OFFSET_WIDTH); int valueLength = srcOffsetBuffer.getInt((srcIndex + 1) * BaseVariableWidthVector.OFFSET_WIDTH) - srcOffset; - PlatformDependent.copyMemory( + MemoryUtil.UNSAFE.copyMemory( srcValueBuffer.memoryAddress() + srcOffset, dstValueBuffer.memoryAddress() + dstOffset, valueLength); diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java b/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java index ded58b22b00..0c61ad70721 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BaseFixedWidthVector.java @@ -28,6 +28,7 @@ import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.util.ArrowBufPointer; import org.apache.arrow.memory.util.ByteFunctionHelpers; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.memory.util.hash.ArrowBufHasher; import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.compare.VectorVisitor; @@ -37,8 +38,6 @@ import org.apache.arrow.vector.util.OversizedAllocationException; import org.apache.arrow.vector.util.TransferPair; -import io.netty.util.internal.PlatformDependent; - /** * BaseFixedWidthVector provides an abstract interface for * implementing vectors of fixed width values. The vectors are nullable @@ -859,7 +858,7 @@ public void copyFrom(int fromIndex, int thisIndex, ValueVector from) { BitVectorHelper.unsetBit(this.getValidityBuffer(), thisIndex); } else { BitVectorHelper.setBit(this.getValidityBuffer(), thisIndex); - PlatformDependent.copyMemory(from.getDataBuffer().memoryAddress() + (long) fromIndex * typeWidth, + MemoryUtil.UNSAFE.copyMemory(from.getDataBuffer().memoryAddress() + (long) fromIndex * typeWidth, this.getDataBuffer().memoryAddress() + (long) thisIndex * typeWidth, typeWidth); } } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java b/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java index c2c88f2ba37..568554ba75e 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/BitVectorHelper.java @@ -17,18 +17,15 @@ package org.apache.arrow.vector; -import static io.netty.util.internal.PlatformDependent.getByte; -import static io.netty.util.internal.PlatformDependent.getInt; -import static io.netty.util.internal.PlatformDependent.getLong; import static org.apache.arrow.memory.util.LargeMemoryUtil.checkedCastToInt; import org.apache.arrow.memory.ArrowBuf; import org.apache.arrow.memory.BoundsChecking; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.vector.ipc.message.ArrowFieldNode; import org.apache.arrow.vector.util.DataSizeRoundingUtil; -import io.netty.util.internal.PlatformDependent; /** * Helper class for performing generic operations on a bit vector buffer. @@ -260,7 +257,7 @@ public static boolean checkAllBitsEqualTo( int index = 0; while (index + 8 <= fullBytesCount) { - long longValue = getLong(validityBuffer.memoryAddress() + index); + long longValue = MemoryUtil.UNSAFE.getLong(validityBuffer.memoryAddress() + index); if (longValue != (long) intToCompare) { return false; } @@ -268,7 +265,7 @@ public static boolean checkAllBitsEqualTo( } if (index + 4 <= fullBytesCount) { - int intValue = getInt(validityBuffer.memoryAddress() + index); + int intValue = MemoryUtil.UNSAFE.getInt(validityBuffer.memoryAddress() + index); if (intValue != intToCompare) { return false; } @@ -276,7 +273,7 @@ public static boolean checkAllBitsEqualTo( } while (index < fullBytesCount) { - byte byteValue = getByte(validityBuffer.memoryAddress() + index); + byte byteValue = MemoryUtil.UNSAFE.getByte(validityBuffer.memoryAddress() + index); if (byteValue != (byte) intToCompare) { return false; } @@ -285,7 +282,7 @@ public static boolean checkAllBitsEqualTo( // handling with the last bits if (remainder != 0) { - byte byteValue = getByte(validityBuffer.memoryAddress() + sizeInBytes - 1); + byte byteValue = MemoryUtil.UNSAFE.getByte(validityBuffer.memoryAddress() + sizeInBytes - 1); byte mask = (byte) ((1 << remainder) - 1); byteValue = (byte) (byteValue & mask); if (checkOneBits) { @@ -395,13 +392,13 @@ public static void concatBits(ArrowBuf input1, int numBits1, ArrowBuf input2, in // copy the first bit set if (input1 != output) { - PlatformDependent.copyMemory(input1.memoryAddress(), output.memoryAddress(), numBytes1); + MemoryUtil.UNSAFE.copyMemory(input1.memoryAddress(), output.memoryAddress(), numBytes1); } if (bitIndex(numBits1) == 0) { // The number of bits for the first bit set is a multiple of 8, so the boundary is at byte boundary. // For this case, we have a shortcut to copy all bytes from the second set after the byte boundary. - PlatformDependent.copyMemory(input2.memoryAddress(), output.memoryAddress() + numBytes1, numBytes2); + MemoryUtil.UNSAFE.copyMemory(input2.memoryAddress(), output.memoryAddress() + numBytes1, numBytes2); return; } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java index 4341e4175a5..5a1526b0c49 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/Decimal256Vector.java @@ -24,6 +24,7 @@ import org.apache.arrow.memory.ArrowBuf; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.vector.complex.impl.Decimal256ReaderImpl; import org.apache.arrow.vector.complex.reader.FieldReader; import org.apache.arrow.vector.holders.Decimal256Holder; @@ -35,7 +36,6 @@ import org.apache.arrow.vector.util.DecimalUtility; import org.apache.arrow.vector.util.TransferPair; -import io.netty.util.internal.PlatformDependent; /** * Decimal256Vector implements a fixed width vector (32 bytes) of @@ -222,13 +222,13 @@ public void setBigEndian(int index, byte[] value) { long outAddress = valueBuffer.memoryAddress() + (long) index * TYPE_WIDTH; if (length == 0) { - PlatformDependent.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH, (byte) 0); + MemoryUtil.UNSAFE.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH, (byte) 0); return; } if (LITTLE_ENDIAN) { // swap bytes to convert BE to LE for (int byteIdx = 0; byteIdx < length; ++byteIdx) { - PlatformDependent.putByte(outAddress + byteIdx, value[length - 1 - byteIdx]); + MemoryUtil.UNSAFE.putByte(outAddress + byteIdx, value[length - 1 - byteIdx]); } if (length == TYPE_WIDTH) { @@ -238,16 +238,21 @@ public void setBigEndian(int index, byte[] value) { if (length < TYPE_WIDTH) { // sign extend final byte pad = (byte) (value[0] < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress + length, Decimal256Vector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress + length, Decimal256Vector.TYPE_WIDTH - length, pad); return; } } else { if (length <= TYPE_WIDTH) { // copy data from value to outAddress - PlatformDependent.copyMemory(value, 0, outAddress + Decimal256Vector.TYPE_WIDTH - length, length); + MemoryUtil.UNSAFE.copyMemory( + value, + MemoryUtil.BYTE_ARRAY_BASE_OFFSET, + null, + outAddress + Decimal256Vector.TYPE_WIDTH - length, + length); // sign extend final byte pad = (byte) (value[0] < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH - length, pad); return; } } @@ -285,20 +290,20 @@ public void setSafe(int index, long start, ArrowBuf buffer, int length) { long inAddress = buffer.memoryAddress() + start; long outAddress = valueBuffer.memoryAddress() + (long) index * TYPE_WIDTH; if (LITTLE_ENDIAN) { - PlatformDependent.copyMemory(inAddress, outAddress, length); + MemoryUtil.UNSAFE.copyMemory(inAddress, outAddress, length); // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress + length - 1); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress + length - 1); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress + length, Decimal256Vector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress + length, Decimal256Vector.TYPE_WIDTH - length, pad); } } else { - PlatformDependent.copyMemory(inAddress, outAddress + Decimal256Vector.TYPE_WIDTH - length, length); + MemoryUtil.UNSAFE.copyMemory(inAddress, outAddress + Decimal256Vector.TYPE_WIDTH - length, length); // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH - length, pad); } } } @@ -325,22 +330,22 @@ public void setBigEndianSafe(int index, long start, ArrowBuf buffer, int length) if (LITTLE_ENDIAN) { // swap bytes to convert BE to LE for (int byteIdx = 0; byteIdx < length; ++byteIdx) { - byte val = PlatformDependent.getByte((inAddress + length - 1) - byteIdx); - PlatformDependent.putByte(outAddress + byteIdx, val); + byte val = MemoryUtil.UNSAFE.getByte((inAddress + length - 1) - byteIdx); + MemoryUtil.UNSAFE.putByte(outAddress + byteIdx, val); } // sign extend if (length < 32) { - byte msb = PlatformDependent.getByte(inAddress); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress + length, Decimal256Vector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress + length, Decimal256Vector.TYPE_WIDTH - length, pad); } } else { - PlatformDependent.copyMemory(inAddress, outAddress + Decimal256Vector.TYPE_WIDTH - length, length); + MemoryUtil.UNSAFE.copyMemory(inAddress, outAddress + Decimal256Vector.TYPE_WIDTH - length, length); // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress, Decimal256Vector.TYPE_WIDTH - length, pad); } } } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java index 3768c65249b..3fa9152a260 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/DecimalVector.java @@ -24,6 +24,7 @@ import org.apache.arrow.memory.ArrowBuf; import org.apache.arrow.memory.BufferAllocator; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.vector.complex.impl.DecimalReaderImpl; import org.apache.arrow.vector.complex.reader.FieldReader; import org.apache.arrow.vector.holders.DecimalHolder; @@ -35,8 +36,6 @@ import org.apache.arrow.vector.util.DecimalUtility; import org.apache.arrow.vector.util.TransferPair; -import io.netty.util.internal.PlatformDependent; - /** * DecimalVector implements a fixed width vector (16 bytes) of * decimal values which could be null. A validity buffer (bit vector) is @@ -222,13 +221,13 @@ public void setBigEndian(int index, byte[] value) { long outAddress = valueBuffer.memoryAddress() + (long) index * TYPE_WIDTH; if (length == 0) { - PlatformDependent.setMemory(outAddress, DecimalVector.TYPE_WIDTH, (byte) 0); + MemoryUtil.UNSAFE.setMemory(outAddress, DecimalVector.TYPE_WIDTH, (byte) 0); return; } if (LITTLE_ENDIAN) { // swap bytes to convert BE to LE for (int byteIdx = 0; byteIdx < length; ++byteIdx) { - PlatformDependent.putByte(outAddress + byteIdx, value[length - 1 - byteIdx]); + MemoryUtil.UNSAFE.putByte(outAddress + byteIdx, value[length - 1 - byteIdx]); } if (length == TYPE_WIDTH) { @@ -238,16 +237,21 @@ public void setBigEndian(int index, byte[] value) { if (length < TYPE_WIDTH) { // sign extend final byte pad = (byte) (value[0] < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress + length, DecimalVector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress + length, DecimalVector.TYPE_WIDTH - length, pad); return; } } else { if (length <= TYPE_WIDTH) { // copy data from value to outAddress - PlatformDependent.copyMemory(value, 0, outAddress + DecimalVector.TYPE_WIDTH - length, length); + MemoryUtil.UNSAFE.copyMemory( + value, + MemoryUtil.BYTE_ARRAY_BASE_OFFSET, + null, + outAddress + DecimalVector.TYPE_WIDTH - length, + length); // sign extend final byte pad = (byte) (value[0] < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress, DecimalVector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress, DecimalVector.TYPE_WIDTH - length, pad); return; } } @@ -285,20 +289,20 @@ public void setSafe(int index, long start, ArrowBuf buffer, int length) { long inAddress = buffer.memoryAddress() + start; long outAddress = valueBuffer.memoryAddress() + (long) index * TYPE_WIDTH; if (LITTLE_ENDIAN) { - PlatformDependent.copyMemory(inAddress, outAddress, length); + MemoryUtil.UNSAFE.copyMemory(inAddress, outAddress, length); // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress + length - 1); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress + length - 1); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress + length, DecimalVector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress + length, DecimalVector.TYPE_WIDTH - length, pad); } } else { - PlatformDependent.copyMemory(inAddress, outAddress + DecimalVector.TYPE_WIDTH - length, length); + MemoryUtil.UNSAFE.copyMemory(inAddress, outAddress + DecimalVector.TYPE_WIDTH - length, length); // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress, DecimalVector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress, DecimalVector.TYPE_WIDTH - length, pad); } } } @@ -325,22 +329,22 @@ public void setBigEndianSafe(int index, long start, ArrowBuf buffer, int length) if (LITTLE_ENDIAN) { // swap bytes to convert BE to LE for (int byteIdx = 0; byteIdx < length; ++byteIdx) { - byte val = PlatformDependent.getByte((inAddress + length - 1) - byteIdx); - PlatformDependent.putByte(outAddress + byteIdx, val); + byte val = MemoryUtil.UNSAFE.getByte((inAddress + length - 1) - byteIdx); + MemoryUtil.UNSAFE.putByte(outAddress + byteIdx, val); } // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress + length, DecimalVector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress + length, DecimalVector.TYPE_WIDTH - length, pad); } } else { - PlatformDependent.copyMemory(inAddress, outAddress + DecimalVector.TYPE_WIDTH - length, length); + MemoryUtil.UNSAFE.copyMemory(inAddress, outAddress + DecimalVector.TYPE_WIDTH - length, length); // sign extend if (length < TYPE_WIDTH) { - byte msb = PlatformDependent.getByte(inAddress); + byte msb = MemoryUtil.UNSAFE.getByte(inAddress); final byte pad = (byte) (msb < 0 ? 0xFF : 0x00); - PlatformDependent.setMemory(outAddress, DecimalVector.TYPE_WIDTH - length, pad); + MemoryUtil.UNSAFE.setMemory(outAddress, DecimalVector.TYPE_WIDTH - length, pad); } } } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/util/DecimalUtility.java b/java/vector/src/main/java/org/apache/arrow/vector/util/DecimalUtility.java index f778bcb209f..137ac746f4a 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/util/DecimalUtility.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/util/DecimalUtility.java @@ -23,8 +23,7 @@ import java.nio.ByteOrder; import org.apache.arrow.memory.ArrowBuf; - -import io.netty.util.internal.PlatformDependent; +import org.apache.arrow.memory.util.MemoryUtil; /** * Utility methods for configurable precision Decimal values (e.g. {@link BigDecimal}). @@ -141,15 +140,15 @@ public static void writeLongToArrowBuf(long value, ArrowBuf bytebuf, int index, final long addressOfValue = bytebuf.memoryAddress() + (long) index * byteWidth; final long padValue = Long.signum(value) == -1 ? -1L : 0L; if (LITTLE_ENDIAN) { - PlatformDependent.putLong(addressOfValue, value); + MemoryUtil.UNSAFE.putLong(addressOfValue, value); for (int i = 1; i <= (byteWidth - 8) / 8; i++) { - PlatformDependent.putLong(addressOfValue + Long.BYTES * i, padValue); + MemoryUtil.UNSAFE.putLong(addressOfValue + Long.BYTES * i, padValue); } } else { for (int i = 0; i < (byteWidth - 8) / 8; i++) { - PlatformDependent.putLong(addressOfValue + Long.BYTES * i, padValue); + MemoryUtil.UNSAFE.putLong(addressOfValue + Long.BYTES * i, padValue); } - PlatformDependent.putLong(addressOfValue + Long.BYTES * (byteWidth - 8) / 8, value); + MemoryUtil.UNSAFE.putLong(addressOfValue + Long.BYTES * (byteWidth - 8) / 8, value); } } diff --git a/java/vector/src/main/java/org/apache/arrow/vector/util/VectorAppender.java b/java/vector/src/main/java/org/apache/arrow/vector/util/VectorAppender.java index ea78917c3dd..823b1df0954 100644 --- a/java/vector/src/main/java/org/apache/arrow/vector/util/VectorAppender.java +++ b/java/vector/src/main/java/org/apache/arrow/vector/util/VectorAppender.java @@ -21,6 +21,7 @@ import java.util.HashSet; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.util.Preconditions; import org.apache.arrow.vector.BaseFixedWidthVector; import org.apache.arrow.vector.BaseLargeVariableWidthVector; @@ -39,8 +40,6 @@ import org.apache.arrow.vector.complex.NonNullableStructVector; import org.apache.arrow.vector.complex.UnionVector; -import io.netty.util.internal.PlatformDependent; - /** * Utility to append two vectors together. */ @@ -90,7 +89,7 @@ public ValueVector visit(BaseFixedWidthVector deltaVector, Void value) { deltaVector.getDataBuffer(), deltaVector.getValueCount(), targetVector.getDataBuffer()); } else { - PlatformDependent.copyMemory(deltaVector.getDataBuffer().memoryAddress(), + MemoryUtil.UNSAFE.copyMemory(deltaVector.getDataBuffer().memoryAddress(), targetVector.getDataBuffer().memoryAddress() + deltaVector.getTypeWidth() * targetVector.getValueCount(), deltaVector.getTypeWidth() * deltaVector.getValueCount()); } @@ -129,11 +128,11 @@ public ValueVector visit(BaseVariableWidthVector deltaVector, Void value) { deltaVector.getValidityBuffer(), deltaVector.getValueCount(), targetVector.getValidityBuffer()); // append data buffer - PlatformDependent.copyMemory(deltaVector.getDataBuffer().memoryAddress(), + MemoryUtil.UNSAFE.copyMemory(deltaVector.getDataBuffer().memoryAddress(), targetVector.getDataBuffer().memoryAddress() + targetDataSize, deltaDataSize); // copy offset buffer - PlatformDependent.copyMemory( + MemoryUtil.UNSAFE.copyMemory( deltaVector.getOffsetBuffer().memoryAddress() + BaseVariableWidthVector.OFFSET_WIDTH, targetVector.getOffsetBuffer().memoryAddress() + (targetVector.getValueCount() + 1) * BaseVariableWidthVector.OFFSET_WIDTH, @@ -183,11 +182,11 @@ public ValueVector visit(BaseLargeVariableWidthVector deltaVector, Void value) { deltaVector.getValidityBuffer(), deltaVector.getValueCount(), targetVector.getValidityBuffer()); // append data buffer - PlatformDependent.copyMemory(deltaVector.getDataBuffer().memoryAddress(), + MemoryUtil.UNSAFE.copyMemory(deltaVector.getDataBuffer().memoryAddress(), targetVector.getDataBuffer().memoryAddress() + targetDataSize, deltaDataSize); // copy offset buffer - PlatformDependent.copyMemory( + MemoryUtil.UNSAFE.copyMemory( deltaVector.getOffsetBuffer().memoryAddress() + BaseLargeVariableWidthVector.OFFSET_WIDTH, targetVector.getOffsetBuffer().memoryAddress() + (targetVector.getValueCount() + 1) * BaseLargeVariableWidthVector.OFFSET_WIDTH, @@ -239,7 +238,7 @@ public ValueVector visit(ListVector deltaVector, Void value) { deltaVector.getValidityBuffer(), deltaVector.getValueCount(), targetVector.getValidityBuffer()); // append offset buffer - PlatformDependent.copyMemory(deltaVector.getOffsetBuffer().memoryAddress() + ListVector.OFFSET_WIDTH, + MemoryUtil.UNSAFE.copyMemory(deltaVector.getOffsetBuffer().memoryAddress() + ListVector.OFFSET_WIDTH, targetVector.getOffsetBuffer().memoryAddress() + (targetVector.getValueCount() + 1) * ListVector.OFFSET_WIDTH, (long) deltaVector.getValueCount() * ListVector.OFFSET_WIDTH); @@ -295,7 +294,7 @@ public ValueVector visit(LargeListVector deltaVector, Void value) { deltaVector.getValidityBuffer(), deltaVector.getValueCount(), targetVector.getValidityBuffer()); // append offset buffer - PlatformDependent.copyMemory(deltaVector.getOffsetBuffer().memoryAddress() + ListVector.OFFSET_WIDTH, + MemoryUtil.UNSAFE.copyMemory(deltaVector.getOffsetBuffer().memoryAddress() + ListVector.OFFSET_WIDTH, targetVector.getOffsetBuffer().memoryAddress() + (targetVector.getValueCount() + 1) * LargeListVector.OFFSET_WIDTH, (long) deltaVector.getValueCount() * ListVector.OFFSET_WIDTH); @@ -415,7 +414,7 @@ public ValueVector visit(UnionVector deltaVector, Void value) { } // append type buffers - PlatformDependent.copyMemory(deltaVector.getTypeBufferAddress(), + MemoryUtil.UNSAFE.copyMemory(deltaVector.getTypeBufferAddress(), targetUnionVector.getTypeBufferAddress() + targetVector.getValueCount(), deltaVector.getValueCount()); @@ -478,7 +477,7 @@ public ValueVector visit(DenseUnionVector deltaVector, Void value) { } // append type buffers - PlatformDependent.copyMemory(deltaVector.getTypeBuffer().memoryAddress(), + MemoryUtil.UNSAFE.copyMemory(deltaVector.getTypeBuffer().memoryAddress(), targetDenseUnionVector.getTypeBuffer() .memoryAddress() + targetVector.getValueCount(), deltaVector.getValueCount()); diff --git a/java/vector/src/test/java/org/apache/arrow/vector/TestBitVectorHelper.java b/java/vector/src/test/java/org/apache/arrow/vector/TestBitVectorHelper.java index 4563577202b..96005dc511c 100644 --- a/java/vector/src/test/java/org/apache/arrow/vector/TestBitVectorHelper.java +++ b/java/vector/src/test/java/org/apache/arrow/vector/TestBitVectorHelper.java @@ -24,11 +24,10 @@ import org.apache.arrow.memory.ArrowBuf; import org.apache.arrow.memory.BufferAllocator; import org.apache.arrow.memory.RootAllocator; +import org.apache.arrow.memory.util.MemoryUtil; import org.apache.arrow.vector.ipc.message.ArrowFieldNode; import org.junit.Test; -import io.netty.util.internal.PlatformDependent; - public class TestBitVectorHelper { @Test public void testGetNullCount() throws Exception { @@ -117,34 +116,34 @@ public void testAllBitsSet() { try (RootAllocator allocator = new RootAllocator(bufferLength); ArrowBuf validityBuffer = allocator.buffer(bufferLength)) { - PlatformDependent.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); + MemoryUtil.UNSAFE.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); int bitLength = 1024; assertTrue(BitVectorHelper.checkAllBitsEqualTo(validityBuffer, bitLength, true)); bitLength = 1028; assertTrue(BitVectorHelper.checkAllBitsEqualTo(validityBuffer, bitLength, true)); - PlatformDependent.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); + MemoryUtil.UNSAFE.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); bitLength = 1025; BitVectorHelper.unsetBit(validityBuffer, 12); assertFalse(BitVectorHelper.checkAllBitsEqualTo(validityBuffer, bitLength, true)); - PlatformDependent.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); + MemoryUtil.UNSAFE.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); bitLength = 1025; BitVectorHelper.unsetBit(validityBuffer, 1024); assertFalse(BitVectorHelper.checkAllBitsEqualTo(validityBuffer, bitLength, true)); - PlatformDependent.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); + MemoryUtil.UNSAFE.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); bitLength = 1026; BitVectorHelper.unsetBit(validityBuffer, 1024); assertFalse(BitVectorHelper.checkAllBitsEqualTo(validityBuffer, bitLength, true)); - PlatformDependent.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); + MemoryUtil.UNSAFE.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); bitLength = 1027; BitVectorHelper.unsetBit(validityBuffer, 1025); assertFalse(BitVectorHelper.checkAllBitsEqualTo(validityBuffer, bitLength, true)); - PlatformDependent.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); + MemoryUtil.UNSAFE.setMemory(validityBuffer.memoryAddress(), bufferLength, (byte) -1); bitLength = 1031; BitVectorHelper.unsetBit(validityBuffer, 1029); BitVectorHelper.unsetBit(validityBuffer, 1030);