The inconsistency was introduced in JDK-8199417: oop_store_at is open for overriding for particular GCs, oop_store_at is marked as pure virtual on some platforms, and the ModRefBS becomes abstract because of that.
Yet, AArch64 and PPC implementations do provide the default implementation:
void ModRefBarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Address dst, Register val, Register tmp1, Register tmp2) {
BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2);
}
It makes sense to keep ModRefBarrierSetAssembler abstract on all platforms, to catch missing overrides.
Yet, AArch64 and PPC implementations do provide the default implementation:
void ModRefBarrierSetAssembler::oop_store_at(MacroAssembler* masm, DecoratorSet decorators, BasicType type,
Address dst, Register val, Register tmp1, Register tmp2) {
BarrierSetAssembler::store_at(masm, decorators, type, dst, val, tmp1, tmp2);
}
It makes sense to keep ModRefBarrierSetAssembler abstract on all platforms, to catch missing overrides.
- relates to
-
JDK-8199417 Modularize interpreter GC barriers
-
- Resolved
-