/** * THE EDGE TABLE. Which operand slots of an instruction are CHILD instructions. * * This is one fact about the operand layout, and it was written twice: once in * `site-labels.ts` over the 35 opcodes `emit-assembly.ts` lowers, once fused into * `inspect.ts`'s `reachableIps` traversal over all 40. The two agreed slot-for-slot * on every opcode both covered — which is the problem, not the reassurance. Adding * an opcode meant editing two switches in two files, and NOTHING failed if you * edited one. `site-labels.ts`'s own header names that failure mode, then guards * only against it happening WITHIN that file. * * The subset was never load-bearing. The five opcodes it omitted — COV, GREEDY, * REJECT, ARMGATE, WITHCTX — are exactly the five `emit-assembly.ts` has no case * for, so any program containing one throws `Unemittable` from the default arm and * the whole assembly falls back to closures. Walking into their subtrees can * therefore only affect a result that is about to be discarded. (Verified: none of * the five is so much as imported by `emit-assembly.ts`. Its one consumer of these * edges, the `fd`/`er` sink census, is computed before the lowering that throws.) * * `code` is `ArrayLike` because the two callers hold different * representations of the same stream — `TableProgram.code` is a `readonly number[]`, * `ResolvedTable.code` is an `Int32Array`. * * Returns false for an opcode this table does not know, so each caller keeps its own * answer to that: `inspect.ts` throws (a program it cannot decode is a bug it must * report), `site-labels.ts` ignores it (an unwalked site resolves to `TOP` via * `labelAt`, and the enclosing assembly is unemittable anyway). */ export declare function childSlots(code: ArrayLike, ip: number, out: number[]): boolean; //# sourceMappingURL=child-slots.d.ts.map