RFR JDK-8016764: JVM does not prohibit invokespecial in c.f.v 51.0 that invokes default interface method in c.f.v 52.0

harold seigel harold.seigel at oracle.com
Wed Aug 28 18:19:14 PDT 2013


Hi David,

The removal of the two lines causes the _invokespecial case to fall 
through to the _invokestatic case.

The _invokestatic case checks to see if _klass->major_version() is less 
than STATIC_METHOD_IN_INTERFACE_MAJOR_VERSION.  That is a comparison of 
class file versions.

If klass->major_version() is less than 52 then the constantpool entry 
can only be a Methodref.

Does that help clarify things?

Thanks, Harold

On 8/28/2013 8:52 PM, David Holmes wrote:
> Hi Harold,
>
> On 29/08/2013 1:18 AM, harold seigel wrote:
>> Hi,
>>
>> Please review this small fix for bug 8016764.  The change prevents class
>> files of version 51 and lower from using invokespecial to call default
>> interface methods that are in class files of version 52.
>
> I don't have much knowledge of the verifier but I don't see anything 
> that refers to the class file versions involved. Is it implicit in the 
> fact we got to this particular piece of code?
>
> Thanks,
> David
>
>> The fix was tested with the JCK Lang and VM tests, ute tests, and some
>> of the tests listed in the bug.
>>
>> Open webrev: http://cr.openjdk.java.net/~hseigel/bug_8016764/
>> <http://cr.openjdk.java.net/%7Ehseigel/bug_8016764/>
>>
>> bug: https://bugs.openjdk.java.net/browse/JDK-8016764
>>
>> Thanks! Harold



More information about the hotspot-runtime-dev mailing list