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