projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
move checking for constant ALIEN-INFO into a separate function
[sbcl.git]
/
src
/
compiler
/
x86-64
/
nlx.lisp
diff --git
a/src/compiler/x86-64/nlx.lisp
b/src/compiler/x86-64/nlx.lisp
index
dd31d2a
..
4cc02fd
100644
(file)
--- a/
src/compiler/x86-64/nlx.lisp
+++ b/
src/compiler/x86-64/nlx.lisp
@@
-24,7
+24,7
@@
(defun catch-block-ea (tn)
(aver (sc-is tn catch-block))
(make-ea :qword :base rbp-tn
(defun catch-block-ea (tn)
(aver (sc-is tn catch-block))
(make-ea :qword :base rbp-tn
- :disp (- (* (+ (tn-offset tn) catch-block-size) n-word-bytes))))
+ :disp (frame-byte-offset (+ -1 (tn-offset tn) catch-block-size))))
\f
;;;; Save and restore dynamic environment.
\f
;;;; Save and restore dynamic environment.
@@
-168,9
+168,10
@@
(storew rdx-tn rbx-tn -1))
(sc-case tn
((descriptor-reg any-reg)
(storew rdx-tn rbx-tn -1))
(sc-case tn
((descriptor-reg any-reg)
- (loadw tn start (frame-word-offset i)))
+ (loadw tn start (frame-word-offset (+ sp->fp-offset i))))
((control-stack)
((control-stack)
- (loadw move-temp start (frame-word-offset i))
+ (loadw move-temp start
+ (frame-word-offset (+ sp->fp-offset i)))
(inst mov tn move-temp)))))
(let ((defaulting-done (gen-label)))
(emit-label defaulting-done)
(inst mov tn move-temp)))))
(let ((defaulting-done (gen-label)))
(emit-label defaulting-done)
@@
-277,7
+278,8
@@
;; Clear the stack
(inst lea rsp-tn
;; Clear the stack
(inst lea rsp-tn
- (make-ea :qword :base rbp-tn :disp (* -3 n-word-bytes)))
+ (make-ea :qword :base rbp-tn
+ :disp (* (- sp->fp-offset 3) n-word-bytes)))
;; Push the return-pc so it looks like we just called.
(pushw rbp-tn (frame-word-offset return-pc-save-offset))
;; Push the return-pc so it looks like we just called.
(pushw rbp-tn (frame-word-offset return-pc-save-offset))