X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fgeneric%2Fearly-type-vops.lisp;h=06d21b386d6b682446fa40c41b19785d70d4b78f;hb=99501797db3d77ff2a7f32071d7fab0db3fdacae;hp=4aa4fa3080c8edee742b23e48752509056b4c757;hpb=faa0ea92986f4c2b361c9378c69a540e42a70c62;p=sbcl.git diff --git a/src/compiler/generic/early-type-vops.lisp b/src/compiler/generic/early-type-vops.lisp index 4aa4fa3..06d21b3 100644 --- a/src/compiler/generic/early-type-vops.lisp +++ b/src/compiler/generic/early-type-vops.lisp @@ -1,12 +1,21 @@ -(in-package "SB!VM") +;;;; generic type testing and checking apparatus +;;;; 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") + (defparameter *immediate-types* (list unbound-marker-widetag base-char-widetag)) (defparameter *fun-header-widetags* (list funcallable-instance-header-widetag simple-fun-header-widetag - closure-fun-header-widetag closure-header-widetag)) (defun canonicalize-headers (headers) @@ -81,13 +90,9 @@ (lowtags (when (cdr lowtags) (error "can't test multiple lowtags at the same time")) - (if headers - `(%test-lowtag-and-headers - ,value ,target ,not-p ,(car lowtags) - ,function-p ',(canonicalize-headers headers) - ,@other-args) - `(%test-lowtag ,value ,target ,not-p ,(car lowtags) - ,@other-args))) + (when headers + (error "can't test non-fixnum lowtags and headers at the same time")) + `(%test-lowtag ,value ,target ,not-p ,(car lowtags) ,@other-args)) (headers `(%test-headers ,value ,target ,not-p ,function-p ',(canonicalize-headers headers)