* optimization: slightly faster ISQRT. (lp#713343)
* bug fix: TRACE behaves better when attempting to trace undefined
functions. (lp#740717)
+ * bug fix: missed optimizations for (FUNCALL (LAMBDA ...) ...) in
+ comparison to (FUNCALL #'(LAMBDA ...) ...).
changes in sbcl-1.0.47 relative to sbcl-1.0.46:
* bug fix: fix mach port rights leaks in mach exception handling code on
`(%funcall ,(ensure-lvar-fun-form function 'function) ,@arg-names))))
(def-ir1-translator %funcall ((function &rest args) start next result)
- (let ((op (when (consp function) (car function))))
+ ;; MACROEXPAND so that (LAMBDA ...) forms arriving here don't get an
+ ;; extra cast inserted for them.
+ (let* ((function (sb!xc:macroexpand function *lexenv*))
+ (op (when (consp function) (car function))))
(cond ((eq op 'function)
(with-fun-name-leaf (leaf (second function) start)
(ir1-convert start next result `(,leaf ,@args))))
s)))
(g a)))))
+(with-test (:name :funcall-lambda-inlined)
+ (assert (not
+ (ctu:find-code-constants
+ (compile nil
+ `(lambda (x y)
+ (+ x (funcall (lambda (z) z) y))))
+ :type 'function))))
+
;;; This doesn't test LVAR-FUN-IS directly, but captures it
;;; pretty accurately anyways.
(with-test (:name :lvar-fun-is)
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.47.14"
+"1.0.47.15"