+(def!struct (debug-name-marker (:make-load-form-fun dump-debug-name-marker)
+ (:print-function print-debug-name-marker)))
+
+(defvar *debug-name-level* 4)
+(defvar *debug-name-length* 12)
+(defvar *debug-name-punt*)
+(defvar *debug-name-sharp*)
+(defvar *debug-name-ellipsis*)
+
+(eval-when (#-sb-xc :compile-toplevel :load-toplevel :execute)
+ (defun dump-debug-name-marker (marker &optional env)
+ (declare (ignore env))
+ (cond ((eq marker *debug-name-sharp*)
+ `(if (boundp '*debug-name-sharp*)
+ *debug-name-sharp*
+ (make-debug-name-marker)))
+ ((eq marker *debug-name-ellipsis*)
+ `(if (boundp '*debug-name-ellipsis*)
+ *debug-name-ellipsis*
+ (make-debug-name-marker)))
+ (t
+ (warn "Dumping unknown debug-name marker.")
+ '(make-debug-name-marker)))))
+
+(defun print-debug-name-marker (marker stream level)
+ (declare (ignore level))
+ (cond ((eq marker *debug-name-sharp*)
+ (write-char #\# stream))
+ ((eq marker *debug-name-ellipsis*)
+ (write-string "..." stream))
+ (t
+ (write-string "???" stream))))
+
+(setf *debug-name-sharp* (make-debug-name-marker)
+ *debug-name-ellipsis* (make-debug-name-marker))