1.0.13.41: SB-SPROF:REPORT when there are no samples
authorNikodemus Siivola <nikodemus@random-state.net>
Tue, 15 Jan 2008 18:25:55 +0000 (18:25 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Tue, 15 Jan 2008 18:25:55 +0000 (18:25 +0000)
  * Used to signal an error -- report lack of samples, and return NIL
    instead. Reported by Andy Hefner on sbcl-devel 2008-01-06.

NEWS
contrib/sb-sprof/sb-sprof.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 74b5bbd..4c7081b 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,8 @@ changes in sbcl-1.0.14 relative to sbcl-1.0.13:
   * new feature: SB-EXT:*EXIT-HOOKS* are called when the process exits
     (see documentation for details.)
   * revived support for OpenBSD (contributed by Josh Elsasser)
+  * bug fix: SB-SPROF:REPORT no longer signals an error if there are
+    no samples. (reported by Andy Hefner)
   * bug fix: functions compiled using (COMPILE NIL '(LAMBDA ...))
     no longer appear as (NIL ...) frames in backtraces.
   * bug fix: ROOM no longer suffers from occasional (AVER (SAP=
index ff0f4b9..73b6a5b 100644 (file)
      Print a report from <graph> instead of the latest profiling
      results.
 
-   Value of this function is a CALL-GRAPH object representing the
-   resulting call-graph."
-  (let ((graph (or call-graph (make-call-graph most-positive-fixnum))))
-    (ecase type
-      (:flat
-       (print-flat graph :stream stream :max max :min-percent min-percent))
-      (:graph
-       (print-graph graph :stream stream :max max :min-percent min-percent))
-      ((nil)))
-    graph))
+Value of this function is a CALL-GRAPH object representing the
+resulting call-graph, or NIL if there are no samples (eg. right after
+calling RESET.)"
+  (cond (*samples*
+         (let ((graph (or call-graph (make-call-graph most-positive-fixnum))))
+           (ecase type
+             (:flat
+              (print-flat graph :stream stream :max max :min-percent min-percent))
+             (:graph
+              (print-graph graph :stream stream :max max :min-percent min-percent))
+             ((nil)))
+           graph))
+        (t
+         (format stream "~&; No samples to report.~%")
+         nil)))
 
 ;;; Interface to DISASSEMBLE
 
index a731868..84df7f1 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.13.40"
+"1.0.13.41"