Semantics of an empty PermittedSubtypes attribute for the VM

Vicente Romero vicente.romero at
Thu Apr 2 18:12:56 UTC 2020

On 4/2/20 10:19 AM, Brian Goetz wrote:
> At the language level, we won’t let you define a class with an empty set of permitted types; you should define a final class instead.
> But, having the VM treat an empty PS attribute as if it were not there seems wrong; I would think an empty PS attribute would be a class file error.

I was chatting about this with Harold and we can tweak the VM 
implementation to generate an error in this case instead of ignoring an 
empty PS attribute. Same for final classes with a PS attribute, but 
these are still open questions in the VM spec that need clarification.


>> On Apr 2, 2020, at 7:58 AM, Remi Forax <forax at> wrote:
>> Hi all,
>> With my ASM hat,
>> from the JVMS POV, javac can not generate an empty list of permitted subtypes and the implementation in Hotspot ignores the attribute PermittedSubtypes if there is no subtype listed.
>> So currently, ASM doesn't allow you to create an attribute PermittedSubtypes with an empty number of subtypes.
>> I believe this is the correct semantics, i just want to be sure that i've not overlook something.
>> regards,
>> Rémi

More information about the amber-spec-experts mailing list