From: William Harold Newman Date: Tue, 11 Jun 2002 18:57:44 +0000 (+0000) Subject: 0.7.4.26: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=1a7d93adc5e5fa3c1bfe09ebbe32f54db6c8abcc;p=sbcl.git 0.7.4.26: new BUGS entry --- diff --git a/BUGS b/BUGS index 9ec3cff..c59cea6 100644 --- a/BUGS +++ b/BUGS @@ -1291,6 +1291,16 @@ WORKAROUND: 177: (fixed in sbcl-0.7.4.24) +178: "AVER failure compiling confused THEs in FUNCALL" + In sbcl-0.7.4.24, compiling + (defun bug178 (x) + (funcall (the function (the standard-object x)))) + gives + failed AVER: + "(AND (EQ (IR2-CONTINUATION-PRIMITIVE-TYPE 2CONT) FUNCTION-PTYPE) (EQ CHECK T))" + This variant compiles OK, though: + (defun bug178alternative (x) + (funcall (the nil x))) DEFUNCT CATEGORIES OF BUGS IR1-#: diff --git a/src/compiler/ir2tran.lisp b/src/compiler/ir2tran.lisp index 1c3ed43..d722ba5 100644 --- a/src/compiler/ir2tran.lisp +++ b/src/compiler/ir2tran.lisp @@ -831,12 +831,14 @@ ;;;; full call -;;; Given a function continuation FUN, return as values a TN holding -;;; the thing that we call and true if the thing is named (false if it -;;; is a function). There are two interesting non-named cases: -;;; -- Known to be a function, no check needed: return the -;;; continuation loc. -;;; -- Not known what it is. +;;; Given a function continuation FUN, return (VALUES TN-TO-CALL +;;; NAMED-P), where TN-TO-CALL is a TN holding the thing that we call +;;; NAMED-P is true if the thing is named (false if it is a function). +;;; +;;; There are two interesting non-named cases: +;;; -- We know it's a function. No check needed: return the +;;; continuation LOC. +;;; -- We don't know what it is. (defun fun-continuation-tn (node block cont) (declare (type continuation cont)) (let ((2cont (continuation-info cont))) @@ -862,7 +864,7 @@ (specifier-type 'function)) (values temp nil)))))))) -;;; Set up the args to Node in the current frame, and return a tn-ref +;;; Set up the args to NODE in the current frame, and return a TN-REF ;;; list for the passing locations. (defun move-tail-full-call-args (node block) (declare (type combination node) (type ir2-block block)) diff --git a/src/pcl/boot.lisp b/src/pcl/boot.lisp index 65433a1..34963f6 100644 --- a/src/pcl/boot.lisp +++ b/src/pcl/boot.lisp @@ -702,10 +702,10 @@ bootstrapping. rest-arg &rest lmf-options) &body body) - `(bind-fast-lexical-method-macros (,args ,rest-arg ,next-method-call) - (bind-lexical-method-functions (,@lmf-options) - (bind-args (,(nthcdr (length args) lambda-list) ,rest-arg) - ,@body)))) + `(bind-fast-lexical-method-macros (,args ,rest-arg ,next-method-call) + (bind-lexical-method-functions (,@lmf-options) + (bind-args (,(nthcdr (length args) lambda-list) ,rest-arg) + ,@body)))) (defmacro bind-simple-lexical-method-macros ((method-args next-methods) &body body) diff --git a/version.lisp-expr b/version.lisp-expr index f94e9af..12c9337 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; for internal versions, especially for internal versions off the ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.4.25" +"0.7.4.26"