RFR: fix shenandoah store checks and implicit null checks on aarch64

Andrew Haley aph at redhat.com
Thu Jun 22 16:46:36 UTC 2017


On 22/06/17 17:11, Roland Westrelin wrote:
> 
>> Presumably this isn't a patchable address, so it's emitted as a simple
>> integer constant?  If it's of the correct type, we should output it as
>> mov(reg, address).  This will not change size.
> 
> It's a patch I worked on a while back so I don't have all the details
> fresh in my mind but in MacroAssembler::stop()
> 
>   mov(c_rarg0, (address)msg);
> 
> would call:
> 
>   inline void mov(Register dst, address addr)
>   {
>     mov_immediate64(dst, (u_int64_t)addr);
>   }
> 
> and MacroAssembler::mov_immediate64() is quite a bit more involved than
> a simple mov.
> 
> Anyway, I don't like my change so I welcome any other suggestion.

Ah, yes, I see.  I'd change stop() to use

   mov(c_rarg0, Address((address)msg));

which is a proper relocatable address.

-- 
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


More information about the shenandoah-dev mailing list