Update of /cvsroot/sbcl/sbcl/src/code
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv15036/src/code
Modified Files:
error.lisp interr.lisp
Log Message:
1.0.17.33: fix PRINT-OBJECT cache
We mustn't compute the cached cache too early, otherwise we'll
cache effective methods before the actual methods (on RESTART
and the two storage-condition classes) are defined.
Index: error.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/error.lisp,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -d -r1.32 -r1.33
--- error.lisp 2 May 2007 13:07:18 -0000 1.32
+++ error.lisp 11 Jun 2008 20:04:23 -0000 1.33
@@ -148,22 +148,35 @@
(lambda (condition stream)
(declare (ignore condition))
(format stream
- "Control stack exhausted (no more space for function call frames). This is probably due to heavily nested or infinitely recursive function calls, or a tail call that SBCL cannot or has not optimized away."))))
+ ;; no pretty-printing, because that would use a lot of stack.
+ "Control stack exhausted (no more space for function call frames).
+This is probably due to heavily nested or infinitely recursive function
+calls, or a tail call that SBCL cannot or has not optimized away.
+
+PROCEED WITH CAUTION."))))
(define-condition heap-exhausted-error (storage-condition)
()
(:report
(lambda (condition stream)
+ (declare (ignore condition))
(declare (special *heap-exhausted-error-available-bytes*
*heap-exhausted-error-requested-bytes*))
;; See comments in interr.lisp -- there is a method to this madness.
(if (and (boundp '*heap-exhausted-error-available-bytes*)
(boundp '*heap-exhausted-error-requested-bytes*))
(format stream
- "Heap exhausted: ~D bytes available, ~D requested. PROCEED WITH CAUTION!"
+ ;; no pretty-printing, because that will use a lot of heap.
+ "Heap exhausted (no more space for allocation).
+There are still ~D bytes available; the request was for ~D bytes.
+
+PROCEED WITH CAUTION."
*heap-exhausted-error-available-bytes*
*heap-exhausted-error-requested-bytes*)
- (print-unreadable-object (condition stream))))))
+ (format stream
+ "A ~S condition without bindings for heap statistics. (If
+you did not expect to see this message, please report it."
+ 'heap-exhausted-error)))))
(define-condition system-condition (condition)
((address :initarg :address :reader system-condition-address :initform nil)
Index: interr.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/src/code/interr.lisp,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -d -r1.49 -r1.50
--- interr.lisp 8 May 2008 07:14:02 -0000 1.49
+++ interr.lisp 11 Jun 2008 20:04:23 -0000 1.50
@@ -474,9 +474,10 @@
(error 'control-stack-exhausted))))
;;; KLUDGE: we keep a single HEAP-EXHAUSTED-ERROR object around, so
-;;; that we don't need to allocate it when running out of memory. Similarly
-;;; we pass the amounts in special variables as there may be multiple threads
-;;; running into trouble at the same time. The condition is created by GC-REINIT.
+;;; that we don't need to allocate it when running out of
+;;; memory. Similarly we pass the amounts in special variables as
+;;; there may be multiple threads running into trouble at the same
+;;; time. The condition is created by GC-REINIT.
(defvar *heap-exhausted-error-condition*)
(defvar *heap-exhausted-error-available-bytes*)
(defvar *heap-exhausted-error-requested-bytes*)
|