\f
;;;; the primitive objects themselves
-(define-primitive-object (cons :lowtag list-pointer-lowtag
+(define-primitive-object (cons :type cons
+ :lowtag list-pointer-lowtag
:alloc-trans cons)
(car :ref-trans car :set-trans sb!c::%rplaca :init :arg
:cas-trans %compare-and-swap-car)
(define-primitive-object (symbol :lowtag other-pointer-lowtag
:widetag symbol-header-widetag
- :alloc-trans %make-symbol)
+ :alloc-trans %make-symbol
+ :type symbol)
;; Beware when changing this definition. NIL-the-symbol is defined
;; using this layout, and NIL-the-end-of-list-marker is the cons
(real :c-type "double" :length #!-x86-64 2 #!+x86-64 1)
(imag :c-type "double" :length #!-x86-64 2 #!+x86-64 1))
-#!+(and sb-lutex sb-thread)
-(define-primitive-object (lutex
- :lowtag other-pointer-lowtag
- :widetag lutex-widetag
- :alloc-trans %make-lutex)
- (gen :c-type "long" :length 1)
- (live :c-type "long" :length 1)
- (next :c-type "struct lutex *" :length 1)
- (prev :c-type "struct lutex *" :length 1)
- (mutex :c-type "pthread_mutex_t *"
- :length 1)
- (mutexattr :c-type "pthread_mutexattr_t *"
- :length 1)
- (condition-variable :c-type "pthread_cond_t *"
- :length 1))
-
;;; this isn't actually a lisp object at all, it's a c structure that lives
;;; in c-land. However, we need sight of so many parts of it from Lisp that
;;; it makes sense to define it here anyway, so that the GENESIS machinery