Re: JEP 306 - always strictfp semantics
"forax" (via asm Mailing List) <[email protected]> Thu, 3 Jun 2021 17:39:13 +0200 (CEST)
| Newsgroups | gmane.comp.java.objectweb.asm |
|---|---|
| Message-ID | <[email protected]> |
This is a multi-part message in MIME format... ------------=_1622734760-12833-21 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Resurrecting that thread. Just to be sure, with respect to JEP 306 [1] (ACC_STRICT semantics always on), which propose= that the VM simply ignores ACC_STRICT, do we agree to mostly do nothing and let users of ASM decide if they want t= o generate V_17 bytecode with or without ACC_STRICT ? In that case, the only change is that the combination ACC_ABSTRACT + ACC_ST= RICT is now valid with V_17 while it was not previously valid so the CheckC= lassVisitor need to be slightly changed. regards, R=C3=A9mi [1] https://openjdk.java.net/jeps/306 ----- Mail original ----- > De: "Eric Bruneton" <[email protected]> > =C3=80: "Eugene Kuleshov" <[email protected]> > Cc: "asm" <[email protected]>, "Remi Forax" <[email protected]> > Envoy=C3=A9: Jeudi 13 Mai 2021 14:45:46 > Objet: Re: [asm] JEP 306 - always strictfp semantics > I like the idea of using a value > 65535 for ACC_STRICT_NEW_SEMANTICS. >=20 > Eric >=20 > ----- 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 >>=20 >> 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_CONSTRUCTOR) 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 work. >>=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). >>=20 >> regards, >> Eugene >>=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_STRICT 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 >> > >> 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 seems 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 list. >> > >> To unsubscribe: mailto:[email protected] >> > >> For general help: mailto:[email protected]?subject=3Dhelp >> > > > OW2 mailing lists service home page: http://www.ow2.org/wws >>=20 >>=20 >> -- >> 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=3Dhelp >> OW2 mailing lists service home page: http://www.ow2.org/wws ------------=_1622734760-12833-21 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 ------------=_1622734760-12833-21--