Question about SATB barrier

Nilsen, Kelvin kdnilsen at amazon.com
Sat Jul 18 23:09:17 UTC 2020


I've observed that the various SATB barrier implementations have two different forms.

In one form, the address to be overwritten is supplied as an argument and the previous content held at that address is fetched and stored into a SATB buffer.  In the other form, the address to be overwritten is not supplied and the "keep-alive" value is supplied as the pre-initialized content of the pre-val register.  In this second form, the content of the pre-val register is stored into the SATB buffer.

My question is whether the second form is used with write operations for which the "compiler" is able to determine through static analysis the previous content of the value to be overwritten, or is it used only for other situations that require the logging of a keep-alive pointer value?

I have been assuming the latter, but I need to make sure I understand how these two forms are used.

Thanks.







More information about the shenandoah-dev mailing list