RFR (S) JDK-8026065: InterfaceMethodref for invokespecial must name a direct superinterface

Coleen Phillimore coleen.phillimore at oracle.com
Mon Nov 25 19:09:21 PST 2013


Lois,

This change looks good.   The change might be (S) but the effort 
understanding the specification for this case was (L) in my opinion.

Coleen

On 11/25/2013 1:37 PM, Lois Foltan wrote:
>
> Hi Karen,
>
> Thank you!  See below my answer concerning running tests with 
> -noverify.  I have incorporated your suggestion below.
> Please review the following updated webrev:
>
> http://cr.openjdk.java.net/~lfoltan/bug_jdk8026065_1/
>
> JDK java.util & lang, along with default method tests have passed 
> against this webrev.  Currently running JCK *.
>
> Lois
>
> On 11/24/2013 5:10 PM, Karen Kinnear wrote:
>> Lois,
>>
>> This looks great! And thank you.
>>
>> I assume you ran some set of test examples with and without the verifier?
>
> Since JDK java.util & lang proved to flush out the most issues with 
> this change I chose to run those with and without verification as well 
> as the default method tests.
>
>>
>> One question in verifier.cpp:
>>   You only need the is_same_or_direct check if 
>> cp->tag_at(index).value() == JVM_CONSTANT_InterfaceMethodef right?
>> If so, would it make sense to check that before doing the extra 
>> checking rather than before throwing the exception?
>> This would maybe be a bit quicker and less risk of breaking existing 
>> code.
>> The code logic here gets awkwardly nested, so I understand if you 
>> tried that and this was cleaner.
>>
>> thanks,
>> Karen
>>
>> On Nov 24, 2013, at 4:34 PM, Lois Foltan wrote:
>>
>>> Please review the following fix:
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~lfoltan/bug_jdk8026065/
>>>
>>> Bug: InterfaceMethodref for invokespecial must name a direct 
>>> superinterface
>>> https://bugs.openjdk.java.net/browse/JDK-8026065
>>>
>>> Summary of fix:
>>>    Add verification to check that InterfaceMethodref for 
>>> invokespecial names a method in a
>>>    direct superinterface of the current class or interface.  See 
>>> (JVMS draft 0.7.0) 4.9.2 Structural Constraints,
>>>
>>>        "Each invokespecial instruction must name an instance
>>>     initialization method (2.9), or
>>>          must reference a method in the current class or interface,
>>>     a method in a superclass of the
>>>          current class or interface, or a method in a direct
>>>     superinterface of the current class or interface."
>>>
>>> Tests:
>>>     jtreg hotspot/test/*, JDK java.lang & java.util, 
>>> vm.quick.testlist, JCK 8 *, JDK1.4 JCKs, defmeth tests
>>>
>>> Thank you, Lois
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/attachments/20131125/038a912f/attachment.html 


More information about the hotspot-runtime-dev mailing list