X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcold-init.lisp;h=57c5c12d64e3495dc32fe1a776f7507d8876dd0b;hb=07ab1e4811ab16f95a9a5e8d767426a0787f22c0;hp=2d07ef106139947661e49af504197c4336af311a;hpb=9b1fade83db8453b75b8c7380eb12ce41b5b889c;p=sbcl.git diff --git a/src/code/cold-init.lisp b/src/code/cold-init.lisp index 2d07ef1..57c5c12 100644 --- a/src/code/cold-init.lisp +++ b/src/code/cold-init.lisp @@ -141,6 +141,7 @@ ;; forms run. (show-and-call !type-class-cold-init) (show-and-call !typedefs-cold-init) + (show-and-call !world-lock-cold-init) (show-and-call !classes-cold-init) (show-and-call !early-type-cold-init) (show-and-call !late-type-cold-init) @@ -240,10 +241,14 @@ ;; The reader and printer are initialized very late, so that they ;; can do hairy things like invoking the compiler as part of their ;; initialization. - (show-and-call !reader-cold-init) - (let ((*readtable* *standard-readtable*)) + (let ((*readtable* (make-readtable))) + (show-and-call !reader-cold-init) (show-and-call !sharpm-cold-init) - (show-and-call !backq-cold-init)) + (show-and-call !backq-cold-init) + ;; The *STANDARD-READTABLE* is assigned at last because the above + ;; functions would operate on the standard readtable otherwise--- + ;; which would result in an error. + (setf *standard-readtable* *readtable*)) (setf *readtable* (copy-readtable *standard-readtable*)) (setf sb!debug:*debug-readtable* (copy-readtable *standard-readtable*)) (sb!pretty:!pprint-cold-init) @@ -339,14 +344,20 @@ systems, UNIX-STATUS is used as the status code." #!+sb-show (defun cold-print (x) - (typecase x - (simple-string (sb!sys:%primitive print x)) - (symbol (sb!sys:%primitive print (symbol-name x))) - (list (let ((count 0)) - (sb!sys:%primitive print "list:") - (dolist (i x) - (when (>= (incf count) 4) - (sb!sys:%primitive print "...") - (return)) - (cold-print i)))) - (t (sb!sys:%primitive print (hexstr x))))) + (labels ((%cold-print (obj depthoid) + (if (> depthoid 4) + (sb!sys:%primitive print "...") + (typecase obj + (simple-string + (sb!sys:%primitive print obj)) + (symbol + (sb!sys:%primitive print (symbol-name obj))) + (cons + (sb!sys:%primitive print "cons:") + (let ((d (1+ depthoid))) + (%cold-print (car obj) d) + (%cold-print (cdr obj) d))) + (t + (sb!sys:%primitive print (hexstr x))))))) + (%cold-print x 0)) + (values)) \ No newline at end of file