[aarch64-port-dev ] RFR: 8224187 Refactor arraycopy_prologue to allow ZGC read barriers on arraycopy

Erik Österlund erik.osterlund at oracle.com
Mon May 20 15:53:32 UTC 2019


Hi Roman,

I don't think I would call it a band-aid for ZGC to add the src 
parameter to the prologue. That is just harmonizing the arraycopy 
interface model we already have on all platforms today, to do on AArch64 
what the other platforms have always been doing since the API was 
introduced, since before ZGC was integrated.
However, having the actual copying being performed sometimes inside of 
the public pre-barrier, which may or may not throw a checkcast 
exception, seems like a very different beast to jam into the public 
interface.
Apart from being a rather ugly abstraction, I don't feel like I can 
assess if that approach is correct or not (w.r.t. checkcast exceptions) 
without seeing the proposed shenandoah code that uses it. In your patch 
I just see passing around of values that are never used. I also don't 
know how that will play with windows that has an ABI-adapter from 
windows ABI to Sys-V used to wrap the arraycopy code. The ABI wrapper 
saves windows callee saved registers on the thread, assuming that the 
copying code itself does not nest... I don't know if it still does not 
nest with this approach, as the ABI conversion scope is set up outside 
the barrier set calls, and inside of the prebarrier in the runtime that 
calls arraycopy back into the stub code again, I think the result on 
windows is that it might overwrite the callee saved registers in a nasty 
and intermittent way that is hard to reproduce.

/Erik

On 2019-05-20 12:40, Roman Kennke wrote:
> I'd rather see Erik's proposal implemented to make the GC generate the
> whole path to begin with. Otherwise we'd band-aid for ZGC now, and later
> have to band-aid again for Shenandoah. See discussion for JDK-8223240
> and in your aarch64 on ZGC thread.
>
> Roman
>
>> Hello,
>>     On aarch64 the signature for
>> barrierSetAssembler::arraycopy_prologue needs to be changed in order
>> accept the source as well as the destination array for ZGC's barriers.
>>
>> The bug:
>>   https://bugs.openjdk.java.net/browse/JDK-8224187
>> and the patch:
>>    http://cr.openjdk.java.net/~smonteith/8224187/webrev.0/
>>
>>
>> BR,
>>     Stuart
>>



More information about the aarch64-port-dev mailing list