MemorySegment for fields

David Lloyd david.lloyd at redhat.com
Fri Jan 19 21:48:36 UTC 2024


I've been experimenting quite a bit with the FFM API and one thing I've
noted is that it would be nice to be able to get a `MemorySegment` for a
field on an object and/or a static field.

In the former case, the use case would be to provide a very small buffer
for operations which may need one (for example, reading/writing an
`eventfd` on Linux, reading/writing single bytes, or capturing `errno`
without having to allocate a segment for every operation).

The latter could be useful to send constant read-only data into a native
call, but this is more hypothetical than practical.

I don't see much difference in terms of safety/integrity between a
hypothetical instance field-backed `MemorySegment` compared to one backed
by a heap array; it's essentially the same concept (and you can achieve a
sort-of-similar result today by wrapping a one-element array with a
`MemorySegment`, in another constant field, but the overhead is one extra
heap object in this case). The field could be required to be non-final, or
perhaps a final field could be wrapped using a read-only `MemorySegment`.

Could this be a reasonable enhancement?
--
- DML • he/him
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/panama-dev/attachments/20240119/44ca6f16/attachment.htm>


More information about the panama-dev mailing list