The prototype of the write barrier interface is:
static inline void gc_write_barrier(struct gc_mutator *mut, struct gc_ref obj,
size_t obj_size, struct gc_edge edge,
struct gc_ref new_val) GC_ALWAYS_INLINE;
For a SATB barrier, we would shade the previous value black. However if we have multiple writers to the same field, we might miss a previous value. Maybe it is OK, we don't have this kind of write barrier yet, but it's something to think about.