projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Optimize CONCATENATE transform.
[sbcl.git]
/
src
/
compiler
/
x86
/
show.lisp
diff --git
a/src/compiler/x86/show.lisp
b/src/compiler/x86/show.lisp
index
4d291f1
..
04b63e1
100644
(file)
--- a/
src/compiler/x86/show.lisp
+++ b/
src/compiler/x86/show.lisp
@@
-22,11
+22,26
@@
:from :eval
:to (:result 0))
eax)
:from :eval
:to (:result 0))
eax)
+ #!+darwin
+ (:temporary (:sc unsigned-reg
+ :offset esi-offset)
+ prev-stack-pointer)
(:results (result :scs (descriptor-reg)))
(:save-p t)
(:generator 100
(:results (result :scs (descriptor-reg)))
(:save-p t)
(:generator 100
+ #!-darwin
(inst push object)
(inst push object)
+ #!+darwin
+ (progn
+ ;; the stack should be 16-byte aligned on Darwin
+ (inst mov prev-stack-pointer esp-tn)
+ (inst sub esp-tn n-word-bytes)
+ (align-stack-pointer esp-tn)
+ (storew object esp-tn))
(inst lea eax (make-fixup "debug_print" :foreign))
(inst call (make-fixup "call_into_c" :foreign))
(inst lea eax (make-fixup "debug_print" :foreign))
(inst call (make-fixup "call_into_c" :foreign))
+ #!-darwin
(inst add esp-tn n-word-bytes)
(inst add esp-tn n-word-bytes)
+ #!+darwin
+ (inst mov esp-tn prev-stack-pointer)
(move result eax)))
(move result eax)))