0.8.11.7:
[sbcl.git] / src / compiler / generic / objdef.lisp
index 16f8a6b..5de4603 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)               
+  ;; 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
   (real :c-type "double" :length 2)
   (imag :c-type "double" :length 2))
 
-#!+long-float
-(define-primitive-object (complex-long-float
-                         :lowtag other-pointer-lowtag
-                         :widetag complex-long-float-widetag)
-  #!+sparc (filler)
-  (real :c-type "long double" :length #!+x86 3 #!+sparc 4)
-  (imag :c-type "long double" :length #!+x86 3 #!+sparc 4))
-
 ;;; 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
   (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
   #!+x86 (pseudo-atomic-atomic)
   #!+x86 (pseudo-atomic-interrupted)
   (interrupt-data :c-type "struct interrupt_data *"