[foreign-memaccess] RFR 8234581: Cleanup use of exceptions in the memory access API
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Thu Nov 21 12:53:12 UTC 2019
New day, new cleanup :-)
This time, following some of the indications from Paul, the goal is to
cleanup usages of exceptions in the memory access API. I found 4 broad
categories of issues:
- We sometimes throw IAE where an IOOB would be preferred (namely,
MemorySegment::slice and MemoryAddress::copy)
- We sometimes use RuntimeException to document unforeseen failures of
Unsafe::allocateMemory (ByteBuffer::allocateDirect does not do so)
- The handling of exceptions when forming layout paths is plain
inconsistent - and IAE should be used throughout
- MemorySegment::close should always throw ISE if the state is not valid
The changes in LayoutPath handling required some deeper changes in the
implementation - which now triggers an uniform IAE with a message of the
kind: Bad layout path: <cause>.
Since I was there, I also added the logic to zero the native memory
allocated with MemorySegment::allocateNative. This behavior can be
disabled with a runtime flag: -Djdk.internal.foreign.skipZeroMemory.
I also made extra sure that the exceptions thrown in the code are
reflected in the throws clause of the API methods, and that there are
the right @throw taglets for them.
Webrev:
http://cr.openjdk.java.net/~mcimadamore/panama/8234581/
javadoc:
cr.openjdk.java.net/~mcimadamore/panama/8234581_javadoc
Cheers
Maurizio
More information about the panama-dev
mailing list