sun.nio.ch.DirectBuffer and jdk9/jigsaw
paul.sandoz at oracle.com
Thu Feb 23 23:18:49 UTC 2017
> On 23 Feb 2017, at 13:39, Uwe Schindler <uschindler at apache.org> wrote:
> Thanks Remi.
> Of course that would work, but the goal was to try VarHandles as generic way to access on-heap and off-heap structures. Maybe Paul Sandoz has an answer to this API inconsistency.
It’s just that, an inconsistency, something i did not focus on w.r.t. use-cases, same for expanding the types supported for aligned atomic access, since we added field/array support for those quite late in the process and it’s a pain to deal with big/little endian cases read-modify-write ops (such as getAndAdd).
In effect the following VarHandles would then provide equivalent access functionality:
VarHandle v1 = MethodHandles.arrayElementVarHandle(byte.class);
VarHandle v2 = MethodHandles.byteArrayViewVarHandle(byte.class, ByteOrder.BIG_ENDIAN);
VarHandle v3 = MethodHandles.byteBufferViewVarHandle(byte.class, ByteOrder.LITTLE_ENDIAN);
// Where for v3 a ByteBuffer instance is a heap buffer wrapping a byte array
We can certainly do this for 10.
> Am 23. Februar 2017 22:31:35 MEZ schrieb forax at univ-mlv.fr:
> Hi Uwe,
> I've not the definitive answer, but you can create a MethodHandle on ByteBuffer::get and see a VarHandle as a MethodHandle (with VarHandler.toMethodHandle) so both access can be represented as method handles.
More information about the jigsaw-dev