X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffinal.lisp;h=b4a920f8a3f20e45a19f4c3014dcafa41a3daef2;hb=b3f188843330c56bd4d17a3c930e73f573b1c71f;hp=e3685dcd568195d1f244084bb8d94189b1cfc76e;hpb=e5f24ebc38e38c986df830fd1e4035d16bea4e5c;p=sbcl.git diff --git a/src/code/final.lisp b/src/code/final.lisp index e3685dc..b4a920f 100644 --- a/src/code/final.lisp +++ b/src/code/final.lisp @@ -14,6 +14,7 @@ (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)