-
Bug
-
Resolution: Fixed
-
P3
-
15
-
b21
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. Part of the effort was the java server, 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.
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.
- duplicates
-
JDK-8219973 Remove "smart javac" (sjavac) support in build system
-
- Closed
-
- relates to
-
JDK-8244210 The javac server is never used
-
- Resolved
-
-
JDK-8244097 make bootcycle-images fails after JDK-8244036
-
- Resolved
-
-
JDK-8244247 Build failures after sjavac cleanup
-
- Resolved
-