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

Lois Foltan lois.foltan at oracle.com
Mon Nov 25 10:37:59 PST 2013


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/fed21e20/attachment.html 


More information about the hotspot-runtime-dev mailing list