RFR (M): JDK-8004967 - Default method cause java.lang.VerifyError: Illegal use of nonvirtual function call

Remi Forax forax at univ-mlv.fr
Wed Jan 16 11:02:00 PST 2013


On 01/16/2013 07:35 PM, Bharadwaj Yadavalli wrote:
> Please review the change at 
> http://cr.openjdk.java.net/~bharadwaj/8004967/webrev/
>
> Default interface methods are new in Java 8. VM creates overpass 
> methods in the vtable slots of classes to invoke a default method 
> using invokespecial.
>
> Consequently, invocation of default interface methods (i.e., overpass 
> methods in the VM) via invokespecial is legal and should not be 
> flagged as illegal.
>
> In short, this change allows invocation of default methods of Java 8 
> using invokespecial.
>
> I ran JCK (vm, lang, api) tests, runThese and vm.quicklist with no new 
> failures.
>
> Thanks,
>
> Bharadwaj
>

What if I generate a bytecode with an abstract public method marked with 
synthetic and bridge ?
I think you should check that the method is not abstract.

Rémi



More information about the hotspot-runtime-dev mailing list