RFR: JDK-8230776: Javac throws AssertionError in jvm.Gen.visitExec

Jan Lahoda jan.lahoda at oracle.com
Wed Aug 26 08:26:25 UTC 2020

Hi Vicente,

I am sorry, but I don't think this is a fix on a good place.

The root cause here is that the classfile for Test has an invalid method 
descriptor for the Test's constructor (returns float instead of void). 
See JVMS 4.6., descriptor_index. I think it would be much better to 
validate method descriptors, and reject classfiles with descriptors not 
adhering to JVMS. The user would then get a much more helpful error, 
saying something like:
Sub.java:1: error: cannot access Test
class Sub extends Test {}
   bad class file: 
     method descriptor invalid for <init>
     Please remove or make sure it appears in the correct subdirectory 
of the classpath.
1 error

What do you think?


On 25. 08. 20 19:23, Vicente Romero wrote:
> Please review fix for [1] at [2]. The fix is ending the compilation at 
> the code generation phase if a statement cant be generated and there is 
> no way for the compilation to continue.
> Thanks,
> Vicente
> [1] https://bugs.openjdk.java.net/browse/JDK-8230776
> [2] http://cr.openjdk.java.net/~vromero/8230776/webrev.00/

More information about the compiler-dev mailing list