Skip to content

Commit 3d426f2

Browse files
committed
Save call-saved register before modifying.
1 parent a943eb9 commit 3d426f2

9 files changed

Lines changed: 20 additions & 2 deletions

File tree

langs/hoax/compile.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,11 @@
1818
(Extern 'raise_error)
1919
(Global 'entry)
2020
(Label 'entry)
21+
(Push rbx) ; save callee-saved register
2122
(Mov rbx rdi) ; recv heap pointer
2223
(compile-e e '())
23-
(Ret)
24+
(Pop rbx) ; restore callee-save register
25+
(Ret)
2426
(Label 'raise_error_align)
2527
pad-stack
2628
(Call 'raise_error)))

langs/hustle/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,10 @@
1818
(Extern 'raise_error)
1919
(Global 'entry)
2020
(Label 'entry)
21+
(Push rbx) ; save callee-saved register
2122
(Mov rbx rdi) ; recv heap pointer
2223
(compile-e e '())
24+
(Pop rbx) ; restore callee-save register
2325
(Ret)
2426
(Label 'raise_error_align)
2527
pad-stack

langs/iniquity/compile.rkt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
(prog (externs)
1818
(Global 'entry)
1919
(Label 'entry)
20-
(Mov rbx rdi) ; recv heap pointer
20+
(Push rbx) ; save callee-saved register
21+
(Mov rbx rdi) ; recv heap pointer
2122
(compile-e e '())
23+
(Pop rbx) ; restore callee-save register
2224
(Ret)
2325
(compile-defines ds)
2426
(Label 'raise_error_align)

langs/jig/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
(prog (externs)
1818
(Global 'entry)
1919
(Label 'entry)
20+
(Push rbx) ; save callee-saved register
2021
(Mov rbx rdi) ; recv heap pointer
2122
(compile-e e '() #t)
23+
(Pop rbx) ; restore callee-save register
2224
(Ret)
2325
(compile-defines ds)
2426
(Label 'raise_error_align)

langs/knock/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@
1717
(prog (externs)
1818
(Global 'entry)
1919
(Label 'entry)
20+
(Push rbx) ; save callee-saved register
2021
(Mov rbx rdi) ; recv heap pointer
2122
(compile-e e '() #t)
23+
(Pop rbx) ; restore callee-save register
2224
(Ret)
2325
(compile-defines ds)
2426
(Label 'raise_error_align)

langs/loot/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@
1717
(prog (externs)
1818
(Global 'entry)
1919
(Label 'entry)
20+
(Push rbx) ; save callee-saved register
2021
(Mov rbx rdi) ; recv heap pointer
2122
(compile-defines-values ds)
2223
(compile-e e (reverse (define-ids ds)) #t)
2324
(Add rsp (* 8 (length ds))) ;; pop function definitions
25+
(Pop rbx) ; restore callee-save register
2426
(Ret)
2527
(compile-defines ds)
2628
(compile-lambda-defines (lambdas p))

langs/mountebank/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@
2424
(prog (externs)
2525
(Global 'entry)
2626
(Label 'entry)
27+
(Push rbx) ; save callee-saved register
2728
(Mov rbx rdi) ; recv heap pointer
2829
(init-symbol-table p)
2930
(compile-defines-values ds)
3031
(compile-e e (reverse (define-ids ds)) #t)
3132
(Add rsp (* 8 (length ds))) ;; pop function definitions
33+
(Pop rbx) ; restore callee-save register
3234
(Ret)
3335
(compile-defines ds)
3436
(compile-lambda-defines (lambdas p))

langs/mug/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@
2424
(prog (externs)
2525
(Global 'entry)
2626
(Label 'entry)
27+
(Push rbx) ; save callee-saved register
2728
(Mov rbx rdi) ; recv heap pointer
2829
(init-symbol-table p)
2930
(compile-defines-values ds)
3031
(compile-e e (reverse (define-ids ds)) #t)
3132
(Add rsp (* 8 (length ds))) ;; pop function definitions
33+
(Pop rbx) ; restore callee-save register
3234
(Ret)
3335
(compile-defines ds)
3436
(compile-lambda-defines (lambdas p))

langs/neerdowell/compile.rkt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,13 @@
2424
(prog (externs)
2525
(Global 'entry)
2626
(Label 'entry)
27+
(Push rbx) ; save callee-saved register
2728
(Mov rbx rdi) ; recv heap pointer
2829
(init-symbol-table p)
2930
(compile-defines-values ds)
3031
(compile-e e (reverse (define-ids ds)) #t)
3132
(Add rsp (* 8 (length ds))) ;; pop function definitions
33+
(Pop rbx) ; restore callee-save register
3234
(Ret)
3335
(compile-defines ds)
3436
(compile-lambda-defines (lambdas p))

0 commit comments

Comments
 (0)