RFR: 8177086: java.lang.reflect.AccessibleObject::canAccess should share access cache with internal method ::checkAccess
Alan Bateman
Alan.Bateman at oracle.com
Sun Mar 19 19:03:46 UTC 2017
On 19/03/2017 17:52, Peter Levart wrote:
> Hi,
>
> Module system implementation refresh 2017/2 (JDK-8173393) introduced
> new API method AccessibleObject::canAccess which can be used to test
> if the caller has access to the reflected member (with possible target
> object argument for instance members). The implementation of this
> method, after some parameter validation checks, delegates directly to
> jdk.internal.reflect.Reflection::verifyMemberAccess. This is
> sub-optimal. Co-located internal method AccessibleObject::checkAccess
> also delegates to Reflection::verifyMemberAccess, but it also uses a
> one-element cache of access-check decision, which greatly speeds up
> repeated calls by the same caller to the same reflected member. The
> cache could be shared between those two methods which would improve
> performance of code idioms like this:
>
When integrating with the cache came up on jigsaw-dev a few work ago
then I think Mandy wanted to defer to it to JDK 10. However since
canAccess is new then having is be more efficient might be good, it just
mightn't be a P1/P2 for RDP2. Can you re-base the patch against jake as
has changed this code and then maybe we can figure out whether to pull
it into jake?
-Alan
More information about the jigsaw-dev
mailing list