Changeset 5054


Ignore:
Timestamp:
Aug 28, 2006, 4:34:02 AM (18 years ago)
Author:
Gary Byers
Message:

New string stuff here, too.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ccl/xdump/xfasload.lisp

    r4387 r5054  
    796796(defun %xload-fasl-vreadstr (s)
    797797  (multiple-value-bind (str n new-p) (%fasl-vreadstr s)
     798    (declare (fixnum n subtype))
     799    (values (xload-save-string str n) str n new-p)))
     800
     801;;; Read a string from fasl file, save it to readonly-space.
     802;;; (assumes variable-length encoding.)
     803(defun %xload-fasl-nvreadstr (s)
     804  (multiple-value-bind (str n new-p) (%fasl-nvreadstr s)
    798805    (declare (fixnum n subtype))
    799806    (values (xload-save-string str n) str n new-p)))
     
    11481155    (%epushval s sym)))
    11491156
     1157(defun %xload-fasl-nvmake-symbol (s &optional idx)
     1158  (let* ((sym (xload-make-symbol (%xload-fasl-nvreadstr s))))
     1159    (when idx
     1160      (xload-ensure-binding-index sym))
     1161    (%epushval s sym)))
     1162
    11501163
    11511164
     
    11701183         (%epushval s symaddr))))))
    11711184
     1185(defun %xload-fasl-nvintern (s package &optional idx)
     1186  (multiple-value-bind (str len new-p) (%fasl-nvreadstr s)
     1187    (without-interrupts
     1188     (multiple-value-bind (cursym access internal external) (%find-symbol str len package)
     1189       (unless access
     1190         (unless new-p (setq str (%fasl-copystr str len)))
     1191         (setq cursym (%add-symbol str package internal external)))
     1192       ;; cursym now exists in the load-time world; make sure that it exists
     1193       ;; (and is properly "interned" in the world we're making as well)
     1194       (let* ((symaddr (xload-copy-symbol cursym)))
     1195         (when idx
     1196           (xload-ensure-binding-index symaddr))
     1197         (%epushval s symaddr))))))
     1198
    11721199
    11731200(defxloadfaslop $fasl-vintern (s)
    11741201  (%xload-fasl-vintern s *package*))
    11751202
     1203(defxloadfaslop $fasl-nvintern (s)
     1204  (%xload-fasl-nvintern s *package*))
     1205
    11761206(defxloadfaslop $fasl-vintern-special (s)
    11771207  (%xload-fasl-vintern s *package* t))
     1208
     1209(defxloadfaslop $fasl-nvintern-special (s)
     1210  (%xload-fasl-nvintern s *package* t))
    11781211
    11791212(defxloadfaslop $fasl-vpkg-intern (s)
     
    11821215    (%xload-fasl-vintern s pkg)))
    11831216
     1217(defxloadfaslop $fasl-nvpkg-intern (s)
     1218  (let* ((addr (%fasl-expr-preserve-epush  s))
     1219         (pkg (xload-addr->package addr)))
     1220    (%xload-fasl-nvintern s pkg)))
     1221
    11841222(defxloadfaslop $fasl-vpkg-intern-special (s)
    11851223  (let* ((addr (%fasl-expr-preserve-epush  s))
    11861224         (pkg (xload-addr->package addr)))
    11871225    (%xload-fasl-vintern s pkg t)))
     1226
     1227(defxloadfaslop $fasl-nvpkg-intern-special (s)
     1228  (let* ((addr (%fasl-expr-preserve-epush  s))
     1229         (pkg (xload-addr->package addr)))
     1230    (%xload-fasl-nvintern s pkg t)))
    11881231
    11891232(defun %xload-fasl-vpackage (s)
     
    11931236                    (or p (%kernel-restart $XNOPKG (if new-p str (%fasl-copystr str len)))))))))
    11941237
     1238(defun %xload-fasl-nvpackage (s)
     1239  (multiple-value-bind (str len new-p) (%fasl-nvreadstr s)
     1240    (let* ((p (%find-pkg str len)))
     1241      (%epushval s (xload-package->addr
     1242                    (or p (%kernel-restart $XNOPKG (if new-p str (%fasl-copystr str len)))))))))
     1243
    11951244
    11961245(defxloadfaslop $fasl-vpkg (s)
    11971246  (%xload-fasl-vpackage s))
     1247
     1248(defxloadfaslop $fasl-nvpkg (s)
     1249  (%xload-fasl-nvpackage s))
    11981250
    11991251(defxloadfaslop $fasl-cons (s)
Note: See TracChangeset for help on using the changeset viewer.