Changeset 5053
- Timestamp:
- Aug 28, 2006, 4:28:21 AM (18 years ago)
- File:
-
- 1 edited
-
trunk/ccl/level-0/nfasload.lisp (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ccl/level-0/nfasload.lisp
r5043 r5053 147 147 (values str n copy))) 148 148 149 150 (defun %fasl-read-n-string (s string start n) 151 (declare (fixnum start n)) 152 (do* ((i start (1+ i)) 153 (n n (1- n))) 154 ((<= n 0)) 155 (declare (fixnum i n)) 156 (setf (schar string i) (code-char (%fasl-read-count s))))) 157 158 (defun %fasl-nvreadstr (s) 159 (let* ((nchars (%fasl-read-count s)) 160 (copy t) 161 (n nchars) 162 (str (faslstate.faslstr s))) 163 (declare (fixnum n nbytes)) 164 (if (> n (length str)) 165 (setq str (make-string n :element-type 'base-char)) 166 (setq copy nil)) 167 (%fasl-read-n-string s str 0 nchars) 168 (values str n copy))) 169 149 170 (defun %fasl-copystr (str len) 150 171 (declare (fixnum len)) … … 185 206 (%epushval s sym)))) 186 207 208 (defun %fasl-nvmake-symbol (s &optional idx) 209 (declare (fixnum subtype)) 210 (let* ((n (%fasl-read-count s)) 211 (str (make-string n :element-type 'base-char))) 212 (declare (fixnum n)) 213 (%fasl-read-n-string s str 0 n) 214 (let* ((sym (make-symbol str))) 215 (when idx (ensure-binding-index sym)) 216 (%epushval s sym)))) 217 187 218 (defun %fasl-vintern (s package &optional binding-index) 188 219 (multiple-value-bind (str len new-p) (%fasl-vreadstr s) 220 (with-package-lock (package) 221 (multiple-value-bind (symbol access internal-offset external-offset) 222 (%find-symbol str len package) 223 (unless access 224 (unless new-p (setq str (%fasl-copystr str len))) 225 (setq symbol (%add-symbol str package internal-offset external-offset))) 226 (when binding-index 227 (ensure-binding-index symbol)) 228 (%epushval s symbol))))) 229 230 (defun %fasl-nvintern (s package &optional binding-index) 231 (multiple-value-bind (str len new-p) (%fasl-nvreadstr s) 189 232 (with-package-lock (package) 190 233 (multiple-value-bind (symbol access internal-offset external-offset) … … 242 285 (defun %fasl-vpackage (s) 243 286 (multiple-value-bind (str len new-p) (%fasl-vreadstr s) 287 (let* ((p (%find-pkg str len))) 288 (%epushval s (or p (%kernel-restart $XNOPKG (if new-p str (%fasl-copystr str len)))))))) 289 290 291 (defun %fasl-nvpackage (s) 292 (multiple-value-bind (str len new-p) (%fasl-nvreadstr s) 244 293 (let* ((p (%find-pkg str len))) 245 294 (%epushval s (or p (%kernel-restart $XNOPKG (if new-p str (%fasl-copystr str len)))))))) … … 344 393 (%fasl-read-n-bytes s str 0 n))) 345 394 395 (deffaslop $fasl-nvstr (s) 396 (let* ((n (%fasl-read-count s)) 397 (str (make-string (the fixnum n) :element-type 'base-char))) 398 (%epushval s str) 399 (%fasl-read-n-string s str 0 n))) 400 346 401 (deffaslop $fasl-word-fixnum (s) 347 402 (%epushval s (%word-to-int (%fasl-read-word s)))) … … 350 405 (%fasl-vmake-symbol s)) 351 406 407 (deffaslop $fasl-nvmksym (s) 408 (%fasl-nvmake-symbol s)) 409 352 410 (deffaslop $fasl-vmksym-special (s) 353 411 (%fasl-vmake-symbol s t)) 354 412 413 (deffaslop $fasl-nvmksym-special (s) 414 (%fasl-nvmake-symbol s t)) 415 355 416 (deffaslop $fasl-vintern (s) 356 417 (%fasl-vintern s *package*)) 357 418 419 (deffaslop $fasl-nvintern (s) 420 (%fasl-nvintern s *package*)) 421 358 422 (deffaslop $fasl-vintern-special (s) 359 423 (%fasl-vintern s *package* t)) 424 425 (deffaslop $fasl-nvintern-special (s) 426 (%fasl-nvintern s *package* t)) 427 428 360 429 361 430 … … 366 435 (%fasl-vintern s pkg))) 367 436 437 (deffaslop $fasl-nvpkg-intern (s) 438 (let* ((pkg (%fasl-expr-preserve-epush s))) 439 #+paranoia 440 (setq pkg (pkg-arg pkg)) 441 (%fasl-nvintern s pkg))) 442 368 443 (deffaslop $fasl-vpkg-intern-special (s) 369 444 (let* ((pkg (%fasl-expr-preserve-epush s))) … … 372 447 (%fasl-vintern s pkg t))) 373 448 449 (deffaslop $fasl-nvpkg-intern-special (s) 450 (let* ((pkg (%fasl-expr-preserve-epush s))) 451 #+paranoia 452 (setq pkg (pkg-arg pkg)) 453 (%fasl-nvintern s pkg t))) 454 374 455 (deffaslop $fasl-vpkg (s) 375 456 (%fasl-vpackage s)) 457 458 (deffaslop $fasl-nvpkg (s) 459 (%fasl-nvpackage s)) 376 460 377 461 (deffaslop $fasl-cons (s)
Note:
See TracChangeset
for help on using the changeset viewer.
