projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.15.36: fix bug 423
[sbcl.git]
/
src
/
compiler
/
x86-64
/
c-call.lisp
diff --git
a/src/compiler/x86-64/c-call.lisp
b/src/compiler/x86-64/c-call.lisp
index
afbe857
..
c9d4861
100644
(file)
--- a/
src/compiler/x86-64/c-call.lisp
+++ b/
src/compiler/x86-64/c-call.lisp
@@
-210,10
+210,17
@@
:sc (sc-or-lose 'dword-reg)
:offset (tn-offset val)))))
:sc (sc-or-lose 'dword-reg)
:offset (tn-offset val)))))
+#-sb-xc-host
(defun sign-extend (x)
(declare (type (signed-byte 32) x))
(sign-extend x))
(defun sign-extend (x)
(declare (type (signed-byte 32) x))
(sign-extend x))
+#+sb-xc-host
+(defun sign-extend (x)
+ (if (logbitp 31 x)
+ (dpb x (byte 32 0) -1)
+ x))
+
(define-vop (foreign-symbol-sap)
(:translate foreign-symbol-sap)
(:policy :fast-safe)
(define-vop (foreign-symbol-sap)
(:translate foreign-symbol-sap)
(:policy :fast-safe)
@@
-262,6
+269,7
@@
(define-vop (alloc-number-stack-space)
(:info amount)
(:results (result :scs (sap-reg any-reg)))
(define-vop (alloc-number-stack-space)
(:info amount)
(:results (result :scs (sap-reg any-reg)))
+ (:result-types system-area-pointer)
(:generator 0
(aver (location= result rsp-tn))
(unless (zerop amount)
(:generator 0
(aver (location= result rsp-tn))
(unless (zerop amount)
@@
-282,6
+290,7
@@
(:info amount)
#!+sb-thread (:temporary (:sc unsigned-reg) temp)
(:results (result :scs (sap-reg any-reg)))
(:info amount)
#!+sb-thread (:temporary (:sc unsigned-reg) temp)
(:results (result :scs (sap-reg any-reg)))
+ (:result-types system-area-pointer)
#!+sb-thread
(:generator 0
(aver (not (location= result rsp-tn)))
#!+sb-thread
(:generator 0
(aver (not (location= result rsp-tn)))