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

Karen Kinnear karen.kinnear at oracle.com
Mon Nov 25 11:53:57 PST 2013


Lois,

Looks much better - many thanks for the modification. Ship it.

thanks,
Karen

On Nov 25, 2013, at 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/d12ac66e/attachment.html 


More information about the hotspot-runtime-dev mailing list