RFR: JDK-8180744: Update ct.sym for JDK 10

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Mon Oct 16 20:30:07 UTC 2017


Hi Jan,
the patch looks very good. I like the new JDKPlatformProvider and I find 
the new interface a lot cleaner (and I like that you could remove 
support for sig files from other javac components, that is a good sign!).

Overall I think that we should try and improve (not as part of this 
review/bug) CreateSymbols. It is quite a big class, doing many things at 
once. I think at the very least we should try to add more documentations 
(e.g. I found many invariants that are not documented), and, in the long 
run, I think the code would probably benefit if we could split 
CreateSymbols in 3 parts:

* definition of the DescriptionXYZ classes
* one tool to generate the sym.txt files
* one tool to generate ct.sym from description files

Also, I couldn't help but note that certain constraints had a 
significant impact on the implementation complexity:

* the fact that it is not customary to store binary files in openjdk 
probably forced you to 'quote' the classfiles guts (as generated by 
Probe.java)
* a similar restriction was probably the cause for having a text file 
representation rather than a classfile based one (which would have been 
much more amenable to be manipulated with tools such as ASM)
* the desire not to call .sig file 'classfiles' (as they are not 
well-formed) is also causing unnecessary complexity - in principle you 
shouldn't need a special file manager to load those

Anyway, all the comments are clearly outside the scope of this review - 
I just hope that at some point some of these decisions would be looked 
at again, to see if we can achieve this feature in a way that's easier 
to maintain in the long run.

Cheers
Maurizio


On 13/10/17 13:30, Jan Lahoda wrote:
> Hi,
>
> The patch here adds a support for --release 9 to OpenJDK. This 
> includes adding a snapshot of the JDK 9 APIs.
>
> Notes:
> -several changes to the historical data in make/data/symbols:
> --java.management.rmi-8.sym.txt contains a few classes that were 
> originally in java.management-8.sym.txt (this change is adjusting the 
> structure to adhere more to the final JDK 9 module layout)
> --java.annotations.common-* renamed to java.xml.ws.annotation-* to 
> adhere to the final layout
> --diffing of classes across releases has been improved to avoid some 
> unnecessary class header notices in the historical data
> --empty files are now not written for the historical data
> -the (JDK)PlatformProvider.PlatformDescription(Impl) now returns a 
> file manager, instead of a list of paths. This makes the contract 
> cleaner, and allow to handle the ".sig" extension mostly in the file 
> manager instead of ClassFinder. (Due to this change, JDK-8139607: 
> '-release option forces StandardJavaFileManager' is also resolved by 
> this patch, although it is not the primary goal of this patch.)
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8180744
> Webrev: http://cr.openjdk.java.net/~jlahoda/8180744/webrev.00/
>
> I'll send to build-dev as well after the javac changes will look OK.
>
> Any feedback is welcome.
>
> Thanks,
>     Jan



More information about the compiler-dev mailing list