0.8.15.10:
[sbcl.git] / src / compiler / dump.lisp
index 03f1d34..49a9f85 100644 (file)
 
 ;;; Dump an object of any type by dispatching to the correct
 ;;; type-specific dumping function. We pick off immediate objects,
-;;; symbols and and magic lists here. Other objects are handled by
+;;; symbols and magic lists here. Other objects are handled by
 ;;; DUMP-NON-IMMEDIATE-OBJECT.
 ;;;
 ;;; This is the function used for recursive calls to the fasl dumper.
        ((simple-array nil (*))
         (dump-unsigned-vector 0 0))
        (simple-bit-vector
-        (dump-unsigned-vector 1 (ceiling len 8)))
+        (dump-unsigned-vector 1 (ceiling len 8))) ; bits to bytes
        ;; KLUDGE: This isn't the best way of expressing that the host
        ;; may not have specializations for (unsigned-byte 2) and
        ;; (unsigned-byte 4), which means that these types are
        ;; CSR, 2002-05-07
        #-sb-xc-host
        ((simple-array (unsigned-byte 2) (*))
-        (dump-unsigned-vector 2 (ceiling len 8)))
+        (dump-unsigned-vector 2 (ceiling (ash len 1) 8))) ; bits to bytes
        #-sb-xc-host
        ((simple-array (unsigned-byte 4) (*))
-        (dump-unsigned-vector 4 (ceiling len 8)))
+        (dump-unsigned-vector 4 (ceiling (ash len 2) 8))) ; bits to bytes
        #-sb-xc-host
        ((simple-array (unsigned-byte 7) (*))
         (dump-unsigned-vector 7 len))
           (dump-object name fasl-output))
         (dump-fop 'fop-maybe-cold-load fasl-output)
         (dump-fop 'fop-assembler-fixup fasl-output))
-       (:foreign
+       ((:foreign :foreign-dataref)
         (aver (stringp name))
-        (dump-fop 'fop-foreign-fixup fasl-output)
+        (ecase flavor
+          (:foreign
+           (dump-fop 'fop-foreign-fixup fasl-output))
+          #!+linkage-table
+          (:foreign-dataref
+           (dump-fop 'fop-foreign-dataref-fixup fasl-output)))
         (let ((len (length name)))
           (aver (< len 256)) ; (limit imposed by fop definition)
           (dump-byte len fasl-output)
        (cond ((and (< num-consts #x100) (< total-length #x10000))
               (dump-fop 'fop-small-code fasl-output)
               (dump-byte num-consts fasl-output)
-              (dump-integer-as-n-bytes total-length 2 fasl-output))
+              (dump-integer-as-n-bytes total-length (/ sb!vm:n-word-bytes 2) fasl-output))
              (t
               (dump-fop 'fop-code fasl-output)
               (dump-word num-consts fasl-output)