From: Stas Boukarev Date: Sat, 21 Sep 2013 22:35:47 +0000 (+0400) Subject: Fix a regression in binding specials. X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=2cfc78cdd55a4641b16e0eb7f277286e520fc959;p=sbcl.git Fix a regression in binding specials. Got two lines mixed up, where order is important. Caught by Paul Khuong. --- diff --git a/src/compiler/x86-64/cell.lisp b/src/compiler/x86-64/cell.lisp index fdbeb1b..f20d3fb 100644 --- a/src/compiler/x86-64/cell.lisp +++ b/src/compiler/x86-64/cell.lisp @@ -329,11 +329,10 @@ :assembly-routine)) (inst call tmp) TLS-INDEX-VALID - (inst mov tmp (make-ea :qword :base thread-base-tn :scale 1 :index tls-index)) - (storew tls-index bsp (- binding-symbol-slot binding-size)) + (inst mov tmp (make-ea :qword :base thread-base-tn :index tls-index)) (storew tmp bsp (- binding-value-slot binding-size)) - (inst mov (make-ea :qword :base thread-base-tn :scale 1 :index tls-index) - val))) + (storew tls-index bsp (- binding-symbol-slot binding-size)) + (inst mov (make-ea :qword :base thread-base-tn :index tls-index) val))) #!-sb-thread (define-vop (bind) @@ -359,7 +358,7 @@ (loadw tls-index bsp binding-symbol-slot) ;; Load VALUE from stack, then restore it to the TLS area. (loadw temp bsp binding-value-slot) - (inst mov (make-ea :qword :base thread-base-tn :scale 1 :index tls-index) + (inst mov (make-ea :qword :base thread-base-tn :index tls-index) temp) ;; Zero out the stack. (zeroize temp) @@ -402,7 +401,7 @@ #!-sb-thread (storew value symbol symbol-value-slot other-pointer-lowtag) #!+sb-thread - (inst mov (make-ea :qword :base thread-base-tn :scale 1 :index symbol) + (inst mov (make-ea :qword :base thread-base-tn :index symbol) value) (storew zero bsp binding-symbol-slot)