(%funcall ,(if (csubtypep (continuation-type function)
(specifier-type 'function))
'function
- '(%coerce-callable-to-function function))
+ '(%coerce-callable-to-fun function))
,@arg-names))))
(def-ir1-translator %funcall ((function &rest args) start cont)
`(%funcall ,function ,@args)
(values nil t)))
-(deftransform %coerce-callable-to-function ((thing) (function) *
- :when :both
- :important t)
+(deftransform %coerce-callable-to-fun ((thing) (function) *
+ :when :both
+ :important t)
"optimize away possible call to FDEFINITION at runtime"
'thing)
\f
(when (or (atom def) (< (length def) 2))
(compiler-error "The ~S definition spec ~S is malformed." context def))
- (let ((name (check-fun-name (first def))))
+ (let ((name (first def)))
+ (check-fun-name name)
(names name)
(multiple-value-bind (forms decls) (sb!sys:parse-body (cddr def))
(defs `(lambda ,(second def)
(find-free-variable name))))
(etypecase leaf
(leaf
- (when (or (constant-p leaf)
- (and (global-var-p leaf)
- (eq (global-var-kind leaf) :constant)))
+ (when (constant-p leaf)
(compiler-error "~S is a constant and thus can't be set." name))
(when (and (lambda-var-p leaf)
(lambda-var-ignorep leaf))
(ir1-convert start fun-cont
(if (and (consp fun) (eq (car fun) 'function))
fun
- `(%coerce-callable-to-function ,fun)))
+ `(%coerce-callable-to-fun ,fun)))
(setf (continuation-dest fun-cont) node)
(assert-continuation-type fun-cont
(specifier-type '(or function symbol)))