Nest host validation vs NestHost attribute performed by Lookup::defineHiddenClass

Mandy Chung mandy.chung at oracle.com
Thu Sep 26 05:26:47 UTC 2019



On 9/25/19 11:26 AM, Mandy Chung wrote:
>
>
> On 9/24/19 8:41 PM, John Rose wrote:
>> On Sep 24, 2019, at 8:14 PM, Mandy Chung <mandy.chung at oracle.com> wrote:
>>> Hidden classes do not have names and they cannot participate in 
>>> NH/NM attributes as you noted (2a) in your previous reply.  Why not 
>>> disallowing defining a hidden class with NH/NM attributes as in the 
>>> current proposal [1]?
>> That’s fine too. But I think it makes the spec a little simpler to 
>> say that (a) they are erroneous and (b) they are therefore ignored, 
>> rather than adding a special check and a special failure mode, just 
>> for HCs.
>
> Yes this is a simplification.  To capture the core reflection API for 
> hidden classes:
>
> Class::getNestHost always returns this class if this class is a hidden 
> class.  This is good.
>
> Core reflection API presents the static view of what's in the 
> classfile (with some exception - Class::getNestHost).
>
> If this class is a hidden class with NM attribute, 
> Class::getNestMembers throws LinkageError as the static nest 
> membership validation on each member fails - this is consistent when 
> this method is called for an ordinary class with bad entry in NM 
> attribute.
>

I'd like to clarify this.   NH/NM attributes are ignored for a hidden 
class.   Should NM attribute be made available for return by reflection API?

When an ordinary class whose NM attribute contains bad entry, the bad 
entries are ignored by access control but the bad entries are not 
dropped and hence Class::getNestMembers throws an exception. Hidden 
classes can simply follow the same rule rather than and make NM 
attribute unavailable for return by getNestMembers?

Mandy


More information about the valhalla-dev mailing list