[aarch64-port-dev ] RFR 8233401: Shenandoah: Refactor/cleanup Shenandoah load barrier code

Zhengyu Gu zgu at redhat.com
Mon Nov 4 14:08:42 UTC 2019


Hi Andrew,

Thanks for the review.

> void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
>                                              Register dst, Address src, Register tmp1, Register tmp_thread) {
> 
> tmp1 and tmp_thread are unused? It'd be a good idea, then, to say if they are
> safe to use or not. Or maybe even better do this if you want to keep the same
> arg list:
> 
> void ShenandoahBarrierSetAssembler::load_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
>                                              Register dst, Address src, Register, Register) {
> 

This is an overrode method. What you get for tmp1 and tmp_thread, is 
really platform dependent.

On AArch64, you usually get noreg for tmp1 and tmp_thread. I can not 
tell if you can safely use tmp1 if it is valid.

I don't use tmp1 here, since I don't think it is worth the trouble, as 
we have spare scratch registers. I do use tmp1 in x86 through.

What do you suggest the comment should be?

Thanks,

-Zhengyu

> I guess it really isn't safe to use "tmp1" as a tmp, regardless of its name.
> 
> If so, better pass it as noreg/
> 


More information about the aarch64-port-dev mailing list