From: Stas Boukarev Date: Sat, 16 Mar 2013 12:33:29 +0000 (+0400) Subject: Optimize pprinting of heavily nested lists. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=e536da6bd0f0b6db16863f5e031a05e6797fc2a9;p=sbcl.git Optimize pprinting of heavily nested lists. Declare types of PREFIX and SUFFIX slots of PRETTY-STREAM to be (simple-array character (*)), not just simple-string. --- diff --git a/src/code/pprint.lisp b/src/code/pprint.lisp index f542878..1e39693 100644 --- a/src/code/pprint.lisp +++ b/src/code/pprint.lisp @@ -75,12 +75,12 @@ ;; Buffer holding the per-line prefix active at the buffer start. ;; Indentation is included in this. The length of this is stored ;; in the logical block stack. - (prefix (make-string initial-buffer-size) :type simple-string) + (prefix (make-string initial-buffer-size) :type (simple-array character (*))) ;; Buffer holding the total remaining suffix active at the buffer start. ;; The characters are right-justified in the buffer to make it easier ;; to output the buffer. The length is stored in the logical block ;; stack. - (suffix (make-string initial-buffer-size) :type simple-string) + (suffix (make-string initial-buffer-size) :type (simple-array character (*))) ;; Queue of pending operations. When empty, HEAD=TAIL=NIL. Otherwise, ;; TAIL holds the first (oldest) cons and HEAD holds the last (newest) ;; cons. Adding things to the queue is basically (setf (cdr head) (list