From 7b384c3bf20715ffe61ed1feb468aaa1937dd5a5 Mon Sep 17 00:00:00 2001 From: Chris Vest Date: Tue, 11 May 2021 11:35:38 +0200 Subject: [PATCH] Remove hacks related to the now lifted ByteBuffer/MemorySegment restrictions --- .../buffer/api/adaptor/ByteBufAdaptor.java | 18 +------------- .../netty/buffer/api/memseg/MemSegBuffer.java | 24 ++++--------------- 2 files changed, 6 insertions(+), 36 deletions(-) diff --git a/src/main/java/io/netty/buffer/api/adaptor/ByteBufAdaptor.java b/src/main/java/io/netty/buffer/api/adaptor/ByteBufAdaptor.java index 619e0ff..370b462 100644 --- a/src/main/java/io/netty/buffer/api/adaptor/ByteBufAdaptor.java +++ b/src/main/java/io/netty/buffer/api/adaptor/ByteBufAdaptor.java @@ -1244,23 +1244,7 @@ public final class ByteBufAdaptor extends ByteBuf { return true; }); - int read; - if (isDirect()) { - // TODO we cannot use off-heap buffers here, until the JDK allows direct byte buffers based on native - // memory segments to be used in IO operations. - ByteBuffer[] copies = new ByteBuffer[components.length]; - for (int i = 0; i < copies.length; i++) { - copies[i] = ByteBuffer.allocateDirect(components[i].remaining()); - } - read = (int) in.read(copies); - for (int i = 0; i < copies.length; i++) { - ByteBuffer copy = copies[i]; - ByteBuffer component = components[i]; - component.put(copy.flip()).flip(); - } - } else { - read = (int) in.read(components); - } + int read = (int) in.read(components); if (read > 0) { writerIndex(read + writerIndex()); diff --git a/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java b/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java index b97a836..6e31e04 100644 --- a/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java +++ b/src/main/java/io/netty/buffer/api/memseg/MemSegBuffer.java @@ -237,16 +237,9 @@ class MemSegBuffer extends RcSupport implements Buffer, Re @Override public ByteBuffer readableBuffer() { var buffer = seg.asByteBuffer(); - if (buffer.isDirect()) { - // TODO Remove this when the slicing of shared, native segments JDK bug is fixed. - // See https://mail.openjdk.java.net/pipermail/panama-dev/2021-January/011810.html - ByteBuffer tmp = ByteBuffer.allocateDirect(buffer.capacity()); - tmp.put(buffer); - buffer = tmp.position(0); - } buffer = buffer.asReadOnlyBuffer(); - // TODO avoid slicing and just set position+limit when JDK bug is fixed. - return buffer.slice(readerOffset(), readableBytes()).order(order); + buffer = buffer.position(readerOffset()).limit(readerOffset() + readableBytes()); + return buffer.order(order); } @Override @@ -277,24 +270,17 @@ class MemSegBuffer extends RcSupport implements Buffer, Re @Override public ByteBuffer writableBuffer() { var buffer = wseg.asByteBuffer(); - - if (buffer.isDirect()) { - buffer = buffer.position(writerOffset()).limit(writerOffset() + writableBytes()); - } else { - // TODO avoid slicing and just set position when JDK bug is fixed. - buffer = buffer.slice(writerOffset(), writableBytes()); - } + buffer = buffer.position(writerOffset()).limit(writerOffset() + writableBytes()); return buffer.order(order); } // @Override public long nativeAddress() { - try { + if (seg.isNative()) { return seg.address().toRawLongValue(); - } catch (UnsupportedOperationException e) { - return 0; // This is a heap segment. } + return 0; // This is a heap segment. } @Override