162. Introducing the memory segment view VarHandle
Let’s consider the following simple memory segment for storing an int (arena
is an instance of Arena
):
MemorySegment segment = arena.allocate(ValueLayout.JAVA_INT);
We know that we can create a VarHandle
via PathElement
:
// VarHandle[varType=int,
// coord=[interface java.lang.foreign.MemorySegment]]
VarHandle handle = ValueLayout.JAVA_INT.varHandle();
Or, via arrayElementVarHandle()
:
// VarHandle[varType=int,
// coord=[interface java.lang.foreign.MemorySegment, long]]
VarHandle arrhandle
= ValueLayout.JAVA_INT.arrayElementVarHandle();
The MethodHandles.memorySegmentViewVarHandle(ValueLayout layout)
is another approach for creating a VarHandle
that can be used to access a memory segment. The returned VarHandle
perceives/views the content of the memory segment as a sequence of the given ValueLayout
. In our case, the code looks as follows:
// VarHandle[varType=int,
// coord=[interface java.lang...