[Nestmates] RFR: 8196320: [Nestmates] Restore the old enclosing-class based isSamePackageMember check in sun/invoke/util/VerifyAccess.java

David Holmes david.holmes at oracle.com
Thu Feb 1 21:43:43 UTC 2018


Thanks Mandy!

David

On 2/02/2018 5:34 AM, mandy chung wrote:
> 
> 
> On 1/31/18 10:47 PM, David Holmes wrote:
>>
>>> OK (I was confused with the semantics of JVM_AreNestMates).  It does 
>>> return true on the same class.   It would help if you can add the 
>>> comment describing this function in jvm.h.
>>
>> Most methods in jvm.h are not documented. The assumption seems to be 
>> that the semantics are defined as per the JDK method that calls them - 
>> in this case Reflection.areNestMates. In this case, like many 
>> Reflection methods, that wasn't documented either (oops!) so I've 
>> added some basic docs:
>>
>>  /**
>>    * Returns true if {@code currentClass} and {@code memberClass}
>>    * are nestmates - that is, if they have the same nesthost as
>>    * determined by the VM.
>>    */
>>
> 
> Thanks.
>>>>
>>>> Callers to Reflection.areNestmates (which calls JVM_AreNestMates) 
>>>> can do their own "optimizations" if they wish to pre-check if we are 
>>>> dealing with the same class or different packages - as the original 
>>>> isSameMemberPackage check does.
>>>
>>> These optimization in VerifyAccess::areNestMates can be moved to 
>>> Reflection::areNestMates so that it's clearer the difference is the 
>>> top-level enclosing class check.
>>
>> Reflection.areNestMates is a native method. Any fast-paths belong in 
>> the callers ie VerifyAccess.areNestMates, or 
>> Reflection.verifyMemberAccess - and indeed they do exist there.
>>
>> If you are concerned about confusion between VerifyAccess.areNestMates 
>> and Reflection.areNestMates I can return to using 
>> VerifyAccess.isSamePackageMember - though I find that a very poor name 
>> to begin with and keep writing it the wrong way round. 
>> (isInSamePackageMember would be more accurate.)
> 
> It's okay to leave it as is.   Two same method names doing different 
> check does cause some confusion but I think the real confusion to me is 
> that core reflection does not match the language access check in this case.
> 
>>
>> I've reverted to -source/-target and hope that will not induce an API 
>> check (though will probably produce a warning). If it does do the API 
>> check then I'll have to factor the test classes into a separate file 
>> as you say.
>>
>> Updated webrev: http://cr.openjdk.java.net/~dholmes/8196320/webrev.v2/
>>
> Looks okay to me,
> 
> Mandy


More information about the valhalla-dev mailing list