RFR: JDK-8234729: Javac should eagerly change code generation for method references to avert IllegalAccessError in future.

Srikanth srikanth.adayapalam at oracle.com
Mon Nov 25 11:09:19 UTC 2019


JBS ticket: https://bugs.openjdk.java.net/browse/JDK-8234729
Webrev link: 
http://cr.openjdk.java.net/~sadayapalam/JDK-8234729/webrev.00/jdk.patch

[1] Hidden Classes JEP: http://openjdk.java.net/jeps/8220607
[2] Corresponding JBS ticket: 
https://bugs.openjdk.java.net/browse/JDK-8220607
[3] Nestmates branch specific fix: 
https://bugs.openjdk.java.net/browse/JDK-8227415

Scenario: Javac's code generation for method references that target a 
protected method declared in a superclass in a different package.

Problem:

When Hidden Classes JEP [1] eventually makes its way into mainline via 
[2], due to stricter enforcement of access control, code compiled using 
earlier compilers that uses method references that target a protected 
method of a super class in a different package may trigger an 
IllegalAccessError.

This was discovered in the nestmates work in Valhalla and was fixed 
locally there via [3].

The present task JDK-8234729 is to bring forward the fix in JDK-8227415 
[3] to jdk/jdk ahead of time, so as to minimize compatibility risks. If 
[2] and [3] were released together, then any code compiled using older 
compilers that involves the scenario may trigger an IAE and will have to 
recompiled.

More detailed description in 
https://bugs.openjdk.java.net/browse/JDK-8234729

The proposed fix passes all langtools tests and JCK tests.

Thanks
Srikanth.


More information about the compiler-dev mailing list