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