Currently, only G1 uses SATB for concurrent marking. In the future, other GCs might use SATB as well. In particular, we are using SATB in Shenandoah. We try to do regular merges from upstream JDK9, and it often makes a mess because we are using code from G1 subdirectories. Also, the are several references to G1 SATB from outside G1, and it just seems cleaner to have it in gc/shared.