From: Alastair Bridgewater Date: Tue, 25 Oct 2011 22:35:03 +0000 (-0400) Subject: genesis: Export assembly slot offsets for primitive-objects without lowtags. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=ae9741f992d37df9b5b05ddf79260ae29e9ebab9;p=sbcl.git genesis: Export assembly slot offsets for primitive-objects without lowtags. * If a primitive-object has no lowtag, export its slot offsets to assembly language as if it had a lowtag of zero. * While we're here, use SYMBOL-VALUE instead of EVAL to find the numeric value of a lowtag. --- diff --git a/src/compiler/generic/genesis.lisp b/src/compiler/generic/genesis.lisp index 9dd2264..3dc5fd6 100644 --- a/src/compiler/generic/genesis.lisp +++ b/src/compiler/generic/genesis.lisp @@ -2947,14 +2947,14 @@ core and return a descriptor to it." (format t "/* These offsets are SLOT-OFFSET * N-WORD-BYTES - LOWTAG~%") (format t " * so they work directly on tagged addresses. */~2%") (let ((name (sb!vm:primitive-object-name obj)) - (lowtag (eval (sb!vm:primitive-object-lowtag obj)))) - (when lowtag - (dolist (slot (sb!vm:primitive-object-slots obj)) - (format t "#define ~A_~A_OFFSET ~D~%" - (c-symbol-name name) - (c-symbol-name (sb!vm:slot-name slot)) - (- (* (sb!vm:slot-offset slot) sb!vm:n-word-bytes) lowtag))) - (terpri))) + (lowtag (or (symbol-value (sb!vm:primitive-object-lowtag obj)) + 0))) + (dolist (slot (sb!vm:primitive-object-slots obj)) + (format t "#define ~A_~A_OFFSET ~D~%" + (c-symbol-name name) + (c-symbol-name (sb!vm:slot-name slot)) + (- (* (sb!vm:slot-offset slot) sb!vm:n-word-bytes) lowtag))) + (terpri)) (format t "#endif /* LANGUAGE_ASSEMBLY */~2%")) (defun write-structure-object (dd)