X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Flate-type-vops.lisp;h=4953792f1c952313b5b7928358031f59560d3643;hb=cd2c70c8b5d4dcc62b968f5a9bedd3c9c8698e82;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..4953792 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))