RFR: 8256865: Foreign Memory Access and Linker API are missing NPE checks

Jorn Vernee jvernee at openjdk.java.net
Mon Nov 23 18:13:56 UTC 2020


On Mon, 23 Nov 2020 15:11:49 GMT, Maurizio Cimadamore <mcimadamore at openjdk.org> wrote:

> Both the Foreign Memory Access and the Foreign Linker APIs leave something to be desired when it comes to handling NPEs - first, most of the API javadoc is oblivious to NPEs being thrown. Secondly, not all API method implementations add expicit NPE checks - with the result of NPE often being thrown very deep in the call chain - if at all. Third, test for API coverage of nulls is ad-hoc.
> 
> This patch rectifies all these issues. To increase coverage for null injected into APIs, this patch introduces a new framework for testing an API in bulk, so that all methods are reflectively called with some values replaced with nulls, so that all combinations are tried.
> 
> I've also added, as part of this patch, a test to cover the statics in MemoryAccess which were not covered throughly.

Already looked at this in panama-foreign, but found one minor issue.

src/jdk.incubator.foreign/share/classes/jdk/incubator/foreign/FunctionDescriptor.java line 152:

> 150:      * @return the new function descriptor.
> 151:      * @throws NullPointerException if either {@code addedLayouts == null}, or any of the
> 152:      * layouts in {@code addedLayouts} is null. at throws NullPointerException if any of the new argument layouts is null.

Spurious `@throws` tag here

-------------

Marked as reviewed by jvernee (Committer).

PR: https://git.openjdk.java.net/jdk/pull/1388


More information about the core-libs-dev mailing list