Hi all, I was recently asked [1] why we include -qnoeh [2] and -qnoftti [3] with the build. It looks like it's been in the project since at least jdk9 [4], but I suspect that might not be the true origin of the flags. Reading the descriptions for the flags makes me suspect that these were added to improve performance "For improved runtime performance, suppress RTTI information generation with the -qnortti setting." [2] and possibly to reduce code bloat "If your program does not use C++ structured exception handling, you can compile with -qnoeh to prevent generation of code that is not needed by your application." [3]. But these are just guesses. Any chance that anyone out there knows/remembers why these were added? Tyler [1] https://github.com/adoptium/adoptium-support/issues/824#issuecomment-1599049... [2] https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=descriptions-qrtti-q... [3] https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=descriptions-qeh-fex... [4] https://github.com/openjdk/jdk/commit/e709aa268df64b2dc000433a1d9621a2fb0940...
Hi Tyler, we had the flags -qnoeh and -qnortti already set before 2010 in our internal AIX build (some time before the AIX OpenJDK port started). Probably the features were not needed in those ancient times . I took over the flags when doing the xlc16 support changes in OpenJDK . Best regards, Matthias From: ppc-aix-port-dev <ppc-aix-port-dev-retn@openjdk.org> On Behalf Of Tyler Steele Sent: Wednesday, 21 June 2023 20:31 To: ppc-aix-port-dev@openjdk.org Subject: The History of nortti and noeh on AIX Hi all, I was recently asked [1] why we include -qnoeh [2] and -qnoftti [3] with the build. It looks like it's been in the project since at least jdk9 [4], but I suspect that might not be the true origin of the flags. Reading the descriptions for the flags makes me suspect that these were added to improve performance "For improved runtime performance, suppress RTTI information generation with the -qnortti setting." [2] and possibly to reduce code bloat "If your program does not use C++ structured exception handling, you can compile with -qnoeh to prevent generation of code that is not needed by your application." [3]. But these are just guesses. Any chance that anyone out there knows/remembers why these were added? Tyler [1] https://github.com/adoptium/adoptium-support/issues/824#issuecomment-1599049... [2] https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=descriptions-qrtti-q... [3] https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=descriptions-qeh-fex... [4] https://github.com/openjdk/jdk/commit/e709aa268df64b2dc000433a1d9621a2fb0940...
Yes, hotspot don't need it. AFAIK its disabled on all platforms. See: https://github.com/openjdk/jdk/blob/master/doc/hotspot-style.md#error-handli... https://github.com/openjdk/jdk/blob/master/doc/hotspot-style.md#rtti-runtime... C++ exception stack unwinding would probably fail in the face of our mixed, non-ABI-conform stacks. And RTTI is just not needed, why pay for it. Cheers, Thomas On Thu, Jun 22, 2023 at 11:40 AM Baesken, Matthias <matthias.baesken@sap.com> wrote:
Hi Tyler, we had the flags -qnoeh and -qnortti already set before 2010 in our internal AIX build (some time before the AIX OpenJDK port started).
Probably the features were not needed in those ancient times .
I took over the flags when doing the xlc16 support changes in OpenJDK .
Best regards, Matthias
*From:* ppc-aix-port-dev <ppc-aix-port-dev-retn@openjdk.org> *On Behalf Of *Tyler Steele *Sent:* Wednesday, 21 June 2023 20:31 *To:* ppc-aix-port-dev@openjdk.org *Subject:* The History of nortti and noeh on AIX
Hi all,
I was recently asked [1] why we include -qnoeh [2] and -qnoftti [3] with the build. It looks like it's been in the project since at least jdk9 [4], but I suspect that might not be the true origin of the flags.
Reading the descriptions for the flags makes me suspect that these were added to improve performance "For improved runtime performance, suppress RTTI information generation with the -qnortti setting." [2] and possibly to reduce code bloat "If your program does not use C++ structured exception handling, you can compile with -qnoeh to prevent generation of code that is not needed by your application." [3]. But these are just guesses. Any chance that anyone out there knows/remembers why these were added?
Tyler
[1] https://github.com/adoptium/adoptium-support/issues/824#issuecomment-1599049...
[2] https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=descriptions-qrtti-q...
[3] https://www.ibm.com/docs/en/xl-c-and-cpp-aix/16.1?topic=descriptions-qeh-fex...
[4] https://github.com/openjdk/jdk/commit/e709aa268df64b2dc000433a1d9621a2fb0940...
participants (3)
-
Baesken, Matthias
-
Thomas Stüfe
-
Tyler Steele