X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fcross-type.lisp;h=7fc13938aab58c211f50781af91f109f64ba483e;hb=409c08485fd358c78107d91f9e3aec4d17b3fd0d;hp=8110183ac757b2f772cf983eaae8d09d67e9ce83;hpb=be9eb6c67b5f43a095c3de17bea945c309d662e4;p=sbcl.git diff --git a/src/code/cross-type.lisp b/src/code/cross-type.lisp index 8110183..7fc1393 100644 --- a/src/code/cross-type.lisp +++ b/src/code/cross-type.lisp @@ -14,9 +14,7 @@ ;;; Is X a fixnum in the target Lisp? (defun fixnump (x) (and (integerp x) - (<= sb!vm:*target-most-negative-fixnum* - x - sb!vm:*target-most-positive-fixnum*))) + (<= sb!xc:most-negative-fixnum x sb!xc:most-positive-fixnum))) ;;; (This was a useful warning when trying to get bootstrapping ;;; to work, but it's mostly irrelevant noise now that the system @@ -200,9 +198,9 @@ ;; Common Lisp. (Some array types are too, but they ;; were picked off earlier.) (target-type-is-in - '(bit character complex cons float function integer keyword - list nil null number rational real signed-byte symbol t - unsigned-byte)) + '(atom bit character complex cons float function integer keyword + list nil null number rational real signed-byte symbol t + unsigned-byte)) (values (typep host-object target-type) t)) (;; Floating point types are guaranteed to correspond, ;; too, but less exactly. @@ -213,6 +211,12 @@ (values (typep host-object target-type) t)) (t (values nil t)))) + (;; Complexes suffer the same kind of problems as arrays + (and (not (unknown-type-p (values-specifier-type target-type))) + (sb!xc:subtypep target-type 'cl:complex)) + (if (complexp host-object) + (warn-and-give-up) ; general-case complexes being way too hard + (values nil t))) ; but "obviously not a complex" being easy ;; Some types require translation between the cross-compilation ;; host Common Lisp and the target SBCL. ((target-type-is-in '(sb!xc:class))