projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.44.5: teach UNTRACE-1 how to actually untrace unbound functions
[sbcl.git]
/
src
/
assembly
/
x86-64
/
alloc.lisp
diff --git
a/src/assembly/x86-64/alloc.lisp
b/src/assembly/x86-64/alloc.lisp
index
80d5406
..
7fd309b
100644
(file)
--- a/
src/assembly/x86-64/alloc.lisp
+++ b/
src/assembly/x86-64/alloc.lisp
@@
-92,11
+92,12
@@
(inst push other)
(inst push target)
(emit-label get-tls-index-lock)
(inst push other)
(inst push target)
(emit-label get-tls-index-lock)
- (inst mov target 1)
- (zeroize rax-tn)
- (inst cmpxchg (make-ea-for-symbol-value *tls-index-lock*)
- target :lock)
- (inst jmp :ne get-tls-index-lock)
+ (let ((not-rax ,(if (eql 'rax reg) 'other 'target)))
+ (inst mov not-rax 1)
+ (zeroize rax-tn)
+ (inst cmpxchg (make-ea-for-symbol-value *tls-index-lock*)
+ not-rax :lock)
+ (inst jmp :ne get-tls-index-lock))
;; The symbol is now in OTHER.
(inst pop other)
;; Now with the lock held, see if the symbol's tls index has been
;; The symbol is now in OTHER.
(inst pop other)
;; Now with the lock held, see if the symbol's tls index has been