Skip to content
Snippets Groups Projects
Commit dfb9f196 authored by ram's avatar ram
Browse files

Added some hacks to support the STRUCTURE-VECTOR type, so that implementing

structures as simple-vectors doesn't confuse the type system too much.
parent 9081a6d5
No related branches found
No related tags found
No related merge requests found
...@@ -21,12 +21,33 @@ ...@@ -21,12 +21,33 @@
(def-source-transform single-float-p (x) `(short-float-p ,x)) (def-source-transform single-float-p (x) `(short-float-p ,x))
(def-source-transform double-float-p (x) `(long-float-p ,x)) (def-source-transform double-float-p (x) `(long-float-p ,x))
;;; Some hacks to let us implement structures as simple-vectors without
;;; confusing type inference too much.
;;;
(def-builtin-type 'structure-vector
(make-named-type :name 'structure-vector
:supertypes '(structure-vector t)
:subclasses '(structure)))
(defknown structure-vector-p (t) boolean)
(define-type-predicate structure-vector-p structure-vector)
(def-source-transform structurep (x) (def-source-transform structurep (x)
(once-only ((n-x x)) (once-only ((n-x x))
`(and (simple-vector-p ,n-x) `(and (structure-vector-p ,n-x)
(eql (%primitive get-vector-subtype ,n-x) (eql (%primitive get-vector-subtype ,n-x)
system:%g-vector-structure-subtype)))) system:%g-vector-structure-subtype))))
(define-vop (structure-vector-p simple-vector-p)
(:translate structure-vector-p))
(set 'lisp::type-pred-alist
(adjoin (cons 'structure-vector 'simple-vector-p)
(symbol-value 'lisp::type-pred-alist)
:key #'car))
(def-source-transform compiled-function-p (x) (def-source-transform compiled-function-p (x)
`(functionp ,x)) `(functionp ,x))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment