Skip to content

Commit bdbd3ec

Browse files
committed
Avoid relying on volatile registers across a call.
1 parent b29fd16 commit bdbd3ec

1 file changed

Lines changed: 3 additions & 2 deletions

File tree

langs/mug/compile-ops.rkt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,11 +143,12 @@
143143
(Sar rdx 1)
144144
(Add rdx 1)
145145
(Sal rdx 3) ; #bytes = 8*#words
146+
(Mov r15 rbx) ; save what will be rax in non-volatile register
147+
(Add rbx rdx) ; increment before rdx is destroyed
146148
pad-stack
147149
(Call 'memcpy)
148150
unpad-stack
149-
(Mov rax rbx)
150-
(Add rbx rdx)))
151+
(Mov rax r15)))
151152

152153
;; Op2 -> Asm
153154
(define (compile-op2 p)

0 commit comments

Comments
 (0)