On 03/04/2017 19:49, Rafael Winterhalter wrote:

I just found out about this change to restrict redefining some modules:
http://hg.openjdk.java.net/jigsaw/jake/hotspot/rev/52cdbd4a5999 and I can
only repeat my warning that this further restriction will make it harder to
migrate to Java 9 and might break tools in the process. It does neither
seem to me that a good alternative is offered if opening core modules is
required to make a Java agent work.

Is this change intending to freeze classes of java.base or to restrict
exporting? If so, does this also affect the command line to change the
properties of certain modules? Was an evaluation done how this change might
impact existing tools?
I mentioned this in another mail a few minutes ago.

There has always been the notion of unmodifiable classes in both JVM TI and java.lang.instrument. JSR 163 defined a function + method in both APIs to test if a class is modifiable and all functions/methods that transformed classes could fail. As things stand then you cannot modify array primitive classes, ditto for VM anonymous classes. In the past then this was used to deal with interactions with class data sharing when classes in the archive could not be modified.

For both API consistency reasons and to allow for cases that we can't anticipate now then the new JVM TI functions to update modules should allow for the possibility that a module is not modifiable. That should not be controversial. There are no unmodifiable modules and there should be no impact on agents making use of these functions.

-Alan


Reply via email to