Class PublishedValues

java.lang.Object
org.ek9lang.compiler.phase9.PublishedValues

public final class PublishedValues extends Object
THE rule of which values an instruction publishes (EK9_NATIVE_CYCLE_COLLECTOR_DESIGN.md ยง13.11, S2 and S2b) - what PublishPlacement places and PublishVerifier (V-P) demands exactly:
  • a STATIC_FIELD_ASSIGN into _Application - an application's _prepare storing a registration runtime threads can reach, a [registered] type (REGISTRY; S2c - one only the program's own thread uses stays mortal); any other static store - an enumeration's values, a cycle-guard owner, all in a _c_init (CONSTANT);
  • a call that hands values to runtime threads (HandsValuesToRuntimeThreads, HANDLER);
  • the store barrier (STORE, naming the holder the value goes into): a FIELD_ASSIGN into a field declared by a type a published value may reach, or a SLOT_ASSIGN this.<property> in an operation of a [registered] construct - except into this while it is being constructed (a constructor, _i_init, _c_init: E08250 keeps this from escaping, so nothing published holds it yet); and an argument a call may KEEP in its receiver or in another argument (KeptArgumentHolders, from the callee's RETAINS) when that holder's type is one a published value may reach - items += line on a registered component's List (review 2026-11-02, M2) - as well as the operand of a :=:, :~: or :^: into such a receiver, which shares the operand's contents.
"A type a published value may reach" is the [registered] fact by name, failing closed: a type the program does not know to be unreached is reached. A store barrier is conditional on its holder at run time (N2), so an over-approximation here costs a compare, never a leak.
  • Field Details

    • APPLICATION

      static final String APPLICATION
      The owner of every registration static an application's _prepare fills.
      See Also:
  • Constructor Details

    • PublishedValues

      public PublishedValues(Predicate<String> mayBeRegistered, Function<CallInstr, Optional<ScopedSymbol>> calleeOf)
      Parameters:
      mayBeRegistered - true for a type a published value may reach, by fully qualified name - fail closed.
      calleeOf - the symbol a call runs, when its names lead to one (CalleeOfCall).
  • Method Details