RFR: 8301869: Regression ~14% in J2dBench-bimg_misc-* in 21-b5 only on linux-aarch64 [v2]
Jayathirth D V
jdv at openjdk.org
Tue Feb 28 06:50:05 UTC 2023
On Mon, 27 Feb 2023 23:02:15 GMT, Phil Race <prr at openjdk.org> wrote:
>> Jayathirth D V has updated the pull request incrementally with one additional commit since the last revision:
>>
>> Update comment
>
> make/modules/java.desktop/lib/Awt2dLibraries.gmk line 130:
>
>> 128: BUILD_LIBAWT_debug_mem.c_CFLAGS := -w
>> 129: # This option improves performance of FillRect/FillOval in Java2D by 15% for some gcc
>> 130: LIBAWT_CFLAGS += -fpic
>
> So .. acc. to the eval in JBS we can get rid of -fgcse-after-reload because it is implied by -O3
> And Erik says -fPIC is implied by -fpic
>
> So how is -fpic different than -fPIC in a way that helps here ?
> So far as I can tell the -fpic are using just limits the size of the global offset table that -fPIC will generate.
> Since we had an unlimited offset table before, then -fpic won't change anything.
> So what's the explanation ?
Thanks @prrace for your inputs.
I dont think -fPIC is implied by -fpic. @erikj79 please clarify.
Difference between -fpic and -fPIC:
1) With -fPIC we have unlimited storage capacity for global offset table and with -fpic on some platforms we have limitation on this size. For aarch64 it is 28k, but in case of x86 size of GOT is unlimited irrespective of -fPIC or -fpic. This is already captured.
2) Also it looks like if we use -fpic option instead of -fPIC we may generate smaller/faster code as mentioned at http://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html. Looks like in our case, 28k GOT size suffices and we are able to create smaller/faster code for libawt in case of aarch64. This inturn looks to be related to usage of -msmall-data or -mlarge-data flags. -fpic implies -msmall-data and -fPIC implies -mlarge-data while generating code for shared libraries. -msmall-data also talks about data being nearer and easily accessible compared to -mlarge-data(https://man7.org/linux/man-pages/man1/gcc.1.html)
Also i can make this change specific to aarch64 since we are seeing its effect only on aarch64.
-------------
PR: https://git.openjdk.org/jdk/pull/12761
More information about the build-dev
mailing list