(emit-label get-tls-index-lock)
(inst mov target 1)
(inst xor eax-tn eax-tn)
- (inst lock)
- (inst cmpxchg (make-ea-for-symbol-value *tls-index-lock*) target)
+ (inst cmpxchg (make-ea-for-symbol-value *tls-index-lock*) target :lock)
(inst jmp :ne get-tls-index-lock)
;; The symbol is now in OTHER.
(inst pop other)
(fixnumize 1))
(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.
(store-symbol-value 0 *tls-index-lock*)
;; Restore OTHER.
(inst pop other))