X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fwrapper.lisp;h=eb567cd36ba5854f73daedceb8faffb901b1ba73;hb=9c61930488da84cccaeaaabea55d3ad4e1323fda;hp=ae181daf1c9f4bb9002c8ec2c5c21e7afd2d4f38;hpb=157e21959c8023f146d6b03206aea6daa60e7b0d;p=sbcl.git diff --git a/src/pcl/wrapper.lisp b/src/pcl/wrapper.lisp index ae181da..eb567cd 100644 --- a/src/pcl/wrapper.lisp +++ b/src/pcl/wrapper.lisp @@ -152,6 +152,9 @@ (remhash owrapper *previous-nwrappers*) (setf (gethash nwrapper *previous-nwrappers*) new-previous))) +;;; FIXME: This is not a good name: part of the constract here is that +;;; we return the valid wrapper, which is not obvious from the name +;;; (or the names of our callees.) (defun check-wrapper-validity (instance) (let* ((owrapper (wrapper-of instance)) (state (layout-invalid owrapper))) @@ -188,11 +191,11 @@ (when (invalid-wrapper-p (layout-of instance)) (check-wrapper-validity instance))) -(defun check-obsolete-instance/class-of (instance) +(defun valid-wrapper-of (instance) (let ((wrapper (wrapper-of instance))) - (when (invalid-wrapper-p wrapper) - (check-wrapper-validity instance)) - (wrapper-class* wrapper))) + (if (invalid-wrapper-p wrapper) + (check-wrapper-validity instance) + wrapper))) ;;; NIL: means nothing so far, no actual arg info has NILs in the ;;; metatype.