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

Aleksey Shipilev shade at redhat.com
Wed Feb 12 09:10:23 UTC 2020

On 2/11/20 8:09 PM, Roman Kennke wrote:
>>> 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.

Gaawh. The non-AARCH64 path still looks good, so we can push it in current form. We really need to
figure out AARCH64 thingie, please file the follow-up RFR?


More information about the hotspot-gc-dev mailing list