Class PublishPlacement

java.lang.Object
org.ek9lang.compiler.phase9.PublishPlacement
All Implemented Interfaces:
Consumer<Collection<IRConstruct>>

public final class PublishPlacement extends Object implements Consumer<Collection<IRConstruct>>
THE placement of PUBLISH (EK9_NATIVE_CYCLE_COLLECTOR_DESIGN.md ยง13.11, S2): an IR_OPTIMISATION pass after SafePointPlacement, over the ownership form, before the lowering. Over the whole program it puts a PUBLISH immediately before each instruction that makes a value shared for the life of the program (PublishedValues decides which): an application's registration store, a call that hands handlers to runtime threads, and a store into a field of a [registered] type outside its construction - the store barrier. PublishVerifier (V-P) checks the result. It rewrites no ownership: a published value is still counted, owned and dropped as before, and a garbage-collected back end emits nothing for it.