X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fx86-64%2Fsystem.lisp;h=7cb54a4548664328c7b100a30789e38833a67d1a;hb=f7faed97898dd0e94a18b0d1fca03aaa0fe24ab0;hp=11867f974f2b24e5784add950ec47f1fd5e74849;hpb=6ab1e0d948c9b571db7da0e7491cf8d7ca256601;p=sbcl.git diff --git a/src/compiler/x86-64/system.lisp b/src/compiler/x86-64/system.lisp index 11867f9..7cb54a4 100644 --- a/src/compiler/x86-64/system.lisp +++ b/src/compiler/x86-64/system.lisp @@ -39,14 +39,14 @@ (inst cmp al-tn fun-pointer-lowtag) (inst jmp :e FUNCTION-PTR) - ;; Pick off structures and list pointers. - (inst test al-tn 1) - (inst jmp :ne DONE) - ;; Pick off fixnums. - (inst and al-tn fixnum-tag-mask) + (inst test al-tn fixnum-tag-mask) (inst jmp :e DONE) + ;; Pick off structures and list pointers. + (inst test al-tn 2) + (inst jmp :ne DONE) + ;; must be an other immediate (inst mov rax object) (inst jmp DONE) @@ -381,18 +381,22 @@ number of CPU cycles elapsed as secondary value. EXPERIMENTAL." (define-vop (%read-barrier) (:policy :fast-safe) (:translate %read-barrier) - (:generator 3 - (inst lfence))) + (:generator 3)) #!+memory-barrier-vops (define-vop (%write-barrier) (:policy :fast-safe) (:translate %write-barrier) - (:generator 3 - (inst sfence))) + (:generator 3)) #!+memory-barrier-vops (define-vop (%data-dependency-barrier) (:policy :fast-safe) (:translate %data-dependency-barrier) (:generator 3)) + +(define-vop (pause) + (:translate spin-loop-hint) + (:policy :fast-safe) + (:generator 0 + (inst pause)))