RFR: JDK-8238851: Shenandoah: C1: Resolve into registers of correct type

Roman Kennke rkennke at redhat.com
Tue Feb 11 19:09:58 UTC 2020


>> In ShBSC1::ensure_in_register() we are blindly creating registers of
>> type T_OBJECT, even though in some cases we actually need T_ADDRESS.
>> This blows up when we verify oop registers: when the argument is of type
>> T_OBJECT we perform extra checks that fail when the value in register is
>> not actually an object.
>>
>> Bug:
>> https://bugs.openjdk.java.net/browse/JDK-8238851
>> Webrev:
>> http://cr.openjdk.java.net/~rkennke/JDK-8238851/webrev.01/
>> Testing: the provided testcase passes now. hotspot_gc_shenandoah
> 
> This path probably needs adjustment too:
> 
>  167 #ifdef AARCH64
>  168       // AArch64 expects double-size register.
>  169       obj_reg = gen->new_pointer_register();
>  170 #else

The provided test passes on aarch64 without any additional changes.

I tried removing the block, hoping that the suggested change does
perhaps make it unnecessary, but no. It's still needed.

Further suggestions welcome. This whole thing kinda smells.

Roman



More information about the hotspot-gc-dev mailing list