RFR: Lambda: 8026066 Invokeinterface throw ICCE for static methods

Coleen Phillimore coleen.phillimore at oracle.com
Mon Dec 2 15:35:38 PST 2013


Karen,  This looks good.  It's subtle that you only have to look in the 
immediate class and not up the hierarchy for resolve_interface_method 
because the incoming class is always an interface now, but I like it.

For resolve_method() is it true that the incoming class is never an 
interface?  I think then you can remove the check and require_methodref 
in that case.   That would be a good change.

I have two nits.  Can you realign the parameters in the calls where you 
added a parameter so that the lines aren't so long?   The second is that 
the names nostatics is odd.  I think it would be more discriptive as 
disallow_static_methods or something like that.  The other boolean 
checkpolymorphism should be check_polymorphism (this is a nit but it's 
the coding style and more readable).  I don't know why it's false for 
the interface method case.

The other thing is can you add "@ignore until bug 8028741 is fixed" in 
test test/runtime/8026365/InvokeSpecialAnonTest.java with this 
putback?   It'll keep us at 0 failures until the other bug is fixed.

Coleen

On 11/30/2013 05:39 PM, Karen Kinnear wrote:
> Please review:
>
> webrev: http://cr.openjdk.java.net/~acorn/8026066.3/webrev
> bug: https://bugs.openjdk.java.net/browse/JDK-8026066
>
> Fix invokeinterface, invokespecial and invokestatic to all use common interface method
> resolution and invokeinterface and invokespecial to throw ICCE if a static method is found.
> Thanks to Harold for the fix for the linkResolver lookup_instance_method_in_klasses. This
> fix passes here and is specifically tested by 8028438 coming next for review.
>
> Note: causes hotspot/test/runtime/8026365/InvokeSpecialAnonTest.java to fail - should
> be fixed by Lois with 8028741 - skip static and non-public methods in j.l.Object.
> I added this failure comment to that bug, hopefully in the correct syntax to show up as a known bug
> and so Lois could use that as a partial test.
>
> Tests run:
> defmeth
> jck.lang, jck.vm
> jtreg java.util, java.lang, lambda
> jtreg langtools/test/lambdaShapes/.../test/vm
> 2009 invoke* tests
> hotspot jtreg: runtime, compiler
> nsk vm.quick, vm.mlvm
> itabletests/intfbug
>
> thanks,
> KAren



More information about the hotspot-runtime-dev mailing list