diff options
Diffstat (limited to 'src/bytecode.c')
| -rw-r--r-- | src/bytecode.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/bytecode.c b/src/bytecode.c index 9ae2e820d51..4ff15d2912a 100644 --- a/src/bytecode.c +++ b/src/bytecode.c @@ -1987,6 +1987,24 @@ exec_byte_code (Lisp_Object bytestr, Lisp_Object vector, Lisp_Object maxdepth, return result; } +/* `args_template' has the same meaning as in exec_byte_code() above. */ +Lisp_Object +get_byte_code_arity (Lisp_Object args_template) +{ + if (INTEGERP (args_template)) + { + ptrdiff_t at = XINT (args_template); + bool rest = (at & 128) != 0; + int mandatory = at & 127; + ptrdiff_t nonrest = at >> 8; + + return Fcons (make_number (mandatory), + rest ? Qmany : make_number (nonrest)); + } + else + error ("Unknown args template!"); +} + void syms_of_bytecode (void) { |
