Question about -fvisibility=hidden

Paul Hohensee paul.hohensee at oracle.com
Wed Sep 1 16:18:33 PDT 2010


  I googled this and found

http://gcc.gnu.org/wiki/Visibility

which has some pretty amazing claims, but I can actually believe them 
given the
number of symbols in a typical C++ compiled object file.   Coleen 
mentioned to
me (she's just down the hall, which isn't typical of those working on 
hotspot)
that the only problem she thinks might exist with this is that hs_err 
files and core
files won't have the symbols we've come to expect.  So that would have to be
investigated.  Other than that, this looks like all upside and no downside.

Paul

On 9/1/10 6:54 PM, Coleen Phillimore wrote:
>
> We have a bug that claims on linux we can get a big performance 
> improvement with this flag.   Is anyone in the openjdk community able 
> to try this out and/or verify this claim?
>
> Thanks,
> Coleen
>
> http://bugs.sun.com/view_bug.do?bug_id=6588413
>
> "On compiling the JDK [JVM actually] code with the new gcc compiler 
> option "-fvisibility=hidden"quite some speed improvements on all 
> platforms are observed, but for it to work, SAP code which is marked 
> with "JNI_EXPORT" needs to be exported correctly by the compiler. The 
> attached patch fixes this.
>
> The attached "jni_md.h.new" file is a version of the file, how it 
> could look like.
> % more jni_md.h.diff
> --- jni_md.h    2007-07-19 15:13:07.661299000 +0200
> +++ jni_md.h.new        2007-07-19 15:12:02.826109000 +0200
> @@ -8,9 +8,16 @@
> #ifndef _JAVASOFT_JNI_MD_H_
> #define _JAVASOFT_JNI_MD_H_
>
> -#define JNIEXPORT
> -#define JNIIMPORT
> -#define JNICALL
> +#if defined(__GNUC__) && (__GNUC__ >= 4)
> +# define JNIEXPORT     __attribute__((visibility("default")))
> +# define JNIIMPORT     __attribute__((visibility("default")))
> +# define JNICALL
> +#else
> +# define JNIEXPORT
> +# define JNIIMPORT
> +# define JNICALL
> +#endif
> +
>
> typedef int jint;
> #ifdef _LP64 /* 64-bit Solaris */
>
>


More information about the hotspot-runtime-dev mailing list