projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.20.27: fixed bug 415
[sbcl.git]
/
src
/
compiler
/
x86-64
/
cell.lisp
diff --git
a/src/compiler/x86-64/cell.lisp
b/src/compiler/x86-64/cell.lisp
index
501bb4d
..
d90f81b
100644
(file)
--- a/
src/compiler/x86-64/cell.lisp
+++ b/
src/compiler/x86-64/cell.lisp
@@
-59,11
+59,9
@@
(:results (result :scs (descriptor-reg any-reg)))
(:generator 5
(move rax old)
(:results (result :scs (descriptor-reg any-reg)))
(:generator 5
(move rax old)
- #!+sb-thread
- (inst lock)
(inst cmpxchg (make-ea :qword :base object
:disp (- (* offset n-word-bytes) lowtag))
(inst cmpxchg (make-ea :qword :base object
:disp (- (* offset n-word-bytes) lowtag))
- new)
+ new :lock)
(move result rax)))
\f
;;;; symbol hacking VOPs
(move result rax)))
\f
;;;; symbol hacking VOPs
@@
-95,13
+93,12
@@
new)
(inst cmp rax no-tls-value-marker-widetag)
(inst jmp :ne check)
new)
(inst cmp rax no-tls-value-marker-widetag)
(inst jmp :ne check)
- (move rax old)
- (inst lock))
+ (move rax old))
(inst cmpxchg (make-ea :qword :base symbol
:disp (- (* symbol-value-slot n-word-bytes)
other-pointer-lowtag)
:scale 1)
(inst cmpxchg (make-ea :qword :base symbol
:disp (- (* symbol-value-slot n-word-bytes)
other-pointer-lowtag)
:scale 1)
- new)
+ new :lock)
(emit-label check)
(move result rax)
(inst cmp result unbound-marker-widetag)
(emit-label check)
(move result rax)
(inst cmp result unbound-marker-widetag)
@@
-214,11
+211,10
@@
(:policy :fast-safe)
(:generator 4
(move result value)
(:policy :fast-safe)
(:generator 4
(move result value)
- (inst lock)
(inst add (make-ea :qword :base object
:disp (- (* symbol-value-slot n-word-bytes)
other-pointer-lowtag))
(inst add (make-ea :qword :base object
:disp (- (* symbol-value-slot n-word-bytes)
other-pointer-lowtag))
- value)))
+ value :lock)))
#!+sb-thread
(define-vop (boundp)
#!+sb-thread
(define-vop (boundp)
@@
-640,9
+636,7
@@
(:generator 4
(loadw tmp object 0 instance-pointer-lowtag)
(inst shr tmp n-widetag-bits)
(:generator 4
(loadw tmp object 0 instance-pointer-lowtag)
(inst shr tmp n-widetag-bits)
- #!+sb-thread
- (inst lock)
- (inst xadd (make-ea-for-raw-slot object index tmp) diff)
+ (inst xadd (make-ea-for-raw-slot object index tmp) diff :lock)
(move result diff)))
(define-vop (raw-instance-ref/single)
(move result diff)))
(define-vop (raw-instance-ref/single)