From 2cfc78cdd55a4641b16e0eb7f277286e520fc959 Mon Sep 17 00:00:00 2001 From: Stas Boukarev Date: Sun, 22 Sep 2013 02:35:47 +0400 Subject: [PATCH] Fix a regression in binding specials. Got two lines mixed up, where order is important. Caught by Paul Khuong. --- src/compiler/x86-64/cell.lisp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) 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) -- 1.7.10.4