support funcallable-instances in ROOM/map-allocated-objects
authorChristophe Rhodes <csr21@cantab.net>
Fri, 13 Apr 2012 15:16:37 +0000 (16:16 +0100)
committerChristophe Rhodes <csr21@cantab.net>
Fri, 13 Apr 2012 16:31:12 +0000 (17:31 +0100)
NEWS
src/code/room.lisp

diff --git a/NEWS b/NEWS
index 328934f..32b39f5 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -22,6 +22,7 @@ changes relative to sbcl-1.0.56:
     returns NIL instead of signalling an obscure error.
   * bug fix: fix miscompilation of some logand forms with large constant
     arguments.  (lp#974406)
+  * bug fix: account for funcallable-instance objects properly in ROOM.
   * documentation:
     ** improved docstrings: REPLACE (lp#965592)
 
index c56cd97..e38ce5e 100644 (file)
       (make-room-info :name 'instance
                       :kind :instance))
 
+(setf (svref *meta-room-info* funcallable-instance-header-widetag)
+      (make-room-info :name 'funcallable-instance
+                      :kind :closure))
+
 ) ; EVAL-WHEN
 
 (defparameter *room-info* '#.*meta-room-info*)
                                 list-pointer-lowtag
                                 (* cons-size n-word-bytes)
                                 ok)))
-                  ((eql header-widetag closure-header-widetag)
+                  ((eq (room-info-kind info) :closure)
                    (let* ((obj (%make-lisp-obj (logior (sap-int current)
                                                        fun-pointer-lowtag)))
                           (size (round-to-dualword