Hi Erik, Thanks for the review!
On 8/22/20 12:21 AM, Erik Österlund wrote:
Hi, Have you tried this with ZGC on AArch64? It has custom code for saving live registers in the load barrier slow path. I can't see any code changes there, so assuming this will just crash instead. The relevant code is in ZBarrierSetAssembler on aarch64. Maybe I missed something?
I didn't add ZGC option while running tests. I think I need to update push_fp() which is called by ZSaveLiveRegisters. But do we need to get size info (float/neon/sve) instead of saving the whole vector register? Currently, it just simply saves the whole NEON register.
And in ZBarrierSetAssembler::load_at(), before calling to runtime code, we call push_call_clobbered_registers_except(), which just saves floating point registers instead of the whole NEON vector registers. Similar behavior in x86 implementation. Is that correct (not saving vectors)?
Thanks, Ningsheng