Proposal: #FixClassFileFormat

forax at univ-mlv.fr forax at univ-mlv.fr
Wed Jul 6 16:24:12 UTC 2016


thanks,
Rémi

----- Mail original -----
> De: "mark reinhold" <mark.reinhold at oracle.com>
> À: forax at univ-mlv.fr
> Cc: jpms-spec-experts at openjdk.java.net
> Envoyé: Mercredi 6 Juillet 2016 16:49:17
> Objet: Re: Proposal: #FixClassFileFormat
> 
> 2016/7/1 13:20:25 -0700, Remi Forax <forax at univ-mlv.fr>:
> > ...
> > 
> > and i've forgotten a third issue, ACC_MODULE is specified as 0x8000,
> > 0x8000 is very special value because it's the only one that left which
> > is available on class, method and field.  Historically, in the first
> > specs, "module" was a modifier like public or private thus using the
> > same value for all the elements was making sense, but now ACC_MODULE
> > can only applied on class so using a value available on all the
> > elements make less sense, the value 0x8000 should be free in order to
> > be used later.  The possible value for ACC_MODULE are: 0x0008
> > (ACC_STATIC), 0x0040 (ACC_VOLATILE or ACC_BRIDGE), 0x0080 (ACC_VARARGS
> > or ACC_TRANSIENT), 0x0100 (ACC_NATIVE), 0x0800 (ACC_STRICT).  So
> > either, 0x0040 or 0x0080 are the best candidate because the other
> > values are only valid either on field or on method but not on
> > both. And now, because 0x0080 is a permutation of 0x8000 in term of
> > characters , i think 0x0040 is the best value for ACC_MODULE.
> > 
> > Changing the value of ACC_MODULE is interesting if it's done at the
> > same time as the other changes because the compiler and the VM can
> > easily detect and reject the classfile encoded with what will become
> > an old format.
> 
> I'll enter this in the issue list as:
> 
>   #ClassFileAccModule_ --- The `ACC_MODULE` constant is currently
>   specified to have the value `0x8000`.  This is the last available bit
>   remaining across all of the various `access_flags` fields of a class
>   file, and thus should be reserved for some unspecified future purpose
>   where it may be useful to use the same value in all such fields.
>   Alternative candidates for `ACC_MODULE` include `0x0040` (overlaps
>   with `ACC_VOLATILE` and `ACC_BRIDGE`) and `0x0080` (`ACC_TRANSIENT`
>   and `ACC_VARARGS`).
> 
> - Mark
> 


More information about the jpms-spec-experts mailing list