Fix a regression in binding specials.
authorStas Boukarev <stassats@gmail.com>
Sat, 21 Sep 2013 22:35:47 +0000 (02:35 +0400)
committerStas Boukarev <stassats@gmail.com>
Sat, 21 Sep 2013 22:35:47 +0000 (02:35 +0400)
Got two lines mixed up, where order is important.

Caught by Paul Khuong.

src/compiler/x86-64/cell.lisp

index fdbeb1b..f20d3fb 100644 (file)
                       :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)
     (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)
     #!-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)