\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
;;; can take care of maintaining Lisp and C versions.
-;;; Hence the even-fixnum lowtag just so we don't get odd(sic) numbers
-;;; added to the slot offsets
-(define-primitive-object (thread :lowtag even-fixnum-lowtag)
+(define-primitive-object (thread)
;; no_tls_value_marker is borrowed very briefly at thread startup to
;; pass the address of initial-function into new_thread_trampoline.
;; tls[0] = NO_TLS_VALUE_MARKER_WIDETAG because a the tls index slot
#!+sb-thread
(os-attr :c-type "pthread_attr_t *" :length #!+alpha 2 #!-alpha 1)
#!+sb-thread
- (state-lock :c-type "pthread_mutex_t *" :length #!+alpha 2 #!-alpha 1)
+ (state-sem :c-type "os_sem_t *" :length #!+alpha 2 #!-alpha 1)
+ #!+sb-thread
+ (state-not-running-sem :c-type "os_sem_t *" :length #!+alpha 2 #!-alpha 1)
+ #!+sb-thread
+ (state-not-running-waitcount :c-type "int" :length 1)
+ #!+sb-thread
+ (state-not-stopped-sem :c-type "os_sem_t *" :length #!+alpha 2 #!-alpha 1)
#!+sb-thread
- (state-cond :c-type "pthread_cond_t *" :length #!+alpha 2 #!-alpha 1)
+ (state-not-stopped-waitcount :c-type "int" :length 1)
(binding-stack-start :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1)
(binding-stack-pointer :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1)
(control-stack-start :c-type "lispobj *" :length #!+alpha 2 #!-alpha 1)