On 11/13/19 10:37 AM, Brent Christian wrote:
Hi,

Recently, the 2-arg and 3-arg Class.forName() methods were updated[1] to perform class linking, per the specification. However this change had to be reverted[2].

Instead, let's clarify the Class.forName() spec not to guarantee linking (outside the case of also performing initialization, of course).  This is the long-standing behavior.

I also have a test of the non-linking behavior; it's based on the test case[3] for JDK-8231924.  It fails as of 14b14 (8212117) and passes as of 14b22 (8233091).

Please review my webrev:
http://cr.openjdk.java.net/~bchristi/8233272/webrev-02/

If the wording looks good, I'll fill in the Specification for the CSR[4] I've started.

The spec change looks fine.

As for the test, I expect that it simply calls Class.forName("Provider", false, ucl) and then should succeed.

Then calling Class.forName("Provider", true, ucl) should fail with an error (I think it's EIIE with NCDFE?).  This way it verifies that initialization/linking does cause NCDFE during verification while Class.forName does not do linking if initialize=false.

Mandy

Reply via email to