X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Froom.lisp;h=b94d9d85b51b71febcf958397b877ac8277011cc;hb=9c3a9502bc872f024c365412d991ef43fd866e4c;hp=462474bfc637044b775b539ee95e40b8e1f6e185;hpb=24ecee137a93b3f769d1aa04589a5c9b0e76ea66;p=sbcl.git diff --git a/src/code/room.lisp b/src/code/room.lisp index 462474b..b94d9d8 100644 --- a/src/code/room.lisp +++ b/src/code/room.lisp @@ -89,10 +89,9 @@ (let ((cons-info (make-room-info :name 'cons :kind :list))) ;; A cons consists of two words, both of which may be either a - ;; pointer or immediate data. Disregarding the possibility of an - ;; unbound-marker (permitted, according to the GC), this means - ;; either a fixnum, a character, a single-float on a 64-bit system, - ;; or a pointer. + ;; pointer or immediate data. According to the runtime this means + ;; either a fixnum, a character, an unbound-marker, a single-float + ;; on a 64-bit system, or a pointer. (dotimes (i (ash 1 (- n-widetag-bits n-fixnum-tag-bits))) (setf (svref *meta-room-info* (ash i n-fixnum-tag-bits)) cons-info)) @@ -112,6 +111,8 @@ (setf (svref *meta-room-info* character-widetag) cons-info) + (setf (svref *meta-room-info* unbound-marker-widetag) cons-info) + ;; Single-floats are immediate data on 64-bit systems. #!+#.(cl:if (cl:= 64 sb!vm:n-word-bits) '(and) '(or)) (setf (svref *meta-room-info* single-float-widetag) cons-info))