From: Christophe R. <cr...@us...> - 2004-09-20 13:01:32
|
Update of /cvsroot/sbcl/sbcl/src/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27792/src/compiler Modified Files: Tag: character_branch dump.lisp target-dump.lisp Log Message: 0.8.13.77.character.24: "You'll make plenty of new friends in no time at all" Make the cross-compiler dump all constant strings as BASE-STRINGs. ... cross-compiler TYPE-OF, TYPEP and friends informed of this logic. (So a host string -- of any type -- will be SB!XC:TYPEP BASE-STRING even if it's not CL:TYPEP BASE-STRING). ... character-string dumping functions can be moved into target-dump.lisp. ... genesis should never see CHARACTER-STRING-FOP. Index: dump.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/dump.lisp,v retrieving revision 1.41.4.4 retrieving revision 1.41.4.5 diff -u -d -r1.41.4.4 -r1.41.4.5 --- dump.lisp 8 Sep 2004 09:16:07 -0000 1.41.4.4 +++ dump.lisp 20 Sep 2004 13:01:23 -0000 1.41.4.5 @@ -601,6 +601,11 @@ (t (unless *cold-load-dump* (dump-fop 'fop-normal-load file)) + #+sb-xc-host + (dump-simple-base-string + (coerce (package-name pkg) 'simple-base-string) + file) + #-sb-xc-host (dump-simple-character-string (coerce (package-name pkg) '(simple-array character (*))) file) @@ -734,10 +739,17 @@ (*))) x))) (typecase simple-version + #+sb-xc-host + (simple-string + (unless (string-check-table x file) + (dump-simple-base-string simple-version file) + (string-save-object x file))) + #-sb-xc-host (simple-base-string (unless (string-check-table x file) (dump-simple-base-string simple-version file) (string-save-object x file))) + #-sb-xc-host ((simple-array character (*)) (unless (string-check-table x file) (dump-simple-character-string simple-version file) @@ -900,7 +912,7 @@ (defun dump-base-chars-of-string (s fasl-output) (declare (type base-string s) (type fasl-output fasl-output)) (dovector (c s) - (dump-byte (char-code c) fasl-output)) + (dump-byte (sb!xc:char-code c) fasl-output)) (values)) ;;; Dump a SIMPLE-BASE-STRING. @@ -910,20 +922,6 @@ (dump-base-chars-of-string s file) (values)) -;;; a helper function shared by DUMP-SIMPLE-CHARACTER-STRING and DUMP-SYMBOL -(defun dump-characters-of-string (s fasl-output) - (declare (type string s) (type fasl-output fasl-output)) - (dovector (c s) - ;; DUMP-UNSIGNED-32 soon - (dump-byte (char-code c) fasl-output)) - (values)) - -(defun dump-simple-character-string (s file) - (declare (type (simple-array character (*)) s)) - (dump-fop* (length s) fop-small-character-string fop-character-string file) - (dump-characters-of-string s file) - (values)) - ;;; If we get here, it is assumed that the symbol isn't in the table, ;;; but we are responsible for putting it there when appropriate. To ;;; avoid too much special-casing, we always push the symbol in the @@ -971,7 +969,8 @@ file) (dump-unsigned-32 pname-length file))) - (dump-characters-of-string pname file) + #+sb-xc-host (dump-base-chars-of-string pname file) + #-sb-xc-host (dump-characters-of-string pname file) (unless *cold-load-dump* (setf (gethash s (fasl-output-eq-table file)) Index: target-dump.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/target-dump.lisp,v retrieving revision 1.6 retrieving revision 1.6.56.1 diff -u -d -r1.6 -r1.6.56.1 --- target-dump.lisp 11 Oct 2001 14:05:25 -0000 1.6 +++ target-dump.lisp 20 Sep 2004 13:01:23 -0000 1.6.56.1 @@ -13,6 +13,22 @@ (in-package "SB!FASL") +;;; a helper function shared by DUMP-SIMPLE-CHARACTER-STRING and +;;; DUMP-SYMBOL (in the target compiler: the cross-compiler uses the +;;; portability knowledge and always dumps BASE-STRINGS). +(defun dump-characters-of-string (s fasl-output) + (declare (type string s) (type fasl-output fasl-output)) + (dovector (c s) + ;; DUMP-UNSIGNED-32 soon + (dump-byte (char-code c) fasl-output)) + (values)) + +(defun dump-simple-character-string (s file) + (declare (type (simple-array character (*)) s)) + (dump-fop* (length s) fop-small-character-string fop-character-string file) + (dump-characters-of-string s file) + (values)) + ;;; Dump the first N bytes of VEC out to FILE. VEC is some sort of unboxed ;;; vector-like thing that we can BLT from. (defun dump-raw-bytes (vec n fasl-output) |