Shenandoah: SBSA::load_at() should save/restore registers when calling SATB barrier
Zhengyu Gu
zgu at redhat.com
Mon Oct 7 17:52:06 UTC 2019
Hi Roman,
As you suggested offline, uses push_IU_state()/pop_IU_state() instead.
http://cr.openjdk.java.net/~zgu/shenandoah/load_at_keepalive_fix/webrev.02/
Test:
hotspot_gc_shenandoah (fastdebug and release) with x86_64 and x86_32
JVM on Linux.
Thanks,
-Zhengyu
On 10/7/19 7:31 AM, Zhengyu Gu wrote:
>>>
>>> Webrev:
>>> http://cr.openjdk.java.net/~zgu/shenandoah/load_at_keepalive_fix/webrev.01/
>>>
>>
>> Is that the same patch as before?
>
> No. This patch pushes/pops rax and rbx in SBSA::load_at() (Line# 495 -
> 499 and 512 - 514.
>
> Thanks,
>
> -Zhengyu
>
>>
>> Roman
>>
>>
>>>>>>> This fix also fixes the intermittent is_loader_alive() assertion we
>>>>>>> have
>>>>>>> seen in nightly tests. While this assertion is relative rare on
>>>>>>> x86_64,
>>>>>>> but it is quite reproducible on x86_32 (because of it has less
>>>>>>> registers(?)). With this fix, I have yet seen once.
>>>
>>> Unfortunately, this assertion failure came back during stress runs (put
>>> tier3 tests in loop) over the weekend, sigh! But I think they are
>>> different issues and this change should stay.
>>>
>>> Thanks,
>>>
>>> -Zhengyu
>>>
>>>
>>>>>>>
>>>>>>>
>>>>>>> Webrev:
>>>>>>> http://cr.openjdk.java.net/~zgu/shenandoah/load_at_keepalive_fix/webrev.00/
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Test:
>>>>>>> hotspot_gc_shenandoah (fastdebug and release) x86_64 and
>>>>>>> x86_32 on
>>>>>>> Linux
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> -Zhengyu
>>>>>>>
>>>>>>
>>>>
>>
More information about the shenandoah-dev
mailing list