From: David Vázquez Date: Thu, 6 Jun 2013 11:55:35 +0000 (+0100) Subject: FFI funcall X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=dd2867ca3b53cb2353c9f1dbf85c3ebeb9667ee2;p=jscl.git FFI funcall --- diff --git a/src/compiler.lisp b/src/compiler.lisp index a98e6b6..1d1ea55 100644 --- a/src/compiler.lisp +++ b/src/compiler.lisp @@ -1417,7 +1417,7 @@ (mapcar #'ls-compile args)) ", ") ")"))) (unless (or (symbolp function) (and (consp function) - (eq (car function) 'lambda))) + (member (car function) '(lambda oget)))) (error "Bad function designator `~S'" function)) (cond ((translate-function function) @@ -1426,8 +1426,15 @@ #+jscl (eq (symbol-package function) (find-package "COMMON-LISP")) #-jscl t) (code (ls-compile `',function) ".fvalue" arglist)) + #+jscl + ((symbolp function) + (code (ls-compile `#',function) arglist)) + ((and (consp function) (eq (car function) 'lambda)) + (code (ls-compile `#',function) arglist)) + ((and (consp function) (eq (car function) 'oget)) + (code (ls-compile function) arglist)) (t - (code (ls-compile `#',function) arglist))))) + (error "Bad function descriptor"))))) (defun ls-compile-block (sexps &optional return-last-p decls-allowed-p) (multiple-value-bind (sexps decls)