Re: JEP 306 - always strictfp semantics

"Eugene Kuleshov" (via asm Mailing List) <[email protected]> Fri, 7 May 2021 08:09:24 -0400
Newsgroups gmane.comp.java.objectweb.asm
Message-ID <CADFjdoWtpNJVCek=uyfJ6AeGVfBu7h7tycwUYnbuGz32Ws3Jsg@mail.gmail.com>
This is a multi-part message in MIME format...

------------=_1620389375-6117-14
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

On Fri, May 7, 2021 at 8:01 AM <[email protected]> wrote:

> >  The bigger problem is how ASM would map the ACC_STRICT bit flag
> > value when it will be reused by VM in the future after v17.
> >  Having two constants with the same 0x800 value would be a bad idea
> > and the int type used for the flags parameters might be already at its
> > capacity.
>
> It's a solution that i've not listed,
> when we introduce ACC_STRICT_NEW_SEMANTICS, we use a value > 65535 (it's =
an int so we have a lot of empty space, we only have one bit used by ACC_CO=
NSTRUCTOR) so the ClassWriter can make the difference between ACC_STRICT an=
d ACC_STRICT_NEW_SEMANTICS and then lower ACC_STRICT_NEW_SEMANTICS to the v=
alue of ACC_STRICT (0x800).
>
> The main issue i see is that ACC_STRICT_NEW_SEMANTICS will not have the v=
alue 0x800 as the VM spec will say so if a visitor call a method from anoth=
er library that expect ACC_STRICT_NEW_SEMANTICS to be 0x800, it will not wo=
rk.

  Good point. Remapping will be required.
  Perhaps that can be mitigated by requiring both bits ACC_STRICT |
ACC_STRICT_NEW_SEMANTICS to be present (enforce in the
CheckClassVisitor).
  Maybe the ACC_STRICT_NEW_SEMANTICS constant could have more than one
bit (though that may break existing code that is using bit
operations).

  regards,
  Eugene


> > On Fri, May 7, 2021 at 6:20 AM Remi Forax <[email protected]> wrote:
> >>
> >> Hi all,
> >> the JEP 306 [1, 2] will be soon integrated into the jdk 17.
> >>
> >> This JEP proposes
> >> - to add a warning if the strictfp modifier is used in the language
> >> - to not generate ACC_STRICT in classfiles anymore if source >=3D jdk =
17
> >> (major_version >=3D 61)
> >> - to retire retire the ACC_STRICT modifier in the VM, so the VM will i=
gnore that
> >> flag.
> >>
> >> The idea is in the future to reuse the bit corresponding to ACC_STRICT=
 for
> >> another usage,
> >> so in the future, the semantics of that bit will changed so visitors w=
ill need
> >> to be updated.
> >>
> >> The question is how we reflect that in ASM,
> >> - deprecating ACC_STRICT seems brutal because if version < V_17, it's =
a valid
> >> flag.
> >> - do nothing, after all the VM will ignore this flag seems dangerous b=
ecause at
> >> some point ACC_STRICT will mean something different.
> >> - throw an exception in CheckClassVisitor if version >=3D V_17 and ACC=
_STRICT is
> >> used on method (it can not be used anywhere else), i fear that it may =
be not
> >> enough.
> >> - rejecting ACC_STRICT if version >=3D V_17 in the ClassWriter, this s=
eems too
> >> strong.
> >> - silently strip ACC_STRICT if version >=3D V_17 in the ClassWriter as=
 javac does,
> >> this seems sneaky.
> >>
> >> so here are the options, what do you thing ?
> >>
> >> R=C3=A9mi
> >>
> >> [1] https://openjdk.java.net/jeps/306
> >> [2] https://bugs.openjdk.java.net/browse/JDK-8266524
> >>
> >> --
> >> You receive this message as a subscriber of the [email protected] mailing li=
st.
> >> To unsubscribe: mailto:[email protected]
> >> For general help: mailto:[email protected]?subject=3Dhelp
> > > OW2 mailing lists service home page: http://www.ow2.org/wws

------------=_1620389375-6117-14
Content-Type: text/plain; charset="UTF-8"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit


-- 
You receive this message as a subscriber of the [email protected] mailing list.
To unsubscribe: mailto:[email protected]
For general help: mailto:[email protected]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws

------------=_1620389375-6117-14--