1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//! Engine dispatch types
//!
//! `OpDispatch` is the install-time pre-stamped per-OpRef dispatch
//! kind. Each `GraphSlot.op_dispatch[i]` carries one of these,
//! resolved once by `Engine::resolve_dispatch` so runtime invoke is
//! one indirect lookup with no HashMap probes on hot path.
use Rc;
use crateDispatchResult;
use crateOpError;
use crateProtocolDispatchFn;
use crateComponentRef;
use crateRuntimeResourceRef;
use crateSlotValue;
use NodeProto;
/// Stateless syscall invoke fn pointer
/// Same input/output shape as a role-trait `dispatch_atomic` call;
/// returns `DispatchResult` for uniform handling by `invoke_one`.
pub type StatelessInvokeFn = fn ;
/// Canonical key for a `FunctionProto` in `Node.model.functions[]`.
/// Matches ONNX's `(domain, name, overload)` tuple - the linker
/// dedupes on this key.
pub type FunctionKey = ;
/// Per-OpRef dispatch decision, pre-stamped at install time by
/// `Engine::resolve_dispatch`. Runtime invoke is one indirect probe
/// against `GraphSlot.op_dispatch[idx]`. Four variants:
///
/// - `Stateless` - framework syscall.
/// - `Atomic` - bound runtime's `dispatch_atomic`.
/// - `FunctionCall` - splice into another installed function's body
/// via shared `OpRef`s, with input/output rename for call-frame
/// semantics. See `docs/ENGINE.md` ยง8.4.
/// - `Unresolved` - sentinel for nodes whose dispatch couldn't be
/// resolved at install. Build fails if any survive.