X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftoplevel.lisp;h=87a47526f89c2e2072cacf7f378066c3caa65ce8;hb=13fb19c3183a0effb7c35a2d453d6c6c91726e26;hp=f9382446fc724c9e9b129ea7de586b0e8cf5c0fc;hpb=053874e1a563956dd86c5c122fbd1df37d7ceb1b;p=sbcl.git diff --git a/src/code/toplevel.lisp b/src/code/toplevel.lisp index f938244..87a4752 100644 --- a/src/code/toplevel.lisp +++ b/src/code/toplevel.lisp @@ -208,7 +208,7 @@ command-line.") (initial-offset (logand csp (1- bytes-per-scrub-unit))) (end-of-stack (- (sap-int (sb!di::descriptor-sap sb!vm:*control-stack-end*)) - sb!c:*backend-page-bytes*))) + (* 2 sb!c:*backend-page-bytes*)))) (labels ((scrub (ptr offset count) (declare (type system-area-pointer ptr) @@ -240,8 +240,9 @@ command-line.") #!+stack-grows-downward-not-upward (let* ((csp (sap-int (sb!c::control-stack-pointer-sap))) - (end-of-stack (+ (sap-int (sb!di::descriptor-sap sb!vm:*control-stack-start*)) - sb!c:*backend-page-bytes*)) + (end-of-stack (+ (sap-int + (sb!di::descriptor-sap sb!vm:*control-stack-start*)) + (* 2 sb!c:*backend-page-bytes*))) (initial-offset (logand csp (1- bytes-per-scrub-unit)))) (labels ((scrub (ptr offset count) @@ -290,13 +291,13 @@ command-line.") (defvar +++ nil #!+sb-doc "the previous value of ++") (defvar - nil #!+sb-doc "the form currently being evaluated") -(defun interactive-eval (form) +(defun interactive-eval (form &key (eval #'eval)) #!+sb-doc "Evaluate FORM, returning whatever it returns and adjusting ***, **, *, +++, ++, +, ///, //, /, and -." (setf - form) (unwind-protect - (let ((results (multiple-value-list (eval form)))) + (let ((results (multiple-value-list (funcall eval form)))) (setf /// // // / / results @@ -397,14 +398,12 @@ command-line.") t)) (defun process-script (script) - (let ((pathname (native-pathname script)) - (ok nil)) - (unwind-protect - (with-open-file (f pathname :element-type :default) - (maybe-skip-shebang-line f) - (load f :verbose nil :print nil) - (setf ok t)) - (quit :unix-status (if ok 0 1))))) + (let ((pathname (native-pathname script))) + (handling-end-of-the-world + (with-open-file (f pathname :element-type :default) + (maybe-skip-shebang-line f) + (load f :verbose nil :print nil) + (quit))))) ;; Errors while processing the command line cause the system to QUIT, ;; instead of trying to go into the Lisp debugger, because trying to