X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffinal.lisp;h=b4a920f8a3f20e45a19f4c3014dcafa41a3daef2;hb=b4831dc945c0754b3ba77881e67c8ea4d0a3d905;hp=20c2fa80fcb353fdd55a20f9f57a7f569ef31f9b;hpb=cea4896b2482b7b2b429c1631d774b4cfbc0efba;p=sbcl.git diff --git a/src/code/final.lisp b/src/code/final.lisp index 20c2fa8..b4a920f 100644 --- a/src/code/final.lisp +++ b/src/code/final.lisp @@ -9,11 +9,12 @@ ;;;; provided with absolutely no warranty. See the COPYING and CREDITS ;;;; files for more information. -(in-package "SB!EXT") +(in-package "SB!IMPL") (defvar *objects-pending-finalization* nil) (defun finalize (object function) + (declare (type function function)) #!+sb-doc "Arrange for FUNCTION to be called when there are no more references to OBJECT." @@ -34,19 +35,19 @@ (sb!sys:without-gcing (setf *objects-pending-finalization* (delete object *objects-pending-finalization* - :key #'(lambda (pair) - (values (weak-pointer-value (car pair)))))))) + :key (lambda (pair) + (values (weak-pointer-value (car pair)))))))) nil) (defun finalize-corpses () (setf *objects-pending-finalization* - (delete-if #'(lambda (pair) - (multiple-value-bind (object valid) - (weak-pointer-value (car pair)) - (declare (ignore object)) - (unless valid - (funcall (cdr pair)) - t))) + (delete-if (lambda (pair) + (multiple-value-bind (object valid) + (weak-pointer-value (car pair)) + (declare (ignore object)) + (unless valid + (funcall (the function (cdr pair))) + t))) *objects-pending-finalization*)) nil)