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 shenandoah-dev
mailing list