X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fbyte-interp.lisp;h=36177ae01b6efe6a76a51c7fdab555a75003f9b6;hb=b8f63d9b4e978bec3bfc1f4fc471e5ed946781fd;hp=c6173c5ea3440ac1047260643a7c11f3b788d831;hpb=a530bbe337109d898d5b4a001fc8f1afa3b5dc39;p=sbcl.git diff --git a/src/code/byte-interp.lisp b/src/code/byte-interp.lisp index c6173c5..36177ae 100644 --- a/src/code/byte-interp.lisp +++ b/src/code/byte-interp.lisp @@ -2,9 +2,6 @@ (in-package "SB!C") -(file-comment - "$Header$") - ;;;; This software is part of the SBCL system. See the README file for ;;;; more information. ;;;; @@ -280,7 +277,7 @@ ;;; FIXME: This doesn't seem to be needed in the target Lisp, only ;;; at build-the-system time. ;;; -;;; KLUDGE: This expands into code a la +;;; KLUDGE: This expands into code like ;;; (IF (ZEROP (LOGAND BYTE 16)) ;;; (IF (ZEROP (LOGAND BYTE 8)) ;;; (IF (ZEROP (LOGAND BYTE 4)) @@ -312,10 +309,7 @@ (inline-function-info-type info))) (arg-types (second spec)) (result-type (third spec)) - (args (mapcar #'(lambda (x) - (declare (ignore x)) - (gensym)) - arg-types)) + (args (make-gensym-list (length arg-types))) (func `(the ,result-type (,(inline-function-info-interpreter-function info) @@ -326,11 +320,8 @@ arg-types args)) ,(if (and (consp result-type) (eq (car result-type) 'values)) - (let ((results - (mapcar #'(lambda (x) - (declare (ignore x)) - (gensym)) - (cdr result-type)))) + (let ((results (make-gensym-list + (length (cdr result-type))))) `(multiple-value-bind ,results ,func ,@(mapcar #'(lambda (res) `(push-eval-stack ,res)) @@ -1022,7 +1013,7 @@ ;;; Call a function with some arguments popped off of the interpreter ;;; stack, and restore the SP to the specifier value. (defun byte-apply (function num-args restore-sp) - (declare (function function) (type index num-args)) + (declare (type function function) (type index num-args)) (let ((start (- (current-stack-pointer) num-args))) (declare (type stack-pointer start)) (macrolet ((frob ()