[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