X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Flate-type-vops.lisp;h=b764d8f5055edbbb17a5195465e7ea43c8e9e106;hb=77869604fc3eb4417a630651e5fe40e74342ee59;hp=1d4d29afee01dbbd02202c5c9f0eb57856005393;hpb=760b572425ddd9ffeec81566999c862b3812be83;p=sbcl.git diff --git a/src/compiler/generic/late-type-vops.lisp b/src/compiler/generic/late-type-vops.lisp index 1d4d29a..b764d8f 100644 --- a/src/compiler/generic/late-type-vops.lisp +++ b/src/compiler/generic/late-type-vops.lisp @@ -1,18 +1,34 @@ +;;;; generic type testing and checking VOPs + +;;;; This software is part of the SBCL system. See the README file for +;;;; more information. +;;;; +;;;; This software is derived from the CMU CL system, which was +;;;; written at Carnegie Mellon University and released into the +;;;; public domain. The software is in the public domain and is +;;;; provided with absolutely no warranty. See the COPYING and CREDITS +;;;; files for more information. (in-package "SB!VM") - + (!define-type-vops fixnump check-fixnum fixnum object-not-fixnum-error (even-fixnum-lowtag odd-fixnum-lowtag) ;; we can save a register on the x86. - :variant simple) + :variant simple + ;; we can save a couple of instructions and a branch on the ppc. + ;; FIXME: make this be FIXNUM-MASK + :mask 3) (!define-type-vops functionp check-fun function object-not-fun-error - (fun-pointer-lowtag)) + (fun-pointer-lowtag) + :mask lowtag-mask) (!define-type-vops listp check-list list object-not-list-error - (list-pointer-lowtag)) + (list-pointer-lowtag) + :mask lowtag-mask) (!define-type-vops %instancep check-instance instance object-not-instance-error - (instance-pointer-lowtag)) + (instance-pointer-lowtag) + :mask lowtag-mask) (!define-type-vops bignump check-bignum bignum object-not-bignum-error (bignum-widetag)) @@ -71,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 @@ -198,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 @@ -237,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 @@ -258,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