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...