X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-misc.lisp;h=04b1012b8999ea4fcb6bc090be5b98e75e509125;hb=cee8ef591040db9a79cdd19297867672a9529051;hp=365bfaaa8c658f24b00805c98b483b58abc53217;hpb=040fd0ef5d0c759bc8d30952dfad2942bacb20f0;p=sbcl.git diff --git a/src/code/target-misc.lisp b/src/code/target-misc.lisp index 365bfaa..04b1012 100644 --- a/src/code/target-misc.lisp +++ b/src/code/target-misc.lisp @@ -13,54 +13,6 @@ ;;;; files for more information. (in-package "SB!IMPL") - -;;;; function names and documentation - -;;;; the ANSI interface to function names (and to other stuff too) -;;; Note: this function gets called by the compiler (as of 1.0.17.x, -;;; in MAYBE-INLINE-SYNTACTIC-CLOSURE), and so although ANSI says -;;; we're allowed to return NIL here freely, it seems plausible that -;;; small changes to the circumstances under which this function -;;; returns non-NIL might have subtle consequences on the compiler. -;;; So it might be desirable to have the compiler not rely on this -;;; function, eventually. -(defun function-lambda-expression (fun) - "Return (VALUES DEFINING-LAMBDA-EXPRESSION CLOSURE-P NAME), where - DEFINING-LAMBDA-EXPRESSION is NIL if unknown, or a suitable argument - to COMPILE otherwise, CLOSURE-P is non-NIL if the function's definition - might have been enclosed in some non-null lexical environment, and - NAME is some name (for debugging only) or NIL if there is no name." - (declare (type function fun)) - (etypecase fun - #!+sb-eval - (sb!eval:interpreted-function - (let ((name (sb!eval:interpreted-function-name fun)) - (lambda-list (sb!eval:interpreted-function-lambda-list fun)) - (declarations (sb!eval:interpreted-function-declarations fun)) - (body (sb!eval:interpreted-function-body fun))) - (values `(lambda ,lambda-list - ,@(when declarations `((declare ,@declarations))) - ,@body) - t name))) - (function - (let* ((fun (%simple-fun-self (%fun-fun fun))) - (name (%fun-name fun)) - (code (sb!di::fun-code-header fun)) - (info (sb!kernel:%code-debug-info code))) - (if info - (let ((source (sb!c::debug-info-source info))) - (cond ((and (sb!c::debug-source-form source) - (eq (sb!c::debug-source-function source) fun)) - (values (sb!c::debug-source-form source) - nil - name)) - ((legal-fun-name-p name) - (let ((exp (fun-name-inline-expansion name))) - (values exp (not exp) name))) - (t - (values nil t name)))) - (values nil t name)))))) - ;;;; Generalizing over SIMPLE-FUN, CLOSURE, and FUNCALLABLE-INSTANCEs ;;; Underlying SIMPLE-FUN @@ -136,7 +88,8 @@ ;;; various environment inquiries -(defvar *features* '#.sb-cold:*shebang-features* +(defvar *features* + '#.(sort (copy-list sb-cold:*shebang-features*) #'string<) #!+sb-doc "a list of symbols that describe features provided by the implementation")