+;;; (Note that when cross-compiling, SB!XC:TYPEP is interpreted as a
+;;; test that the host Lisp object OBJECT translates to a target SBCL
+;;; type TYPE. This behavior is needed e.g. to test for the validity
+;;; of numeric subtype bounds read when cross-compiling.)
+(defun typep (object type)
+ #!+sb-doc
+ "Is OBJECT of type TYPE?"
+ ;; Actually interpreting types at runtime is done by %TYPEP. The
+ ;; cost of the extra function call here should be negligible
+ ;; compared to the cost of interpreting types. (And the compiler
+ ;; tries hard to optimize away the interpretation of types at
+ ;; runtime, and when it succeeds, we never get here anyway.)
+ (%typep object type))