From: William Harold Newman Date: Thu, 23 Aug 2001 01:15:32 +0000 (+0000) Subject: 0.pre7.14.flaky4.8: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=f774359565ca753df2e64671613994f6ac568cfe;p=sbcl.git 0.pre7.14.flaky4.8: (This version presumably builds itself, because I didn't make any very exciting changes since the last version that built itself; but I haven't actually tested.) We no longer need the distinction between PARSE-ALIEN-TYPE and %PARSE-ALIEN-TYPE, and it obscured the couldn't-byte-compile-FIND-ESCAPE-FRAME bug, so I eliminated it. I didn't fix the couldn't-byte-compile-FIND-ESCAPED-FRAME bug, but I find a much simpler test case which exercises the underlying bug, now recorded in BUGS as 119. --- diff --git a/BUGS b/BUGS index f43acb1..042ad53 100644 --- a/BUGS +++ b/BUGS @@ -1112,6 +1112,22 @@ Error in function C::GET-LAMBDA-TO-COMPILE: Raymond Toy comments that this is tricky on the X86 since its FPU uses 80-bit precision internally. +119: + a bug in the byte compiler and/or interpreter: Compile + (IN-PACKAGE :CL-USER) + (DECLAIM (OPTIMIZE (SPEED 0) (SAFETY 1) (DEBUG 1))) + (DEFUN BAR (&REST DIMS) + (IF (EVERY #'INTEGERP DIMS) + 1 + 2)) + then execute (BAR '(1 2 3 4)). In sbcl-0.pre7.14.flaky4.8 + this gives a TYPE-ERROR, + The value #:UNINITIALIZED-EVAL-STACK-ELEMENT is not + of type (MOD 536870911). + The same error will probably occur in earlier versions as well, + although the name of the uninitialized-element placeholder will + be shorter. + KNOWN BUGS RELATED TO THE IR1 INTERPRETER diff --git a/src/code/host-alieneval.lisp b/src/code/host-alieneval.lisp index 4b75b31..b380b60 100644 --- a/src/code/host-alieneval.lisp +++ b/src/code/host-alieneval.lisp @@ -163,24 +163,16 @@ ,(let ((*new-auxiliary-types* nil)) ,@body))) -;;; FIXME: Now that *NEW-AUXILIARY-TYPES* is born initialized to NIL, -;;; we no longer need to make a distinction between this and -;;; %PARSE-ALIEN-TYPE. +;;; Parse TYPE as an alien type specifier and return the resultant +;;; ALIEN-TYPE structure. (defun parse-alien-type (type env) (declare (type (or sb!kernel:lexenv null) env)) - #!+sb-doc - "Parse the list structure TYPE as an alien type specifier and return - the resultant ALIEN-TYPE structure." - (%parse-alien-type type env)) - -(defun %parse-alien-type (type env) - (declare (type (or sb!kernel:lexenv null) env)) (if (consp type) (let ((translator (info :alien-type :translator (car type)))) (unless translator (error "unknown alien type: ~S" type)) (funcall translator type env)) - (case (info :alien-type :kind type) + (ecase (info :alien-type :kind type) (:primitive (let ((translator (info :alien-type :translator type))) (unless translator @@ -863,15 +855,15 @@ (when loser (error "A dimension is not a non-negative fixnum: ~S" loser)))) - (let ((type (parse-alien-type ele-type env))) + (let ((parsed-ele-type (parse-alien-type ele-type env))) (make-alien-array-type - :element-type type + :element-type parsed-ele-type :dimensions dims - :alignment (alien-type-alignment type) - :bits (if (and (alien-type-bits type) + :alignment (alien-type-alignment parsed-ele-type) + :bits (if (and (alien-type-bits parsed-ele-type) (every #'integerp dims)) - (* (align-offset (alien-type-bits type) - (alien-type-alignment type)) + (* (align-offset (alien-type-bits parsed-ele-type) + (alien-type-alignment parsed-ele-type)) (reduce #'* dims)))))) (def-alien-type-method (array :unparse) (type) diff --git a/version.lisp-expr b/version.lisp-expr index 848cb89..953a74f 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -16,4 +16,4 @@ ;;; four numeric fields, is used for versions which aren't released ;;; but correspond only to CVS tags or snapshots. -"0.pre7.14.flaky4.7" +"0.pre7.14.flaky4.8"