Hi,

Please review my change to backout JDK-8212117:
http://cr.openjdk.java.net/~bchristi/8233091/webrev-revert-01/

Background:

A couple months ago, JDK-8212117[1] was fixed[2]. It changed the behavior of the 2-arg and 3-arg Class.forName methods to ensure that linking is performed. This conforms to the specification[3], which states that the method "attempts to locate, load, and link the class". In the process, 8181144[7] was also resolved.

It was acknowledged that new LinkageErrors could be introduced as a result - for instance, in cases where Class.forName() loads, but never uses, an unlinkable class. Such uncovered errors would need to be fixed.

Well, after a few promoted builds with the JDK-8212117 change, it looks like new LinkageErrors will be more widespread than anticipated (JDK-8231924[4], for example). This change to long-standing behavior would cause too great an incompatibility. (See Mandy's comment[5] for more.)

So the proposal is to revert the JDK-8212117 change, along with a couple follow-up tasks:

* Update the Class::forName API spec to match the long-standing behavior (i.e. no linking if initialize=false) - JDK-8233272 [6]

* Reopen JDK-8181144[7] for further investigation of JDI VirtualMachine::allClasses and JVM TI AllLoadedClasses

Thanks,
-Brent

==============
1. https://bugs.openjdk.java.net/browse/JDK-8212117

2. http://mail.openjdk.java.net/pipermail/core-libs-dev/2019-September/062142.html

3. https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Class.html#forName(java.lang.String,boolean,java.lang.ClassLoader)

4. https://bugs.openjdk.java.net/browse/JDK-8231924

5. https://bugs.openjdk.java.net/browse/JDK-8212117?focusedCommentId=14297501&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14297501

6. https://bugs.openjdk.java.net/browse/JDK-8233272

7. https://bugs.openjdk.java.net/browse/JDK-8181144


Reply via email to