RFR: 6983726: Reimplement MethodHandleProxies.asInterfaceInstance [v16]

Mandy Chung mchung at openjdk.org
Fri May 26 22:08:16 UTC 2023


On Fri, 26 May 2023 21:29:14 GMT, Chen Liang <liach at openjdk.org> wrote:

>>> This approach also requires the Class loading checks since the interface is not unconditionally exported and fails security manager.
>> 
>> Are you referring to `ClassLoader::checkPackageAccess` change?   As MHProxy implements `sun.invoke.WrapperInstance`, it needs to export `java.base/sun.invoke` to the dynamic module.    The change to `ClassLoader::checkPackageAccess` doesn't make sense for this.
>
> Yes. Unfortunately, it fails at https://github.com/openjdk/jdk/blob/bd21e68e679c41c98f39dd2fbd38270ae7d55ed9/src/java.base/share/classes/java/lang/SecurityManager.java#L1317 because a conditionally-exported package is considered a non-(unconditionally-)exported package.

If we keep a cache of all MHProxy classes, I think this would not need `sun.invoke.WrapperInstance`.   OTOH, `sun.invoke` does not have any other class except `WrapperInstance` and the `ensureOriginalLookup` method would need to be in an internal class.   So no problem of implementing `sun.invoke.WrapperInstance`.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/13197#discussion_r1207387430


More information about the core-libs-dev mailing list