1.0.22.2: optimize output under *PRINT-PRETTY*
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 31 Oct 2008 12:43:44 +0000 (12:43 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 31 Oct 2008 12:43:44 +0000 (12:43 +0000)
 * Don't construct the pretty stream when it is not needed.

NEWS
src/code/pprint.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 8d4ed00..d08cc36 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,9 @@
 ;;;; -*- coding: utf-8; -*-
+changes in sbcl-1.0.23 relative to 1.0.22:
+  * optimization: printing with *PRINT-PRETTY* true is now more
+    efficient as long as the object being printed doesn't require
+    special handling by the pretty printer.
+
 changes in sbcl-1.0.22 relative to 1.0.21:
   * minor incompatible change: LOAD-SHARED-OBJECT no longer by default looks
     for the shared object in the current directory, but passes the native
index 5f9e6a4..89bac81 100644 (file)
@@ -1315,8 +1315,13 @@ line break."
 ;;; OUTPUT-PRETTY-OBJECT is called by OUTPUT-OBJECT when
 ;;; *PRINT-PRETTY* is true.
 (defun output-pretty-object (object stream)
-  (with-pretty-stream (stream)
-    (funcall (pprint-dispatch object) stream object)))
+  (multiple-value-bind (fun pretty) (pprint-dispatch object)
+    (if pretty
+        (with-pretty-stream (stream)
+          (funcall fun stream object))
+        ;; No point in consing up a pretty stream if we are not using pretty
+        ;; printing the object after all.
+        (output-ugly-object object stream))))
 
 (defun !pprint-cold-init ()
   (/show0 "entering !PPRINT-COLD-INIT")
index 17514c0..7992737 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.22.1"
+"1.0.22.2"