From: Christophe R. <cr...@us...> - 2003-03-10 14:55:06
|
Update of /cvsroot/sbcl/sbcl/src/compiler/generic In directory sc8-pr-cvs1:/tmp/cvs-serv3225a/src/compiler/generic Modified Files: early-objdef.lisp interr.lisp late-type-vops.lisp primtype.lisp vm-fndb.lisp vm-type.lisp vm-typetran.lisp Log Message: 0.7.13.21: The (ARRAY NIL) has landed. ... implement a SIMPLE-ARRAY-NIL primitive type, including in garbage collection and (ROOM) logic; ... adjust implementation of array creation and reference to deal with arrays that can't contain anything; ... (HAIRY-)DATA-VECTOR-REF are can no longer be FLUSHABLE; Enjoy! Index: early-objdef.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/early-objdef.lisp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- early-objdef.lisp 20 Feb 2002 18:41:52 -0000 1.13 +++ early-objdef.lisp 10 Mar 2003 14:54:25 -0000 1.14 @@ -75,6 +75,7 @@ simple-string simple-bit-vector simple-vector + simple-array-nil simple-array-unsigned-byte-2 simple-array-unsigned-byte-4 simple-array-unsigned-byte-8 Index: interr.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/interr.lisp,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- interr.lisp 7 Mar 2002 02:02:24 -0000 1.10 +++ interr.lisp 10 Mar 2003 14:54:26 -0000 1.11 @@ -121,6 +121,8 @@ "Object is not of type (SIGNED-BYTE 32).") (object-not-unsigned-byte-32 "Object is not of type (UNSIGNED-BYTE 32).") + (object-not-simple-array-nil + "Object is not of type (SIMPLE-ARRAY NIL (*)).") (object-not-simple-array-unsigned-byte-2 "Object is not of type (SIMPLE-ARRAY (UNSIGNED-BYTE 2) (*)).") (object-not-simple-array-unsigned-byte-4 @@ -174,6 +176,8 @@ "Object is not of type BASE-CHAR.") (nil-fun-returned "A function with declared result type NIL returned.") + (nil-array-accessed + "An array with element-type NIL was accessed.") (layout-invalid "Object layout is invalid. (indicates obsolete instance)") (object-not-complex-vector Index: late-type-vops.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/late-type-vops.lisp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- late-type-vops.lisp 13 Sep 2002 16:28:41 -0000 1.2 +++ late-type-vops.lisp 10 Mar 2003 14:54:28 -0000 1.3 @@ -87,6 +87,12 @@ object-not-simple-vector-error (simple-vector-widetag)) +(!define-type-vops simple-array-nil-p + check-simple-array-nil + simple-array-nil + object-not-simple-array-nil-error + (simple-array-nil-widetag)) + (!define-type-vops simple-array-unsigned-byte-2-p check-simple-array-unsigned-byte-2 simple-array-unsigned-byte-2 @@ -214,6 +220,7 @@ (!define-type-vops vectorp check-vector nil object-not-vector-error (simple-string-widetag + simple-array-nil-widetag simple-bit-vector-widetag simple-vector-widetag simple-array-unsigned-byte-2-widetag @@ -253,6 +260,7 @@ object-not-simple-array-error (simple-array-widetag simple-string-widetag + simple-array-nil-widetag simple-bit-vector-widetag simple-vector-widetag simple-array-unsigned-byte-2-widetag @@ -274,6 +282,7 @@ (!define-type-vops arrayp check-array nil object-not-array-error (simple-array-widetag simple-string-widetag + simple-array-nil-widetag simple-bit-vector-widetag simple-vector-widetag simple-array-unsigned-byte-2-widetag Index: primtype.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/primtype.lisp,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- primtype.lisp 2 Oct 2002 15:24:17 -0000 1.8 +++ primtype.lisp 10 Mar 2003 14:54:29 -0000 1.9 @@ -100,6 +100,8 @@ ;;; primitive other-pointer array types (/show0 "primtype.lisp 96") +(!def-primitive-type simple-array-nil (descriptor-reg) + :type (simple-array nil (*))) (!def-primitive-type simple-string (descriptor-reg) :type simple-base-string) (!def-primitive-type simple-bit-vector (descriptor-reg)) @@ -160,7 +162,8 @@ *backend-t-primitive-type*)))) (defvar *simple-array-primitive-types* - '((base-char . simple-string) + '((nil . simple-array-nil) + (base-char . simple-string) (bit . simple-bit-vector) ((unsigned-byte 2) . simple-array-unsigned-byte-2) ((unsigned-byte 4) . simple-array-unsigned-byte-4) Index: vm-fndb.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/vm-fndb.lisp,v retrieving revision 1.14 retrieving revision 1.15 diff -u -d -r1.14 -r1.15 --- vm-fndb.lisp 2 Jul 2002 12:32:43 -0000 1.14 +++ vm-fndb.lisp 10 Mar 2003 14:54:29 -0000 1.15 @@ -22,7 +22,8 @@ complex-vector-p base-char-p %standard-char-p %instancep array-header-p - simple-array-p simple-array-unsigned-byte-2-p + simple-array-p simple-array-nil-p + simple-array-unsigned-byte-2-p simple-array-unsigned-byte-4-p simple-array-unsigned-byte-8-p simple-array-unsigned-byte-16-p simple-array-unsigned-byte-32-p simple-array-signed-byte-8-p simple-array-signed-byte-16-p Index: vm-type.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/vm-type.lisp,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- vm-type.lisp 21 Aug 2002 10:30:08 -0000 1.12 +++ vm-type.lisp 10 Mar 2003 14:54:29 -0000 1.13 @@ -82,7 +82,8 @@ (defvar *specialized-array-element-types*) (!cold-init-forms (setf *specialized-array-element-types* - '(bit + '(nil + bit (unsigned-byte 2) (unsigned-byte 4) (unsigned-byte 8) Index: vm-typetran.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/compiler/generic/vm-typetran.lisp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- vm-typetran.lisp 20 Oct 2000 23:30:34 -0000 1.2 +++ vm-typetran.lisp 10 Mar 2003 14:54:29 -0000 1.3 @@ -33,6 +33,7 @@ (define-type-predicate short-float-p short-float) (define-type-predicate single-float-p single-float) (define-type-predicate simple-array-p simple-array) +(define-type-predicate simple-array-nil-p (simple-array nil (*))) (define-type-predicate simple-array-unsigned-byte-2-p (simple-array (unsigned-byte 2) (*))) (define-type-predicate simple-array-unsigned-byte-4-p |