Request for review (S) 6588413: Use -fvisibility=hidden for gcc compiles
coleen.phillimore at oracle.com
Fri Jan 21 12:39:44 PST 2011
On 1/21/2011 12:47 PM, Dmitry Samersoff wrote:
> 1. Hotspot uses a mapfile to hide unused symbols -
> could we just change the mapfile?
Thanks Dmitry for this question because it prompted me to do more
searching and there were some definitions that should have JNIEXPORT on
them in the VM (AsyncGetCallTrace would have been broken!). The option
-fvisibility=hidden does more than hide the symbols as the mapfile does,
it also allows the compiler to optimize the address calculations for
internal functions it calls. I believe that is where we get our
> 2. JNICALL is empty in both parts of #ifdef.
Thanks, I fixed that.
> On 2011-01-21 19:57, Coleen Phillimore wrote:
>> Summary: Add option for gcc 4 and above, define JNIEXPORT and JNIIMPORT
>> to visibility=default, add for jio_snprintf and others since
>> -fvisibility=hidden overrides --version-script definitions.
>> Performance increases measured by Volker and Tom;
>> 5% (JBB2005) and 2% (JVM98) on Linux/IA64 and 1,5% (JBB2005) and
>> 0,5% (JVM98) on Linux/PPC64
>> on intel hardware:
>> specjvm98 15 314.61 0.00 0.33 0.006 Yes
>> javac 15 248.88 0.01 1.72 0.000 Yes
>> jack 15 294.44 0.01 1.38 0.000 Yes
>> open webrev at http://cr.openjdk.java.net/~coleenp/6588413/
>> bug link at http://bugs.sun.com/view_bug.do?bug_id=6588413
>> Tested with jmap for any serviceability impact, and tested hs_err_file
>> decoding still works.
More information about the hotspot-runtime-dev