[nestmates] setAccessible(true) restriction on hidden classes
Mandy Chung
mandy.chung at oracle.com
Tue Sep 10 23:27:03 UTC 2019
One restriction we proposed for hidden class is that it does not allow
setAccessible(true) on members of hidden classes. This ensures that
private internals of a language runtime are not accessible from outside
the implementation.
The compatibility concern seems to be higher than what we anticipated.
Libraries reflecting on lambda proxy classes and calls
setAccessible(true) on their members unconditionally are impacted by
this. Our testing shows that cassandra uses MemoryMeter library that
does this.
setAccessible can suppress language access check only if the declaring
class is in the same module as the caller or the package of the
declaring class is not open to the caller's module. To mitigate the
incompatibility concern, I propose to relax the restriction on hidden
classes and follow the existing setAccessible rules. If a hidden class
is injected in a package that is open to the caller for deep reflection,
setAccessible(true) will succeed.
Comments?
Mandy
[1]
https://download.java.net/java/early_access/jdk14/docs/api/java.base/java/lang/reflect/AccessibleObject.html#setAccessible(boolean)
More information about the valhalla-dev
mailing list