Skip to content

Commit 9f5a835

Browse files
committed
Save non-volatile regs; add exact-integer? in Outlaw.
1 parent 239dc21 commit 9f5a835

2 files changed

Lines changed: 13 additions & 2 deletions

File tree

langs/outlaw/compile.rkt

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,22 @@
2222
(map (lambda (i) (Extern (symbol->label i))) stdlib-ids)
2323
(Global 'entry)
2424
(Label 'entry)
25+
26+
(Push rbx) ; save non-volatile registers
27+
(Push r12)
28+
(Push r15)
29+
2530
(Mov rbx rdi) ; recv heap pointer
2631
(init-symbol-table p)
2732
(init-lib)
2833

2934
(compile-defines ds gs)
3035
(compile-variable (last-define-id ds) '() gs)
36+
37+
(Pop r15) ; restore non-volatile registers
38+
(Pop r12)
39+
(Pop rbx)
40+
3141
(Ret)
3242
(compile-lambda-defines (lambdas p) gs)
3343
(Global 'raise_error_align)
@@ -82,7 +92,7 @@
8292
symbol->string string->symbol symbol?
8393
string->uninterned-symbol
8494
open-input-file
85-
write-char error integer? procedure?
95+
write-char error integer? exact-integer? procedure?
8696
eq-hash-code char-alphabetic? char-whitespace? displayln write-string
8797
;; Op2
8898
+ - < = cons eq? make-vector vector-ref

langs/outlaw/stdlib.rkt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
vector? vector-length string? string-length
2929
symbol->string string->symbol symbol?
3030
string->uninterned-symbol open-input-file
31-
write-char error integer? procedure?
31+
write-char error integer? exact-integer? procedure?
3232
eq-hash-code
3333
;; Op2
3434
+ - < = cons eq? make-vector vector-ref
@@ -90,6 +90,7 @@
9090
(define (open-input-file x) (%open-input-file x))
9191
(define (error . x) (%error (car x))) ;; drops other args
9292
(define (integer? x) (%integer? x))
93+
(define (exact-integer? x) (%integer? x)) ;; only kind we have
9394
(define (procedure? x) (%procedure? x))
9495
(define (eq-hash-code x) (%eq-hash-code x))
9596

0 commit comments

Comments
 (0)