From 6bbecc9b6b8b6237b4040b0e77bd578044b96b7b Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Fri, 13 Apr 2012 16:16:37 +0100 Subject: [PATCH] support funcallable-instances in ROOM/map-allocated-objects --- NEWS | 1 + src/code/room.lisp | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 328934f..32b39f5 100644 --- 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) diff --git a/src/code/room.lisp b/src/code/room.lisp index c56cd97..e38ce5e 100644 --- a/src/code/room.lisp +++ b/src/code/room.lisp @@ -129,6 +129,10 @@ (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*) @@ -304,7 +308,7 @@ 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 -- 1.7.10.4