RFR: 8043275 Interface initialization for default methods

Coleen Phillimore coleen.phillimore at oracle.com
Mon Oct 20 14:04:24 UTC 2014


Karen,
This looks great.  I only have two small requests for comments.

At instanceKlass.cpp right before line 749, can you add a short one line 
comment about only calling initialize() for interfaces that *declare* 
concrete methods.  In case people miss that subtlety (which I missed at 
first reading).

http://cr.openjdk.java.net/~acorn/8043275/webrev/test/runtime/lambda-features/TestInterfaceInit.java.html

The test case could use a comment between 68-72.  There's a trick there 
which is hard to see.  The classes that have concrete methods are 
initialized for 'L' (which is probably an ldc) but then the ones without 
concrete methods are initialized when you do a getfield of 'v'.  I think?

I don't need to see another version with comments since they are small 
requests.

thanks,
Coleen

On 10/16/14, 2:01 AM, Karen Kinnear wrote:
> Please review for 9 (8u40 back port will follow):
>
> webrev: http://cr.openjdk.java.net/~acorn/8043275/webrev/
> bug: https://bugs.openjdk.java.net/browse/JDK-8043275
>
> Summary:
>    Fix superinterface initialization to be based on declaring a non-static instance method rather than on declaring or inheriting one
>
> Tested (linux-x64):
> defmeth - enhanced
> jtreg TestInterfaceInit and TestInterfaceOrder
> jtreg hotspot, jdk.lambda, java.util, java.lang
> jck vm, lang
> nsk: vm.defmeth (added 2 tests), vm.mlvm, vm.fast.quick
>
> Thanks to Dan Smith, Alex Buckley, John Rose for specification clarification.
>
> thanks,
> Karen
>



More information about the hotspot-dev mailing list