[Nestmates] RFR: 8191114: [Nestmates] Update access control exception handling and other features per final JVMS proposal

David Holmes david.holmes at oracle.com
Tue Jan 9 05:07:41 UTC 2018


Helps if I give the link:

http://cr.openjdk.java.net/~dholmes/8191114/webrev.v2/

David

On 9/01/2018 2:50 PM, David Holmes wrote:
> Merged with latest jdk/jdk code. The jcod files are now defined as 
> classfile version 55 - their final value. The nestmate logic is 
> currently still enabled for JDK 10+ - I will bump that to 11 once the 
> actual JDK version is bumped.
> 
> I also want to clarify that these updates relate primarily to the actual 
> nestmate implementation. There are changes proposed in the JVMS that 
> affect the behaviour in cases that need not involve nestmates. Those 
> changes are still under discussion and any necessary implementation and 
> test changes will be made once those discussions are finalized.
> 
> Also something I should have called out is the changes to the 
> SelectionResolution test InvokeInterfaceICCE. With the changes to allow 
> invokeinterface for private methods, there is one test group that no 
> longer fails as expected and has been removed. I've placed it in 
> InvokeInterfaceSuccess but it is commented out as it doesn't succeed. It 
> seems to be some subset of the tests in that "group" that need to be 
> modified but the SelectionResolution tests are not easily understood or 
> adapted in that way. I will file a follow up issue for this.
> 
> I'll let this sit for a day or so before pushing. I'm not expecting 
> active reviews and I need to move on.
> 
> Thanks,
> David
> 
> On 15/12/2017 6:56 PM, David Holmes wrote:
>> And updated in place to merge in the classfile version 54 changes - 
>> all jcod files needed updating.
>>
>> David
>>
>> On 15/12/2017 5:48 PM, David Holmes wrote:
>>> Updated webrev:
>>>
>>> http://cr.openjdk.java.net/~dholmes/8191114/webrev.v1/
>>>
>>> Only difference is classFileParser.cpp. The nestmate attributes 
>>> should only be processed in a Java 10 (for now) version classfile.
>>>
>>> Thanks,
>>> David
>>>
>>> On 13/12/2017 5:31 PM, David Holmes wrote:
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8191114
>>>> webrev: http://cr.openjdk.java.net/~dholmes/8191114/webrev/
>>>>
>>>> The final proposed changes to the JVMS have been discussed by the EG 
>>>> and it is time to bring everything into line with the proposed spec.
>>>>
>>>> The main changes are:
>>>> - Process for determining the nest-host has changed, specifically:
>>>>    - same package check is done first**
>>>>    - IncompatibleClassChangeError is thrown instead of 
>>>> IllegalAccessError
>>>> - A self-reference is permitted in the NestMembers array
>>>> - A self-reference is not permitted in the NestHost attribute
>>>> - Duplicate entries are permitted in the NestMembers array
>>>> - Invokeinterface use for private interface methods is permitted 
>>>> regardless of classfile version (so no exception saying "you should 
>>>> use invokespecial").
>>>>
>>>> ** This had a disruptive impact on the tests as using Object and 
>>>> Object[] as "bad hosts" now hit the "not in same package" error 
>>>> instead of the intended error - so these had to be replaced with a 
>>>> new class defined in the same (unnamed) package.
>>>>
>>>> All tests were updated to match the changes, and new tests added 
>>>> where needed. In particular:
>>>> - nest membership tests had to add the bad "SelfHost" case
>>>> - reflection API getNestMembers() had to allow for and test, 
>>>> self-reference and duplicate entries [the spec is being clarified 
>>>> under JDK-8193408]
>>>>
>>>> Some minor cleanups:
>>>> - src/hotspot/share/classfile/stackMapFrame.hpp
>>>>    - reverted leftover copyright year change (file is not modified 
>>>> from mainline version)
>>>> -  src/hotspot/share/classfile/verifier.cpp
>>>>    - reverted leftover layout and whitespace changes (file is not 
>>>> modified from mainline version)
>>>>
>>>> Thanks,
>>>> David


More information about the valhalla-dev mailing list