[foreign] RFR 8220544: Jextract; library dependent header filtering

Jorn Vernee jbvernee at xs4all.nl
Wed Mar 13 16:21:52 UTC 2019


Hi,

After some discussion: 
https://mail.openjdk.java.net/pipermail/panama-dev/2019-March/004828.html

I've implemented the discussed approach to header & declaration 
filtering.

Bug: https://bugs.openjdk.java.net/browse/JDK-8220544
Webrev: 
http://cr.openjdk.java.net/~jvernee/panama/webrevs/8220544/webrev.00/

There are a few new implementation classes:
   * PattertnFilter; a helper class that encapsulates the Pattern based 
filtering code previously found in SymbolFilter. This code had to be 
reused.
   * Filters; a Context sub-component holding PatternFilters for 
different types of declarations.
   * DependencyFinder; finds dependencies of the root set of declarations 
found in the root headers.
   * ElementFilter; filters out non-library symbol elements based on 
whether they appear in a root header or are required by something 
therein.
   * RootSet; a helper class for managing root headers + required element 
Trees.

I also encountered some crashes when debug printing Trees, which I've 
fixed/worked around accordingly.

FWIW, I tried this out with the Windows registry API and it's working 
very nicely! Going from well over 100 headers to under 10. Some room for 
improvement still exists; some empty headers and static forwarders could 
still be omitted, but imho that should be handled by a separate patch.

Thanks,
Jorn


More information about the panama-dev mailing list