lispobj funcall0(lispobj function) { lispobj *args = NULL; return call_into_lisp(function, args, 0); }
lispobj funcall1(lispobj function, lispobj arg0) { lispobj args[1]; args[0] = arg0; return call_into_lisp(function, args, 1); }
lispobj funcall2(lispobj function, lispobj arg0, lispobj arg1) { lispobj args[2]; args[0] = arg0; args[1] = arg1; return call_into_lisp(function, args, 2); }
lispobj funcall3(lispobj function, lispobj arg0, lispobj arg1, lispobj arg2) { lispobj args[3]; args[0] = arg0; args[1] = arg1; args[2] = arg2; return call_into_lisp(function, args, 3); }
static inline lispobj safe_call_into_lisp(lispobj fun, lispobj *args, int nargs) { #ifndef LISP_FEATURE_SB_SAFEPOINT /* SIG_STOP_FOR_GC needs to be enabled before we can call lisp: * otherwise two threads racing here may deadlock: the other will * wait on the GC lock, and the other cannot stop the first * one... */ check_gc_signals_unblocked_or_lose(0); #endif return call_into_lisp(fun, args, nargs); }