[aarch64-port-dev ] RFR: 8234794: AArch64: runtime/memory/ReadFromNoaccessArea.java crashes

Nick Gasson nick.gasson at arm.com
Thu Dec 12 08:31:12 UTC 2019


On 12/12/2019 04:16, Andrew Haley wrote:
> On 12/11/19 7:08 AM, Nick Gasson wrote:
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8234794
>> Webrev: http://cr.openjdk.java.net/~ngasson/8234794/webrev.01/
> 
> Thanks. A few nits:

Please see the updated webrev:

http://cr.openjdk.java.net/~ngasson/8234794/webrev.02/

> 
> This recalculates klass_decode_mode() a thousand times on only a small
> program. Be aware that C2 creates a new Assembler instance for most patterns.
> 
> _klass_decode_mode could be calculated only once. Make it static and it
> will be.

Yes. Also added an assert that Metaspace::initialized() in case we call 
it too early.

> 
> This inverted logic:
> 
> #if !(defined(AARCH64) || defined(AIX))
>    return ReservedSpace(size, alignment, large_pages, requested_addr);
> #else // AARCH64 || AIX
> 
> looks a bit cumbersome. It might be nice to do it the other way up, so
> that reserve_preferred_space is called from a static generic allocate
> method.
> 
> Rather than explicitly defined(AARCH64) || defined(AIX) you might like to
> consider a named macro
> 
> #if OS_CPU_USES_PREFERRED_SPACE
>    return reserve_preferred_space( ...
> endif
> 

OK. Metaspace::reserve_preferred_space() is now only defined if 
PREFERRED_METASPACE_ALIGNMENT is set. The generic method is 
Metaspace::reserve_space(). MetaspaceShared::reserve_shared_space() is 
now just a trivial wrapper for this so maybe it can be removed.

I put the definition in the CPU's globalDefinitions.hpp because we don't 
have one for os_cpu, and we need it for every AArch64 system anyway.

Also fixed the break/return inconsistency suggested by Jiangli.


Thanks,
Nick


More information about the ppc-aix-port-dev mailing list