[RFR]: 8186578: Zero fails to build on linux-sparc due to sparc-specific code

John Paul Adrian Glaubitz glaubitz at physik.fu-berlin.de
Mon Aug 28 10:09:17 UTC 2017


On 08/28/2017 11:54 AM, Andrew Haley wrote:
> It certainly looks like this is wrong.  The execution of memset with concurrent
> readers while the memory is being zeroed is UB, so we need some kind of special
> handling in the general case.

Oh, I'm not saying it's wrong at all. I was just wondering whether it's actually
required for performance reasons or whether there are other, more fundamental
problems underlying.

After talking to Oracle's toolchain guy for Linux SPARC, I now know that we cannot
glibc's memset in this case, especially not on newer SPARC CPUs.

I'm pretty sure this would work:
> 
> inline void memset_with_concurrent_readers(void* to, int value, size_t size) {
>   volatile char *dest = to;
>   for (int i = 0; i < count; i++)
>     *dest++ = value;
> }
> 
> but its performance would be awful.

My suggestion would be to move memset_with_concurrent_readers_sparc.cpp into
a generic place in the source tree where it can be used for both the server
and the zero builds on Linux SPARC.

Adrian

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz at debian.org
`. `'   Freie Universitaet Berlin - glaubitz at physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913


More information about the hotspot-dev mailing list