# KOS_OP_CALL_NAMES - **Style**: COUNT. Arg = N (number of positional arguments). - **Stack**: `[..., callable, pos_0, ..., pos_{N-1}, val_0, ..., val_{M-1}, names_tuple] → [..., result]`. TOS = names_tuple (tuple of M keyword names); below it the M keyword values in the same order as names; below that the N positional args; then callable. TailPtr for callable + args + kwnames; validate names tuple; kos_callable_vcall; DropNoErr. No tuple or dict allocation. - **Invariants**: names_tuple must be a tuple; stack must have 1 + N + M + 1 elements (callable + N positionals + M keyword values + names). **Example:** Call with 1 positional and 1 keyword (x=42). Pool: 0 = fn, 1 = 10, 2 = 42, 3 = ("x",). | index | opcode | arg | arg view | comment | |------:|-----------|-----|----------|---------| | 0 | CONST | 0 | 0 (fn) | stack: [..., callable] | | 1 | CONST | 1 | 1 (10) | stack: [..., callable, 10] | | 2 | CONST | 2 | 2 (42) | stack: [..., callable, 10, 42] | | 3 | CONST | 3 | 3 (names)| stack: [..., callable, 10, 42, names] | | 4 | CALL_NAMES| 1 | 1 | stack: [..., result] | | 5 | RETURN | 1 | 1 | |