Handle compiler-error in LOAD when it's not run from inside EVAL.
[sbcl.git] / src / code / target-type.lisp
index a3775fb..1f877a0 100644 (file)
@@ -35,7 +35,8 @@
          array-type
          character-set-type
          built-in-classoid
-         cons-type)
+         cons-type
+         #!+sb-simd-pack simd-pack-type)
      (values (%typep obj type) t))
     (classoid
      (if (if (csubtypep type (specifier-type 'function))
 ;;; Clear memoization of all type system operations that can be
 ;;; altered by type definition/redefinition.
 ;;;
-;;; FIXME: This should be autogenerated.
 (defun clear-type-caches ()
-  (declare (special *type-system-initialized*))
-  (when *type-system-initialized*
-    (dolist (sym '(values-specifier-type-cache-clear
-                   values-type-union-cache-clear
-                   type-union2-cache-clear
-                   values-subtypep-cache-clear
-                   csubtypep-cache-clear
-                   type-intersection2-cache-clear
-                   values-type-intersection-cache-clear
-                   type=-cache-clear))
-      (funcall (the function (symbol-function sym)))))
+  ;; FIXME: We would like to differentiate between different cache
+  ;; kinds, but at the moment all our caches pretty much are type
+  ;; caches.
+  (drop-all-hash-caches)
   (values))
 
 ;;; This is like TYPE-OF, only we return a CTYPE structure instead of
      (make-cons-type *universal-type* *universal-type*))
     (character
      (specifier-type 'character))
+    #!+sb-simd-pack
+    (simd-pack
+     (let ((type (nth (%simd-pack-tag x) *simd-pack-element-types*)))
+       (if type
+           (specifier-type `(simd-pack ,type))
+           (specifier-type 'simd-pack))))
     (t
      (classoid-of x))))
 \f