[Nestmates] RFR: 8194409: [Nestmates] Update cpCache and related handling for invokeinterface of private interface methods

David Holmes david.holmes at oracle.com
Thu Jan 11 08:12:29 UTC 2018


bug: https://bugs.openjdk.java.net/browse/JDK-8194409
webrev: http://cr.openjdk.java.net/~dholmes/8194409/webrev/

When we switched to using invokeinterface, instead of invokespecial, for 
private interface method invocations, it all "just worked" (more or 
less). But it turns out that it works in relation to the interpreter and 
cpCache in a way that causes the logic to follow a path reserved for the 
extreme corner case of invokeinterface targetting a non-public method of 
java.lang.Object. With the fix for JDK-8154587 (not yet in valhall repo) 
that path will now hit an assertion failure if the target method is not 
from Object.

So we set up a similar but specific path for private interface methods, 
through the cpCache logic in the TemplateTable interpreter and onto the 
LinkResolver.

Unfortunately the TemplateTable changes are architecture specific. I 
have proposed fixes for each OpenJDK architecture, but can only test for 
x86 and sparc. I will solicit assistance to get the Aarch64, PPC64 and 
S390 platforms tested before any of this gets out of the valhalla repo.

Thanks,
David


More information about the valhalla-dev mailing list