Simplifying the BarrierSet hierarchy

Roman Kennke rkennke at
Tue Nov 22 11:22:32 UTC 2016

While working on the GC interface prototype, I made a sketch of the
current BarrierSet hierarchy:

x  BarrierSet
x   ModRefBarrierSet
x     CardTableModRefBS
x      G1SATBCardTableModRefBS
g       G1SATBCardTableLoggingModRefBS
p      CardTableExtension
c      CardTableModRefBSForCTRS

x - not used anywhere
g - used by G1
p - used by parallel
c - used by CMS

I've got a couple of questions:

- Is that correct and complete? Especially for CMS, is it only using
CardTableModRefBSForCTRS and is it the only user of that class? I am
asking, because I want to do the oop_store() refactoring as outlined in
the GC interface JEP, and if it's only used for CMS, I can move the
special oop_store() handling to there.

- Is there any reason against simplifying that hierarchy? In
particular, I would collapse unused classes like this:

x  BarrierSet
x   CardTableModRefBS
g    G1SATBCardTableLoggingModRefBS
p    CardTableExtension
c    CardTableModRefBSForCTRS

I.e. merge ModRef with CardTableModRef and G1SATBCardTable with

Any opinions?


More information about the hotspot-gc-dev mailing list