defmethod: make the function known at compile time.
[sbcl.git] / src / assembly / x86-64 / alloc.lisp
index 7fd309b..e40d380 100644 (file)
                ;; Now with the lock held, see if the symbol's tls index has been
                ;; set in the meantime.
                (loadw target other symbol-tls-index-slot other-pointer-lowtag)
-               (inst or target target)
+               (inst test target target)
                (inst jmp :ne release-tls-index-lock)
                ;; Allocate a new tls-index.
                (load-symbol-value target *free-tls-index*)
                (let ((not-error (gen-label))
                      (error (generate-error-code nil 'tls-exhausted-error)))
-                 (inst cmp target (fixnumize tls-size))
+                 (inst cmp target (ash tls-size word-shift))
                  (inst jmp :l not-error)
                  (%clear-pseudo-atomic)
                  (inst jmp error)
                  (emit-label not-error))
                (inst add (make-ea-for-symbol-value *free-tls-index*)
-                     (fixnumize 1))
+                     n-word-bytes)
                (storew target other symbol-tls-index-slot other-pointer-lowtag)
                (emit-label release-tls-index-lock)
                ;; No need for barriers on x86/x86-64 on unlock.