Re: JEP 306 - always strictfp semantics
"forax" (via asm Mailing List) <[email protected]> Fri, 7 May 2021 14:50:48 +0200 (CEST)
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format... ------------=_1620391854-6117-16 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable ----- Mail original ----- > De: "Eugene Kuleshov" <[email protected]> > =C3=80: "Remi Forax" <[email protected]> > Cc: "asm" <[email protected]> > Envoy=C3=A9: Vendredi 7 Mai 2021 14:09:24 > Objet: Re: [asm] JEP 306 - always strictfp semantics > On Fri, May 7, 2021 at 8:01 AM <[email protected]> wrote: >=20 >> > 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_CONSTR= UCTOR) >> so the ClassWriter can make the difference between ACC_STRICT and >> ACC_STRICT_NEW_SEMANTICS and then lower ACC_STRICT_NEW_SEMANTICS to the = value >> of ACC_STRICT (0x800). >> >> The main issue i see is that ACC_STRICT_NEW_SEMANTICS will not have the = value >> 0x800 as the VM spec will say so if a visitor call a method from another >> library that expect ACC_STRICT_NEW_SEMANTICS to be 0x800, it will not wo= rk. >=20 > 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). yes, having ACC_STRICT_NEW_SEMANTICS being encoded as a bit at a location g= reater than 16 and 0x800 as lower bits is a solution, the advantage is that there is no need for a remapping because ACC_STRICT_N= EW_SEMANTICS & 0xFFFF =3D=3D 0x800 and at the same time ACC_STRICT_NEW_SEMA= NTICS !=3D ACC_STRICT. We will see when we need to introduce such new flag. >=20 > regards, > Eugene R=C3=A9mi >=20 >=20 >> > 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 = ignore that >> >> flag. >> >> >> >> The idea is in the future to reuse the bit corresponding to ACC_STRIC= T for >> >> another usage, >> >> so in the future, the semantics of that bit will changed so visitors = will 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 = because at >> >> some point ACC_STRICT will mean something different. >> >> - throw an exception in CheckClassVisitor if version >=3D V_17 and AC= C_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 = seems too >> >> strong. >> >> - silently strip ACC_STRICT if version >=3D V_17 in the ClassWriter a= s 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 l= ist. >> >> To unsubscribe: mailto:[email protected] >> >> For general help: mailto:[email protected]?subject=3Dhelp > > > > OW2 mailing lists service home page: http://www.ow2.org/wws ------------=_1620391854-6117-16 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 ------------=_1620391854-6117-16--