threads: Thread objects don't need a lowtag.
authorAlastair Bridgewater <nyef@virtdev-1.lisphacker.com>
Tue, 25 Oct 2011 22:39:29 +0000 (18:39 -0400)
committerAlastair Bridgewater <nyef@virtdev-1.lisphacker.com>
Tue, 25 Oct 2011 22:39:29 +0000 (18:39 -0400)
  * It was a cute hack, in a way, to force the existing genesis
machinery to produce assembler symbols for thread structure slots.
But it's still a hack, and needs to die.  And now it can.

src/compiler/generic/objdef.lisp

index ccad11b..79c9051 100644 (file)
 ;;; 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