[9] RFR (xs) 8168317: [JVMCI] use reflection instead of jdk 9 Module API in Services.java

Erik Joelsson erik.joelsson at oracle.com
Mon Oct 24 13:48:16 UTC 2016

Adding build-dev, which should be included when discussing build issues. 
For any new readers, please see [1] for the full discussion.

In theory it is possible to compile against and run on the exploded 
image during the build, but I do not recommend it. Igor is correct in 
the build team being against that design. The rationale is that it adds 
a lot of complexity to the build. The exploded image cannot be safely 
run until all java modules have been compiled as it introduces races. 
Maintaining the build with such a construct will be very brittle when 
other changes are made. We did allow the gensrc for jdk.vm.ci to run in 
this way for a short time, since it was only supported on Linux x64, 
where these races are rarer, but if this would ever need to be built on 
Windows, we would be in trouble quickly. Luckily, jdk.vm.ci was able to 
refactor away from needing this annotation processing for that module.

I certainly prefer the reflection solution proposed here, but find it 
sad that it's needed.



On 2016-10-19 21:54, Igor Veresov wrote:
>> On Oct 19, 2016, at 12:47 PM, Christian Thalinger 
>> <cthalinger at twitter.com <mailto:cthalinger at twitter.com>> wrote:
>>> On Oct 19, 2016, at 9:40 AM, Vladimir Kozlov 
>>> <vladimir.kozlov at oracle.com <mailto:vladimir.kozlov at oracle.com>> wrote:
>>> https://bugs.openjdk.java.net/browse/JDK-8168317
>>> webrev:
>>> http://cr.openjdk.java.net/~kvn/8168317/webrev/ 
>>> <http://cr.openjdk.java.net/%7Ekvn/8168317/webrev/>
>>> When Graal is built as part of JDK it requires first to build an 
>>> annotation processor using boot jdk 8.
>>> After JDK-8167180 changes Services class is referenced by annotation 
>>> processor but the code is using jdk 9 Module API and it can't be 
>>> used with jdk 8.
>> I left a comment in the bug: Permalink 
>> <https://bugs.openjdk.java.net/browse/JDK-8168317?focusedCommentId=14013733&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14013733>
>> Basically, it should be possible to use the newly built javac to 
>> compile the annotation processors.  Erik?
> It’s not only about compilation it’s about running it on the bootstrap 
> JDK, which in currently 8.
> igor
>> Can you paste or upload the .gmk file?
>>> Use reflection instead of Module API and use code only for running 
>>> with jdk 9.
>>> Testing with JPRT and JDK build of Graal.
>>> Thanks,
>>> Vladimir

More information about the build-dev mailing list