"Terminate the current Lisp. Things are cleaned up (with UNWIND-PROTECT
and so forth) unless RECKLESSLY-P is non-NIL. On UNIX-like systems,
UNIX-STATUS is used as the status code."
- (declare (type (signed-byte 32) unix-code))
+ (declare (type (signed-byte 32) unix-status unix-code))
;; FIXME: UNIX-CODE was deprecated in sbcl-0.6.8, after having been
;; around for less than a year. It should be safe to remove it after
;; a year.
;;; This returns a frame for the one existing in time immediately
;;; prior to the frame referenced by current-fp. This is current-fp's
;;; caller or the next frame down the control stack. If there is no
-;;; down frame, this returns nil for the bottom of the stack. Up-frame
-;;; is the up link for the resulting frame object, and it is nil when
+;;; down frame, this returns NIL for the bottom of the stack. UP-FRAME
+;;; is the up link for the resulting frame object, and it is null when
;;; we call this to get the top of the stack.
;;;
;;; The current frame contains the pointer to the temporally previous
escaped)
(if up-frame (1+ (frame-number up-frame)) 0)
escaped))))))
-
#!+x86
(defun compute-calling-frame (caller ra up-frame)
(declare (type system-area-pointer caller ra))
(output-symbol object stream)
(output-list object stream)))
(instance
+ (/show0 "in PRINT-OBJECT case")
(print-object object stream))
(function
(unless (and (funcallable-instance-p object)
;;; use until CLOS is set up (at which time it will be replaced with
;;; the real generic function implementation)
(defun print-object (instance stream)
+ (/show0 "in pre-CLOS PRINT-OBJECT placeholder")
(default-structure-print instance stream *current-level*))
\f
;;;; integer, ratio, and complex printing (i.e. everything but floats)
(def-frob %funcallable-instance-layout)
(def-frob %funcallable-instance-lexenv)
(def-frob %set-funcallable-instance-fun (fin new-val)))
+
+(defun %caller-frame-and-pc ()
+ (%caller-frame-and-pc))
(write-char #\space stream)
(pprint-newline :linear stream))))))))
(defun %default-structure-ugly-print (structure stream)
+ (/show0 "entering %DEFAULT-STRUCTURE-UGLY-PRINT")
(let* ((layout (%instance-layout structure))
(name (sb!xc:class-name (layout-class layout)))
(dd (layout-info layout)))
+ (/show0 "got LAYOUT, NAME, and DD")
(descend-into (stream)
(write-string "#S(" stream)
(prin1 name stream)
stream))))))
(defun default-structure-print (structure stream depth)
(declare (ignore depth))
+ (/show0 "entering DEFAULT-STRUCTURE-PRINT")
(cond ((funcallable-instance-p structure)
+ (/show0 "in FUNCALLABLE-INSTANCE-P case")
(print-unreadable-object (structure stream :identity t :type t)))
(*print-pretty*
+ (/show0 "in *PRINT-PRETTY* case")
(%default-structure-pretty-print structure stream))
(t
- (%default-structure-ugly-print structure-stream))))
+ (/show0 "in ugly-print case")
+ (%default-structure-ugly-print structure stream))))
(def!method print-object ((x structure-object) stream)
(default-structure-print x stream *current-level*))
dest))
(values))
-;;; If necessary, emit coercion code needed to deliver the Results to
+;;; If necessary, emit coercion code needed to deliver the RESULTS to
;;; the specified continuation. NODE and BLOCK provide context for
;;; emitting code. Although usually obtained from STANDARD-RESULT-TNs
;;; or CONTINUATION-RESULT-TNs, RESULTS my be a list of any type or
;;; stack. It returns the OLD-FP and RETURN-PC for the current
;;; function as multiple values.
(defoptimizer (sb!kernel:%caller-frame-and-pc ir2-convert) (() node block)
- (let ((env (physenv-info (node-physenv node))))
+ (let ((ir2-physenv (physenv-info (node-physenv node))))
(move-continuation-result node block
- (list (ir2-physenv-old-fp env)
- (ir2-physenv-return-pc env))
+ (list (ir2-physenv-old-fp ir2-physenv)
+ (ir2-physenv-return-pc ir2-physenv))
(node-cont node))))
\f
;;;; multiple values