room: Fix reconstituting CONS cells with unbound-marker in the CAR.
authorAlastair Bridgewater <alastair.bridgewater@gmail.com>
Mon, 20 May 2013 19:43:19 +0000 (15:43 -0400)
committerAlastair Bridgewater <nyef@kana.lisphacker.com>
Mon, 20 May 2013 19:51:22 +0000 (15:51 -0400)
commit09c78105eabc6bf2b339f421d4ed1df4678003db
tree63ad5f5121c2110c06f4fb699fa8618f1032cc0b
parentc6aa07913db78733634b49d305f41bb8ae4f97e2
room: Fix reconstituting CONS cells with unbound-marker in the CAR.

  * When I originally rewrote ROOM in terms of RECONSTITUTE-OBJECT,
I looked at what constitutes a valid CONS according to the runtime.
I noticed that one of the immediate types was an unbound marker
and said to myself "nobody's going to put one of those in a list".
This turned out to be a mistake.

  * x86 systems (and plausibly not any others) put unbound-markers
in lists when loading FASLs.  I have no real idea how or why, but
they do.  This would lead to an error, "Unrecognized widetag #x4A
in reconstitute-object".

  * Fix, by recording unbound-marker-widetag as being valid as the
first word of a CONS cell.

  * Issue reported by "scymtym" on #sbcl.
src/code/room.lisp