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