Class SignalHandlerNeighbourMarker
java.lang.Object
org.ek9lang.compiler.phase5.SignalHandlerNeighbourMarker
Who runs beside a signal handler, and what it reaches (EK9_NATIVE_CYCLE_COLLECTOR_DESIGN.md ยง13.11, S2c - option A,
Steve 2026-11-02). A program that reaches a
SignalHandler runs its own body alongside the signal dispatcher
for the rest of its life - the only case in which code that is not concurrent races a runtime thread (a server's
accept or an async statement blocks the program's thread until its threads stop; an async pipeline's stages are
concurrent entry points already). So:
SIGNAL_REACHEDon each user aggregate a signal handler can reach - the closure of what everySignalHandlerimplementation captures and of what code it can run injects; never into aMutexLock's payload, which is changed only under its lock (T11);RUNS_BESIDE_SIGNAL_HANDLERSon each callable such a program can run that is not itself concurrent code (that is checked as concurrent code already) - flow-insensitive: beforeregisteror after, the same (option A). A write there to a field of a signal-reached type, or an in-place change of a value a signal handler captured, is E08251: build the state complete when it is made, or hold it in aMutexLock.
Any reaches every type. Run after the registered-type fact, before the
data-race walk.-
Constructor Summary
ConstructorsConstructorDescriptionSignalHandlerNeighbourMarker(CallGraph callGraph, ConcreteSubtypeFinder subtypeFinder, IsThreadSpawningCall isThreadSpawningCall, ReachableInjections reachableInjections, IsMutexLockType isMutexLockType) -
Method Summary
-
Constructor Details
-
SignalHandlerNeighbourMarker
SignalHandlerNeighbourMarker(CallGraph callGraph, ConcreteSubtypeFinder subtypeFinder, IsThreadSpawningCall isThreadSpawningCall, ReachableInjections reachableInjections, IsMutexLockType isMutexLockType)
-
-
Method Details
-
mark
void mark()
-