0.pre7.14.flaky4.8:
authorWilliam Harold Newman <william.newman@airmail.net>
Thu, 23 Aug 2001 01:15:32 +0000 (01:15 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Thu, 23 Aug 2001 01:15:32 +0000 (01:15 +0000)
(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.

BUGS
src/code/host-alieneval.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index f43acb1..042ad53 100644 (file)
--- 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
 
index 4b75b31..b380b60 100644 (file)
       ,(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
       (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)
index 848cb89..953a74f 100644 (file)
@@ -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"