Slide 54
Slide 54 text
412: Foreign Function & Memory API (Incubator)
Foreign Memory API
メモリから読み書き VarHandleを使って読み書き
...
VarHandle xHandle = points.varHandle(
int.class,
MemoryLayout.PathElement.sequenceElement(),
MemoryLayout.PathElement.groupElement("x")
);
VarHandle yHandle = points.varHandle(
int.class,
MemoryLayout.PathElement.sequenceElement(),
MemoryLayout.PathElement.groupElement("y")
);
for (int i = 0; i < values.length; i++) {
int x = (int) xHandle.get(segment, (long) i);
int y = (int) yHandle.get(segment, (long) i);
xHandle.set(segment, (long) i, values[i].x() * 2);
yHandle.set(segment, (long) i, values[i].y() * 2);
}
...
// メモリセグメントにPointの値を設定
...
for (int i = 0; i < values.length; i++) {
MemoryAccess.setIntAtOffset(
segment,
points.byteOffset(
MemoryLayout.PathElement.sequenceElement(i),
MemoryLayout.PathElement.groupElement("x")
),
values[i].x()
);
MemoryAccess.setIntAtOffset(
segment,
points.byteOffset(
MemoryLayout.PathElement.sequenceElement(i),
MemoryLayout.PathElement.groupElement("y")
),
values[i].y()
);
}
...