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);