Class CallbackReachableOperations
- All Implemented Interfaces:
Function<Collection<IRConstruct>, Set<OperationInstr>>
Roots - every way the runtime calls generated code:
- the operators in the vtable's
Anyprefix (PREFIX_OPERATORS, asCanonicalVTableLayoutnames them): a container,sortor$of a collection calls them through the vtable; - a function's
_callwhere a value of that function is anything but the receiver of one_call- passed, stored, merged: it may reach the runtime (a stream stage,sort by, a handler); - every operation of a class (any aggregate) with a core supertype or trait (other than
Any): the runtime knows those members' slots; - every operation of a service, and of a
@Testprogram (the runtime dispatches them); - fail closed: an operation no CALL in the IR reaches, other than a program's
_mainand a_c_init(the generated entry point and static initialisation call those) - when the IR cannot say who calls it, the runtime may.
Not a root (route B, Steve 2026-11-03; design §14.3 refined): the _call of a TCPHandler. The
runtime's one route to it is the TCP connection worker (tcp_connection_worker via
ek9_tcp_guarded_handle), whose frames hold only counted references, so a collection may run inside the
handler - its loop's back edge gets a safe point, a collection per line on a long connection. EK9 code that calls a
handler from a callback-reachable operation still reaches it through the call edges below.
Propagation follows every CALL in the operations already reached: to the operations of the named type with that name (overloads together - more reached is never unsafe), and, for a virtual or trait call, to the same name on every type in the program that has the named type as a supertype or trait. Stateless: hold one.
-
Field Summary
FieldsModifier and TypeFieldDescriptionTheAnyprefix operators the runtime calls through a vtable (CanonicalVTableLayout). -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionapply(Collection<IRConstruct> constructs) callEdges(Collection<IRConstruct> constructs) THE call edges of a program as this analysis follows them: for each operation, the operations a CALL in it may run - the named type's operations of that name, and for a virtual or trait call the same name on every type below it.
-
Field Details
-
PREFIX_OPERATORS
-
-
Constructor Details
-
CallbackReachableOperations
public CallbackReachableOperations()
-
-
Method Details
-
apply
- Specified by:
applyin interfaceFunction<Collection<IRConstruct>, Set<OperationInstr>>
-
callEdges
THE call edges of a program as this analysis follows them: for each operation, the operations a CALL in it may run - the named type's operations of that name, and for a virtual or trait call the same name on every type below it.CancelPointPlacementreads their cycles (what may recur).
-