RFR: JDK-8244036 Refresh SetupJavaCompilation, and remove support for sjavac

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Tue Apr 28 20:37:28 UTC 2020


The code for setting up Java compilation has long been quite hard to 
understand, and has a tricky API. Part of this is due to the support for 
the sjavac ("smart javac") system. We do not use sjavac anymore, and it 
has not been tested for long. Part of the sjavac effort was extracted 
into the "depend" javac plugin, and another part ended up as the java 
server, both of which we still use.

This patch removes the "traditional" sjavac support, keeping just the 
depend plugin and javac server.

It also redesigns the SetupJavaCompilation API on how to define which 
compiler to use (from the boot jdk or the interim compiler built as part 
of the buildtools), and what JDK to target. This captures more precisely 
what was expressed by the cryptic "Setups" in SetupJavaCompilers.gmk.

The generated Java code that goes into the product should be 
byte-by-byte identical with this patch. However, I've not applied the 
same level of strictness for our build tools, where I have accepted 
changes in bytecode to make the new API calls simpler. This does not 
affect the output from the build tools.

I imagine a second pass will be needed after this, to clear up some 
remaining stuff. For instance, it is not clear that all instances of 
SetupJavaCompilation really ask for the correct thing.

Bug: https://bugs.openjdk.java.net/browse/JDK-8244036
WebRev: http://cr.openjdk.java.net/~ihse/JDK-8244036-remove-sjavac/webrev.01

/Magnus



More information about the build-dev mailing list