0.8.13.32:
[sbcl.git] / src / compiler / generic / objdef.lisp
index 57a4831..0659a28 100644 (file)
 \f
 ;;;; symbols
 
-#!+x86
-(defknown symbol-hash (symbol) (integer 0 #.sb!xc:most-positive-fixnum)
-  (flushable movable))
-
 (define-primitive-object (symbol :lowtag other-pointer-lowtag
                                 :widetag symbol-header-widetag
-                                #!-x86 :alloc-trans #!-x86 make-symbol)
+                                :alloc-trans make-symbol)
 
   ;; Beware when changing this definition.  NIL-the-symbol is defined
   ;; using this layout, and NIL-the-end-of-list-marker is the cons 
   ;; (conses have no header).  Careful selection of lowtags ensures
   ;; that the same pointer can be used for both purposes:
   ;; OTHER-POINTER-LOWTAG is 7, LIST-POINTER-LOWTAG is 3, so if you
-  ;; subtract 3 from (sb-kernel:get-lisp-obj-address 'NIL) you get the
+  ;; subtract 3 from (SB-KERNEL:GET-LISP-OBJ-ADDRESS 'NIL) you get the
   ;; first data slot, and if you subtract 7 you get a symbol header.
 
-  (value :init :unbound)               ;also the CAR of NIL-as-end-of-list
-  (hash)                               ;the CDR of NIL-as-end-of-list
+  ;; also the CAR of NIL-as-end-of-list
+  (value :init :unbound :ref-known (flushable) :ref-trans symbol-global-value)
+  ;; also the CDR of NIL-as-end-of-list.  Its reffer needs special
+  ;; care for this reason, as hash values must be fixnums.
+  (hash :set-trans %set-symbol-hash)
 
   (plist :ref-trans symbol-plist
         :set-trans %set-symbol-plist
   (package :ref-trans symbol-package
           :set-trans %set-symbol-package
           :init :null)
-  #!+sb-thread (tls-index))
+  #!+sb-thread (tls-index :ref-known (flushable) :ref-trans symbol-tls-index))
 
 (define-primitive-object (complex-single-float
                          :lowtag other-pointer-lowtag
   (tls-cookie)                         ;  on x86, the LDT index 
   (this :c-type "struct thread *" :length #!+alpha 2 #!-alpha 1)
   (next :c-type "struct thread *" :length #!+alpha 2 #!-alpha 1)
-  (state)                              ; running, stopping, stopped
+  (state)                              ; running, stopping, stopped, dead
   #!+x86 (pseudo-atomic-atomic)
   #!+x86 (pseudo-atomic-interrupted)
   (interrupt-data :c-type "struct interrupt_data *"