File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1111(define r8 'r8 ) ; scratch
1212(define r9 'r9 ) ; scratch
1313(define r10 'r10 ) ; scratch
14+ (define r12 'r12 ) ; save across call to memcpy
1415(define r15 'r15 ) ; stack pad (non-volatile)
1516(define rsp 'rsp ) ; stack
1617
2324 unpad-stack)]
2425 ['peek-byte (seq pad-stack
2526 (Call 'peek_byte )
26- unpad-stack)]
27- ['gensym (seq pad-stack
28- (Call 'gensym )
29- unpad-stack
30- (Or rax type-symb))]))
27+ unpad-stack)]))
3128
3229;; Op1 -> Asm
3330(define (compile-op1 p)
142139 (Add rdx 1 ) ; #words = 1 + (len+1)/2
143140 (Sar rdx 1 )
144141 (Add rdx 1 )
145- (Sal rdx 3 ) ; #bytes = 8*#words
146-
147- (Mov 'r12 rdx) ; save rdx before destroyed
142+ (Sal rdx 3 ) ; #bytes = 8*#words
143+ (Mov r12 rdx) ; save rdx before destroyed
148144 pad-stack
149145 (Call 'memcpy )
150146 unpad-stack
151- (Mov rbx rax) ; dst is returned, install as heap pointer
152- (Add rbx 'r12 )))
153-
154-
147+ ; rbx should be preserved by memcpy
148+ ;(Mov rbx rax) ; dst is returned, install as heap pointer
149+ (Add rbx r12)))
155150
156151;; Op2 -> Asm
157152(define (compile-op2 p)
You can’t perform that action at this time.
0 commit comments