From 17bfacd66cdc1103385ddac2552006d104e11baa Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Mon, 23 Feb 2026 16:47:13 -0500 Subject: [PATCH 1/4] Replace [Offset] with [Mem]; re-enable tests Update due to cmsc430/a86@d85206a8f7ee893bfe1445f93b685433bf33381a. With the update, mug, mountebank, and neerdowell now pass. --- info.rkt | 6 +--- iniquity-gc/compile-ops.rkt | 38 ++++++++++++------------- iniquity-gc/compile.rkt | 8 +++--- mountebank/compile-datum.rkt | 10 +++---- mountebank/compile-define.rkt | 2 +- mountebank/compile-expr.rkt | 38 ++++++++++++------------- mountebank/compile-ops.rkt | 40 +++++++++++++-------------- mug/compile-define.rkt | 2 +- mug/compile-expr.rkt | 42 ++++++++++++++-------------- mug/compile-ops.rkt | 40 +++++++++++++-------------- neerdowell/compile-datum.rkt | 10 +++---- neerdowell/compile-define.rkt | 2 +- neerdowell/compile-expr.rkt | 48 ++++++++++++++++---------------- neerdowell/compile-ops.rkt | 52 +++++++++++++++++------------------ 14 files changed, 167 insertions(+), 171 deletions(-) diff --git a/info.rkt b/info.rkt index 221b75b..5c0fc4b 100644 --- a/info.rkt +++ b/info.rkt @@ -14,8 +14,4 @@ ;; actually care to run Outlaw. ;; To test these, you should do an explicit: raco test -c -(define test-omit-paths (list "iniquity-gc" - "mountebank" - ;; "mug" ;; NOTE: seems to pass currently - "neerdowell" - "outlaw")) +(define test-omit-paths (list "outlaw")) diff --git a/iniquity-gc/compile-ops.rkt b/iniquity-gc/compile-ops.rkt index 23c4b09..4ce8d09 100644 --- a/iniquity-gc/compile-ops.rkt +++ b/iniquity-gc/compile-ops.rkt @@ -79,22 +79,22 @@ (seq (Push rax) (allocate 1) (Pop rax) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (Mov rax rbx) (Or rax type-box) (Add rbx 8))] ['unbox (seq (assert-box rax) (Xor rax type-box) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['car (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 8)))] + (Mov rax (Mem rax 8)))] ['cdr (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['empty? (eq-imm '())] ['box? (type-pred ptr-mask type-box)] @@ -111,7 +111,7 @@ (Xor rax type-vect) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -124,7 +124,7 @@ (Xor rax type-str) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -181,9 +181,9 @@ (seq (Push rax) (allocate 2) (Pop rax) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (Pop rax) - (Mov (Offset rbx 8) rax) + (Mov (Mem rbx 8) rax) (Mov rax rbx) (Or rax type-cons) (Add rbx 16))] @@ -212,11 +212,11 @@ (Or r9 type-vect) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Label loop) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (Add rbx 8) (Sub r8 1) (Cmp r8 0) @@ -235,14 +235,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 3) (Add r8 rax) - (Mov rax (Offset r8 8)))] + (Mov rax (Mem r8 8)))] ['make-string (let ((loop (gensym)) @@ -269,7 +269,7 @@ (Or r9 type-str) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Sar rax char-shift) @@ -279,7 +279,7 @@ (Sal r8 1) ; len is odd (Label loop) - (Mov (Offset rbx 0) eax) + (Mov (Mem rbx 0) eax) (Add rbx 4) (Sub r8 1) (Cmp r8 0) @@ -300,14 +300,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-str) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 2) (Add r8 rax) - (Mov 'eax (Offset r8 8)) + (Mov 'eax (Mem r8 8)) (Sal rax char-shift) (Or rax type-char))] @@ -315,7 +315,7 @@ (seq (Pop r8) (assert-box r8) (Xor r8 type-box) - (Mov (Offset r8 0) rax) + (Mov (Mem r8 0) rax) (Mov rax (value->bits (void))))])) ;; Op3 -> Asm @@ -329,14 +329,14 @@ (Cmp r10 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar r10 int-shift) ; r10 = index (Sub r9 1) (Cmp r9 r10) (Jl 'raise_error_align) (Sal r10 3) (Add r8 r10) - (Mov (Offset r8 8) rax) + (Mov (Mem r8 8) rax) (Mov rax (value->bits (void))))])) diff --git a/iniquity-gc/compile.rkt b/iniquity-gc/compile.rkt index dc7f318..fb9b813 100644 --- a/iniquity-gc/compile.rkt +++ b/iniquity-gc/compile.rkt @@ -13,7 +13,7 @@ ;; Prog -> Asm (define (compile p) (match p - [(Prog ds e) + [(Prog ds e) (prog (externs) (Global 'entry) (Label 'entry) @@ -82,7 +82,7 @@ ;; Id CEnv -> Asm (define (compile-variable x c) (let ((i (lookup x c))) - (seq (Mov rax (Offset rsp i))))) + (seq (Mov rax (Mem rsp i))))) ;; String -> Asm (define (compile-string s) @@ -91,7 +91,7 @@ (seq (Mov rax type-str)) (seq (allocate (add1 (quotient (add1 len) 2))) (Mov rax len) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (compile-string-chars (string->list s) 8) (Mov rax rbx) (Or rax type-str) @@ -104,7 +104,7 @@ ['() (seq)] [(cons c cs) (seq (Mov rax (char->integer c)) - (Mov (Offset rbx i) 'eax) + (Mov (Mem rbx i) 'eax) (compile-string-chars cs (+ 4 i)))])) ;; Op0 CEnv -> Asm diff --git a/mountebank/compile-datum.rkt b/mountebank/compile-datum.rkt index 90f8170..9fe2720 100644 --- a/mountebank/compile-datum.rkt +++ b/mountebank/compile-datum.rkt @@ -16,10 +16,10 @@ [else (compile-atom d)])) (define (load-symbol s) - (Plus (symbol->data-label s) type-symb)) + (Mem (symbol->data-label s) type-symb)) (define (load-string s) - (Plus (symbol->data-label (string->symbol s)) type-str)) + (Mem (symbol->data-label (string->symbol s)) type-str)) ;; Value -> Asm (define (compile-atom v) @@ -55,7 +55,7 @@ (match (compile-quoted c) [(cons l1 is1) (let ((l (gensym 'box))) - (cons (Plus l type-box) + (cons (Mem l type-box) (seq (Label l) (Dq l1) is1)))])) @@ -67,7 +67,7 @@ (match (compile-quoted c2) [(cons l2 is2) (let ((l (gensym 'cons))) - (cons (Plus l type-cons) + (cons (Mem l type-cons) (seq (Label l) (Dq l2) (Dq l1) @@ -81,7 +81,7 @@ [_ (let ((l (gensym 'vector)) (cds (map compile-quoted ds))) - (cons (Plus l type-vect) + (cons (Mem l type-vect) (seq (Label l) (Dq (length ds)) (map (λ (cd) (Dq (car cd))) cds) diff --git a/mountebank/compile-define.rkt b/mountebank/compile-define.rkt index 64433c1..a8a6992 100644 --- a/mountebank/compile-define.rkt +++ b/mountebank/compile-define.rkt @@ -46,7 +46,7 @@ [(cons (Defn f xs e) ds) (let ((fvs (fv (Lam f xs e)))) (seq (Lea rax (symbol->label f)) - (Mov (Offset rbx off) rax) + (Mov (Mem rbx off) rax) (Mov rax rbx) (Add rax off) (Or rax type-proc) diff --git a/mountebank/compile-expr.rkt b/mountebank/compile-expr.rkt index 321b45a..e2b9627 100644 --- a/mountebank/compile-expr.rkt +++ b/mountebank/compile-expr.rkt @@ -39,7 +39,7 @@ (define (compile-variable x c) (match (lookup x c) [#f (error "unbound variable")] ;(seq (Lea rax (symbol->label x)))] - [i (seq (Mov rax (Offset rsp i)))])) + [i (seq (Mov rax (Mem rsp i)))])) ;; Op0 CEnv -> Asm (define (compile-prim0 p c) @@ -103,10 +103,10 @@ (seq (compile-es (cons e es) c) (move-args (add1 (length es)) (length c)) (Add rsp (* 8 (length c))) - (Mov rax (Offset rsp (* 8 (length es)))) + (Mov rax (Mem rsp (* 8 (length es)))) (assert-proc rax) (Xor rax type-proc) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Jmp rax))) ;; Integer Integer -> Asm @@ -114,8 +114,8 @@ (cond [(zero? off) (seq)] [(zero? i) (seq)] [else - (seq (Mov r8 (Offset rsp (* 8 (sub1 i)))) - (Mov (Offset rsp (* 8 (+ off (sub1 i)))) r8) + (seq (Mov r8 (Mem rsp (* 8 (sub1 i)))) + (Mov (Mem rsp (* 8 (+ off (sub1 i)))) r8) (move-args (sub1 i) off))])) ;; Expr [Listof Expr] CEnv -> Asm @@ -127,10 +127,10 @@ (seq (Lea rax r) (Push rax) (compile-es (cons e es) (cons #f c)) - (Mov rax (Offset rsp i)) + (Mov rax (Mem rsp i)) (assert-proc rax) (Xor rax type-proc) - (Mov rax (Offset rax 0)) ; fetch the code label + (Mov rax (Mem rax 0)) ; fetch the code label (Jmp rax) (Label r)))) @@ -138,7 +138,7 @@ (define (compile-lam f xs e c) (let ((fvs (fv (Lam f xs e)))) (seq (Lea rax (symbol->label f)) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (free-vars-to-heap fvs c 8) (Mov rax rbx) ; return value (Or rax type-proc) @@ -150,8 +150,8 @@ (match fvs ['() (seq)] [(cons x fvs) - (seq (Mov r8 (Offset rsp (lookup x c))) - (Mov (Offset rbx off) r8) + (seq (Mov r8 (Mem rsp (lookup x c))) + (Mov (Mem rbx off) r8) (free-vars-to-heap fvs c (+ off 8)))])) ;; [Listof Lam] -> Asm @@ -169,7 +169,7 @@ [(Lam f xs e) (let ((env (append (reverse fvs) (reverse xs) (list #f)))) (seq (Label (symbol->label f)) - (Mov rax (Offset rsp (* 8 (length xs)))) + (Mov rax (Mem rsp (* 8 (length xs)))) (Xor rax type-proc) (copy-env-to-stack fvs 8) (compile-e e env #t) @@ -182,7 +182,7 @@ (match fvs ['() (seq)] [(cons _ fvs) - (seq (Mov r9 (Offset rax off)) + (seq (Mov r9 (Mem rax off)) (Push r9) (copy-env-to-stack fvs (+ 8 off)))])) @@ -218,7 +218,7 @@ (let ((next (gensym))) (match (compile-pattern p '() next) [(list i cm) - (seq (Mov rax (Offset rsp 0)) ; restore value being matched + (seq (Mov rax (Mem rsp 0)) ; restore value being matched i (compile-e e (append cm c) t?) (Add rsp (* 8 (length cm))) @@ -254,7 +254,7 @@ cm))] [(PSymb s) (let ((ok (gensym))) - (list (seq (Lea r9 (Plus (symbol->data-label s) type-symb)) + (list (seq (Lea r9 (Mem (symbol->data-label s) type-symb)) (Cmp rax r9) (Je ok) (Add rsp (* 8 (length cm))) @@ -277,7 +277,7 @@ (list (seq (Push rax) i1 - (Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm))))) + (Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm))))) i2) cm2)])])] [(PBox p) @@ -293,7 +293,7 @@ (Jmp next) (Label ok) (Xor rax type-box) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) i1) cm1))])] [(PCons p1 p2) @@ -311,10 +311,10 @@ (Jmp next) (Label ok) (Xor rax type-cons) - (Mov r8 (Offset rax 0)) + (Mov r8 (Mem rax 0)) (Push r8) ; push cdr - (Mov rax (Offset rax 8)) ; mov rax car + (Mov rax (Mem rax 8)) ; mov rax car i1 - (Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm))))) + (Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm))))) i2) cm2))])])])) diff --git a/mountebank/compile-ops.rkt b/mountebank/compile-ops.rkt index 383059b..79fe367 100644 --- a/mountebank/compile-ops.rkt +++ b/mountebank/compile-ops.rkt @@ -57,22 +57,22 @@ (Call 'write_byte) unpad-stack)] ['box - (seq (Mov (Offset rbx 0) rax) + (seq (Mov (Mem rbx 0) rax) (Mov rax rbx) (Or rax type-box) (Add rbx 8))] ['unbox (seq (assert-box rax) (Xor rax type-box) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['car (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 8)))] + (Mov rax (Mem rax 8)))] ['cdr (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['empty? (eq-imm '())] ['box? (type-pred ptr-mask type-box)] @@ -91,7 +91,7 @@ (Xor rax type-vect) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -104,7 +104,7 @@ (Xor rax type-str) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -134,7 +134,7 @@ (define char-array-copy (seq (Mov rdi rbx) ; dst (Mov rsi rax) ; src - (Mov rdx (Offset rax 0)) ; len + (Mov rdx (Mem rax 0)) ; len (Add rdx 1) ; #words = 1 + (len+1)/2 (Sar rdx 1) (Add rdx 1) @@ -145,7 +145,7 @@ unpad-stack ; rbx should be preserved by memcpy ;(Mov rbx rax) ; dst is returned, install as heap pointer - (Add rbx r12))) + (Add rbx r12))) ;; Op2 -> Asm (define (compile-op2 p) @@ -182,9 +182,9 @@ (Mov rax (value->bits #f)) (Label true))))] ['cons - (seq (Mov (Offset rbx 0) rax) + (seq (Mov (Mem rbx 0) rax) (Pop rax) - (Mov (Offset rbx 8) rax) + (Mov (Mem rbx 8) rax) (Mov rax rbx) (Or rax type-cons) (Add rbx 16))] @@ -204,11 +204,11 @@ (Or r9 type-vect) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Label loop) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (Add rbx 8) (Sub r8 1) (Cmp r8 0) @@ -230,14 +230,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 3) (Add r8 rax) - (Mov rax (Offset r8 8)))] + (Mov rax (Mem r8 8)))] ['make-string (let ((loop (gensym)) @@ -253,7 +253,7 @@ (Or r9 type-str) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Sar rax char-shift) @@ -263,7 +263,7 @@ (Sal r8 1) ; len is odd (Label loop) - (Mov (Offset rbx 0) eax) + (Mov (Mem rbx 0) eax) (Add rbx 4) (Sub r8 1) (Cmp r8 0) @@ -285,14 +285,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-str) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 2) (Add r8 rax) - (Mov 'eax (Offset r8 8)) + (Mov 'eax (Mem r8 8)) (Sal rax char-shift) (Or rax type-char))])) @@ -307,14 +307,14 @@ (Cmp r10 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar r10 int-shift) ; r10 = index (Sub r9 1) (Cmp r9 r10) (Jl 'raise_error_align) (Sal r10 3) (Add r8 r10) - (Mov (Offset r8 8) rax) + (Mov (Mem r8 8) rax) (Mov rax (value->bits (void))))])) diff --git a/mug/compile-define.rkt b/mug/compile-define.rkt index 64433c1..a8a6992 100644 --- a/mug/compile-define.rkt +++ b/mug/compile-define.rkt @@ -46,7 +46,7 @@ [(cons (Defn f xs e) ds) (let ((fvs (fv (Lam f xs e)))) (seq (Lea rax (symbol->label f)) - (Mov (Offset rbx off) rax) + (Mov (Mem rbx off) rax) (Mov rax rbx) (Add rax off) (Or rax type-proc) diff --git a/mug/compile-expr.rkt b/mug/compile-expr.rkt index 849a76e..1921741 100644 --- a/mug/compile-expr.rkt +++ b/mug/compile-expr.rkt @@ -43,11 +43,11 @@ ;; Symbol -> Asm (define (compile-symbol s) - (seq (Lea rax (Plus (symbol->data-label s) type-symb)))) + (seq (Lea rax (Mem (symbol->data-label s) type-symb)))) ;; String -> Asm (define (compile-string s) - (seq (Lea rax (Plus (symbol->data-label (string->symbol s)) type-str)))) + (seq (Lea rax (Mem (symbol->data-label (string->symbol s)) type-str)))) ;; Value -> Asm (define (compile-value v) @@ -57,7 +57,7 @@ (define (compile-variable x c) (match (lookup x c) [#f (error "unbound variable")] ;(seq (Lea rax (symbol->label x)))] - [i (seq (Mov rax (Offset rsp i)))])) + [i (seq (Mov rax (Mem rsp i)))])) ;; Op0 CEnv -> Asm (define (compile-prim0 p c) @@ -121,10 +121,10 @@ (seq (compile-es (cons e es) c) (move-args (add1 (length es)) (length c)) (Add rsp (* 8 (length c))) - (Mov rax (Offset rsp (* 8 (length es)))) + (Mov rax (Mem rsp (* 8 (length es)))) (assert-proc rax) (Xor rax type-proc) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Jmp rax))) ;; Integer Integer -> Asm @@ -132,8 +132,8 @@ (cond [(zero? off) (seq)] [(zero? i) (seq)] [else - (seq (Mov r8 (Offset rsp (* 8 (sub1 i)))) - (Mov (Offset rsp (* 8 (+ off (sub1 i)))) r8) + (seq (Mov r8 (Mem rsp (* 8 (sub1 i)))) + (Mov (Mem rsp (* 8 (+ off (sub1 i)))) r8) (move-args (sub1 i) off))])) ;; Expr [Listof Expr] CEnv -> Asm @@ -145,10 +145,10 @@ (seq (Lea rax r) (Push rax) (compile-es (cons e es) (cons #f c)) - (Mov rax (Offset rsp i)) + (Mov rax (Mem rsp i)) (assert-proc rax) (Xor rax type-proc) - (Mov rax (Offset rax 0)) ; fetch the code label + (Mov rax (Mem rax 0)) ; fetch the code label (Jmp rax) (Label r)))) @@ -156,7 +156,7 @@ (define (compile-lam f xs e c) (let ((fvs (fv (Lam f xs e)))) (seq (Lea rax (symbol->label f)) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (free-vars-to-heap fvs c 8) (Mov rax rbx) ; return value (Or rax type-proc) @@ -168,8 +168,8 @@ (match fvs ['() (seq)] [(cons x fvs) - (seq (Mov r8 (Offset rsp (lookup x c))) - (Mov (Offset rbx off) r8) + (seq (Mov r8 (Mem rsp (lookup x c))) + (Mov (Mem rbx off) r8) (free-vars-to-heap fvs c (+ off 8)))])) ;; [Listof Lam] -> Asm @@ -187,7 +187,7 @@ [(Lam f xs e) (let ((env (append (reverse fvs) (reverse xs) (list #f)))) (seq (Label (symbol->label f)) - (Mov rax (Offset rsp (* 8 (length xs)))) + (Mov rax (Mem rsp (* 8 (length xs)))) (Xor rax type-proc) (copy-env-to-stack fvs 8) (compile-e e env #t) @@ -200,7 +200,7 @@ (match fvs ['() (seq)] [(cons _ fvs) - (seq (Mov r9 (Offset rax off)) + (seq (Mov r9 (Mem rax off)) (Push r9) (copy-env-to-stack fvs (+ 8 off)))])) @@ -236,7 +236,7 @@ (let ((next (gensym))) (match (compile-pattern p '() next) [(list i cm) - (seq (Mov rax (Offset rsp 0)) ; restore value being matched + (seq (Mov rax (Mem rsp 0)) ; restore value being matched i (compile-e e (append cm c) t?) (Add rsp (* 8 (length cm))) @@ -272,7 +272,7 @@ cm))] [(PSymb s) (let ((ok (gensym))) - (list (seq (Lea r9 (Plus (symbol->data-label s) type-symb)) + (list (seq (Lea r9 (Mem (symbol->data-label s) type-symb)) (Cmp rax r9) (Je ok) (Add rsp (* 8 (length cm))) @@ -295,7 +295,7 @@ (list (seq (Push rax) i1 - (Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm))))) + (Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm))))) i2) cm2)])])] [(PBox p) @@ -311,7 +311,7 @@ (Jmp next) (Label ok) (Xor rax type-box) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) i1) cm1))])] [(PCons p1 p2) @@ -329,10 +329,10 @@ (Jmp next) (Label ok) (Xor rax type-cons) - (Mov r8 (Offset rax 0)) + (Mov r8 (Mem rax 0)) (Push r8) ; push cdr - (Mov rax (Offset rax 8)) ; mov rax car + (Mov rax (Mem rax 8)) ; mov rax car i1 - (Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm))))) + (Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm))))) i2) cm2))])])])) diff --git a/mug/compile-ops.rkt b/mug/compile-ops.rkt index 383059b..79fe367 100644 --- a/mug/compile-ops.rkt +++ b/mug/compile-ops.rkt @@ -57,22 +57,22 @@ (Call 'write_byte) unpad-stack)] ['box - (seq (Mov (Offset rbx 0) rax) + (seq (Mov (Mem rbx 0) rax) (Mov rax rbx) (Or rax type-box) (Add rbx 8))] ['unbox (seq (assert-box rax) (Xor rax type-box) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['car (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 8)))] + (Mov rax (Mem rax 8)))] ['cdr (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['empty? (eq-imm '())] ['box? (type-pred ptr-mask type-box)] @@ -91,7 +91,7 @@ (Xor rax type-vect) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -104,7 +104,7 @@ (Xor rax type-str) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -134,7 +134,7 @@ (define char-array-copy (seq (Mov rdi rbx) ; dst (Mov rsi rax) ; src - (Mov rdx (Offset rax 0)) ; len + (Mov rdx (Mem rax 0)) ; len (Add rdx 1) ; #words = 1 + (len+1)/2 (Sar rdx 1) (Add rdx 1) @@ -145,7 +145,7 @@ unpad-stack ; rbx should be preserved by memcpy ;(Mov rbx rax) ; dst is returned, install as heap pointer - (Add rbx r12))) + (Add rbx r12))) ;; Op2 -> Asm (define (compile-op2 p) @@ -182,9 +182,9 @@ (Mov rax (value->bits #f)) (Label true))))] ['cons - (seq (Mov (Offset rbx 0) rax) + (seq (Mov (Mem rbx 0) rax) (Pop rax) - (Mov (Offset rbx 8) rax) + (Mov (Mem rbx 8) rax) (Mov rax rbx) (Or rax type-cons) (Add rbx 16))] @@ -204,11 +204,11 @@ (Or r9 type-vect) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Label loop) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (Add rbx 8) (Sub r8 1) (Cmp r8 0) @@ -230,14 +230,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 3) (Add r8 rax) - (Mov rax (Offset r8 8)))] + (Mov rax (Mem r8 8)))] ['make-string (let ((loop (gensym)) @@ -253,7 +253,7 @@ (Or r9 type-str) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Sar rax char-shift) @@ -263,7 +263,7 @@ (Sal r8 1) ; len is odd (Label loop) - (Mov (Offset rbx 0) eax) + (Mov (Mem rbx 0) eax) (Add rbx 4) (Sub r8 1) (Cmp r8 0) @@ -285,14 +285,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-str) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 2) (Add r8 rax) - (Mov 'eax (Offset r8 8)) + (Mov 'eax (Mem r8 8)) (Sal rax char-shift) (Or rax type-char))])) @@ -307,14 +307,14 @@ (Cmp r10 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar r10 int-shift) ; r10 = index (Sub r9 1) (Cmp r9 r10) (Jl 'raise_error_align) (Sal r10 3) (Add r8 r10) - (Mov (Offset r8 8) rax) + (Mov (Mem r8 8) rax) (Mov rax (value->bits (void))))])) diff --git a/neerdowell/compile-datum.rkt b/neerdowell/compile-datum.rkt index 90f8170..9fe2720 100644 --- a/neerdowell/compile-datum.rkt +++ b/neerdowell/compile-datum.rkt @@ -16,10 +16,10 @@ [else (compile-atom d)])) (define (load-symbol s) - (Plus (symbol->data-label s) type-symb)) + (Mem (symbol->data-label s) type-symb)) (define (load-string s) - (Plus (symbol->data-label (string->symbol s)) type-str)) + (Mem (symbol->data-label (string->symbol s)) type-str)) ;; Value -> Asm (define (compile-atom v) @@ -55,7 +55,7 @@ (match (compile-quoted c) [(cons l1 is1) (let ((l (gensym 'box))) - (cons (Plus l type-box) + (cons (Mem l type-box) (seq (Label l) (Dq l1) is1)))])) @@ -67,7 +67,7 @@ (match (compile-quoted c2) [(cons l2 is2) (let ((l (gensym 'cons))) - (cons (Plus l type-cons) + (cons (Mem l type-cons) (seq (Label l) (Dq l2) (Dq l1) @@ -81,7 +81,7 @@ [_ (let ((l (gensym 'vector)) (cds (map compile-quoted ds))) - (cons (Plus l type-vect) + (cons (Mem l type-vect) (seq (Label l) (Dq (length ds)) (map (λ (cd) (Dq (car cd))) cds) diff --git a/neerdowell/compile-define.rkt b/neerdowell/compile-define.rkt index 64433c1..a8a6992 100644 --- a/neerdowell/compile-define.rkt +++ b/neerdowell/compile-define.rkt @@ -46,7 +46,7 @@ [(cons (Defn f xs e) ds) (let ((fvs (fv (Lam f xs e)))) (seq (Lea rax (symbol->label f)) - (Mov (Offset rbx off) rax) + (Mov (Mem rbx off) rax) (Mov rax rbx) (Add rax off) (Or rax type-proc) diff --git a/neerdowell/compile-expr.rkt b/neerdowell/compile-expr.rkt index 96c8891..f309fd2 100644 --- a/neerdowell/compile-expr.rkt +++ b/neerdowell/compile-expr.rkt @@ -36,11 +36,11 @@ (define (compile-variable x c) (match (lookup x c) [#f (error "unbound variable")] ;(seq (Lea rax (symbol->label x)))] - [i (seq (Mov rax (Offset rsp i)))])) + [i (seq (Mov rax (Mem rsp i)))])) ;; Op (Listof Expr) CEnv -> Asm (define (compile-prim p es c) - (seq (compile-es* es c) + (seq (compile-es* es c) (match p ['make-struct (compile-make-struct (length es))] [_ (compile-op p)]))) @@ -82,10 +82,10 @@ (seq (compile-es (cons e es) c) (move-args (add1 (length es)) (length c)) (Add rsp (* 8 (length c))) - (Mov rax (Offset rsp (* 8 (length es)))) + (Mov rax (Mem rsp (* 8 (length es)))) (assert-proc rax) (Xor rax type-proc) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Jmp rax))) ;; Integer Integer -> Asm @@ -93,8 +93,8 @@ (cond [(zero? off) (seq)] [(zero? i) (seq)] [else - (seq (Mov r8 (Offset rsp (* 8 (sub1 i)))) - (Mov (Offset rsp (* 8 (+ off (sub1 i)))) r8) + (seq (Mov r8 (Mem rsp (* 8 (sub1 i)))) + (Mov (Mem rsp (* 8 (+ off (sub1 i)))) r8) (move-args (sub1 i) off))])) ;; Expr [Listof Expr] CEnv -> Asm @@ -106,10 +106,10 @@ (seq (Lea rax r) (Push rax) (compile-es (cons e es) (cons #f c)) - (Mov rax (Offset rsp i)) + (Mov rax (Mem rsp i)) (assert-proc rax) (Xor rax type-proc) - (Mov rax (Offset rax 0)) ; fetch the code label + (Mov rax (Mem rax 0)) ; fetch the code label (Jmp rax) (Label r)))) @@ -117,7 +117,7 @@ (define (compile-lam f xs e c) (let ((fvs (fv (Lam f xs e)))) (seq (Lea rax (symbol->label f)) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (free-vars-to-heap fvs c 8) (Mov rax rbx) ; return value (Or rax type-proc) @@ -129,8 +129,8 @@ (match fvs ['() (seq)] [(cons x fvs) - (seq (Mov r8 (Offset rsp (lookup x c))) - (Mov (Offset rbx off) r8) + (seq (Mov r8 (Mem rsp (lookup x c))) + (Mov (Mem rbx off) r8) (free-vars-to-heap fvs c (+ off 8)))])) ;; [Listof Lam] -> Asm @@ -148,7 +148,7 @@ [(Lam f xs e) (let ((env (append (reverse fvs) (reverse xs) (list #f)))) (seq (Label (symbol->label f)) - (Mov rax (Offset rsp (* 8 (length xs)))) + (Mov rax (Mem rsp (* 8 (length xs)))) (Xor rax type-proc) (copy-env-to-stack fvs 8) (compile-e e env #t) @@ -161,7 +161,7 @@ (match fvs ['() (seq)] [(cons _ fvs) - (seq (Mov r9 (Offset rax off)) + (seq (Mov r9 (Mem rax off)) (Push r9) (copy-env-to-stack fvs (+ 8 off)))])) @@ -209,7 +209,7 @@ (let ((next (gensym))) (match (compile-pattern p '() next) [(list i cm) - (seq (Mov rax (Offset rsp 0)) ; restore value being matched + (seq (Mov rax (Mem rsp 0)) ; restore value being matched i (compile-e e (append cm c) t?) (Add rsp (* 8 (length cm))) @@ -245,7 +245,7 @@ cm))] [(PSymb s) (let ((ok (gensym))) - (list (seq (Lea r9 (Plus (symbol->data-label s) type-symb)) + (list (seq (Lea r9 (Mem (symbol->data-label s) type-symb)) (Cmp rax r9) (Je ok) (Add rsp (* 8 (length cm))) @@ -268,7 +268,7 @@ (list (seq (Push rax) i1 - (Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm))))) + (Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm))))) i2) cm2)])])] [(PBox p) @@ -284,7 +284,7 @@ (Jmp next) (Label ok) (Xor rax type-box) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) i1) cm1))])] [(PCons p1 p2) @@ -302,11 +302,11 @@ (Jmp next) (Label ok) (Xor rax type-cons) - (Mov r8 (Offset rax 0)) + (Mov r8 (Mem rax 0)) (Push r8) ; push cdr - (Mov rax (Offset rax 8)) ; mov rax car + (Mov rax (Mem rax 8)) ; mov rax car i1 - (Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm))))) + (Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm))))) i2) cm2))])])] [(PStruct n ps) @@ -325,8 +325,8 @@ (Jmp next) (Label ok) (Xor rax type-struct) - (Mov r8 (Offset rax 0)) - (Lea r9 (Plus (symbol->data-label n) type-symb)) + (Mov r8 (Mem rax 0)) + (Lea r9 (Mem (symbol->data-label n) type-symb)) (Cmp r8 r9) (Jne fail) (Push rax) @@ -343,8 +343,8 @@ (match (compile-struct-patterns ps cm1 next (add1 i) cm0-len) [(list is cmn) (list - (seq (Mov rax (Offset rax (* 8 i))) + (seq (Mov rax (Mem rax (* 8 i))) i1 - (Mov rax (Offset rsp (* 8 (- (length cm1) cm0-len)))) + (Mov rax (Mem rsp (* 8 (- (length cm1) cm0-len)))) is) cmn)])])])) diff --git a/neerdowell/compile-ops.rkt b/neerdowell/compile-ops.rkt index 28e3b17..5c492fd 100644 --- a/neerdowell/compile-ops.rkt +++ b/neerdowell/compile-ops.rkt @@ -57,22 +57,22 @@ (Call 'write_byte) unpad-stack)] ['box - (seq (Mov (Offset rbx 0) rax) + (seq (Mov (Mem rbx 0) rax) (Mov rax rbx) (Or rax type-box) (Add rbx 8))] ['unbox (seq (assert-box rax) (Xor rax type-box) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['car (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 8)))] + (Mov rax (Mem rax 8)))] ['cdr (seq (assert-cons rax) (Xor rax type-cons) - (Mov rax (Offset rax 0)))] + (Mov rax (Mem rax 0)))] ['empty? (eq-imm '())] ['box? (type-pred ptr-mask type-box)] @@ -91,7 +91,7 @@ (Xor rax type-vect) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -104,7 +104,7 @@ (Xor rax type-str) (Cmp rax 0) (Je zero) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Sal rax int-shift) (Jmp done) (Label zero) @@ -162,9 +162,9 @@ (Mov rax (value->bits #f)) (Label true))))] ['cons - (seq (Mov (Offset rbx 0) rax) + (seq (Mov (Mem rbx 0) rax) (Pop rax) - (Mov (Offset rbx 8) rax) + (Mov (Mem rbx 8) rax) (Mov rax rbx) (Or rax type-cons) (Add rbx 16))] @@ -184,11 +184,11 @@ (Or r9 type-vect) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Label loop) - (Mov (Offset rbx 0) rax) + (Mov (Mem rbx 0) rax) (Add rbx 8) (Sub r8 1) (Cmp r8 0) @@ -210,14 +210,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 3) (Add r8 rax) - (Mov rax (Offset r8 8)))] + (Mov rax (Mem r8 8)))] ['make-string (let ((loop (gensym)) @@ -233,7 +233,7 @@ (Or r9 type-str) (Sar r8 int-shift) - (Mov (Offset rbx 0) r8) + (Mov (Mem rbx 0) r8) (Add rbx 8) (Sar rax char-shift) @@ -243,7 +243,7 @@ (Sal r8 1) ; len is odd (Label loop) - (Mov (Offset rbx 0) eax) + (Mov (Mem rbx 0) eax) (Add rbx 4) (Sub r8 1) (Cmp r8 0) @@ -265,14 +265,14 @@ (Cmp rax 0) (Jl 'raise_error_align) (Xor r8 type-str) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar rax int-shift) ; rax = index (Sub r9 1) (Cmp r9 rax) (Jl 'raise_error_align) (Sal rax 2) (Add r8 rax) - (Mov 'eax (Offset r8 8)) + (Mov 'eax (Mem r8 8)) (Sal rax char-shift) (Or rax type-char))] @@ -286,7 +286,7 @@ (Cmp r9 type-struct) (Jne f) (Xor rax type-struct) - (Mov rax (Offset rax 0)) + (Mov rax (Mem rax 0)) (Cmp r8 rax) (Mov rax (value->bits #t)) (Jne f) @@ -294,7 +294,7 @@ (Label f) (Mov rax (value->bits #f)) (Label t)))] - + ;; Op3 ['vector-set! (seq (Pop r10) @@ -304,14 +304,14 @@ (Cmp r10 0) (Jl 'raise_error_align) (Xor r8 type-vect) ; r8 = ptr - (Mov r9 (Offset r8 0)) ; r9 = len + (Mov r9 (Mem r8 0)) ; r9 = len (Sar r10 int-shift) ; r10 = index (Sub r9 1) (Cmp r9 r10) (Jl 'raise_error_align) (Sal r10 3) (Add r8 r10) - (Mov (Offset r8 8) rax) + (Mov (Mem r8 8) rax) (Mov rax (value->bits (void))))] ['struct-ref ; symbol, int, struct @@ -320,14 +320,14 @@ (assert-struct rax) ;(assert-integer r8) (Xor rax type-struct) - (Mov r10 (Offset rax 0)) + (Mov r10 (Mem rax 0)) (Cmp 'r11 r10) (Jne 'raise_error_align) (Sar r8 int-shift) (Add r8 1) (Sal r8 3) (Add rax r8) - (Mov rax (Offset rax 0)))])) + (Mov rax (Mem rax 0)))])) ;; Nat -> Asm ;; Emit instructions for creating a structure of length n @@ -342,8 +342,8 @@ ;; Pop elements off stack, writing them to heap (define (compile-make-struct/a n i) (if (= n i) - (seq (Mov (Offset rbx (* 8 (- n i))) rax)) - (seq (Mov (Offset rbx (* 8 (- n i))) rax) + (seq (Mov (Mem rbx (* 8 (- n i))) rax)) + (seq (Mov (Mem rbx (* 8 (- n i))) rax) (Pop rax) (compile-make-struct/a n (add1 i))))) @@ -352,7 +352,7 @@ (define char-array-copy (seq (Mov rdi rbx) ; dst (Mov rsi rax) ; src - (Mov rdx (Offset rax 0)) ; len + (Mov rdx (Mem rax 0)) ; len (Add rdx 1) ; #words = 1 + (len+1)/2 (Sar rdx 1) (Add rdx 1) @@ -363,7 +363,7 @@ unpad-stack ; rbx should be preserved by memcpy ;(Mov rbx rax) ; dst is returned, install as heap pointer - (Add rbx r12))) + (Add rbx r12))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; From 0eb2f20fa94264e5fb9dcc93a1f1fc75e860bfbd Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Mon, 23 Feb 2026 17:01:57 -0500 Subject: [PATCH 2/4] Update iniquity-gc/Makefile to use clang --- iniquity-gc/Makefile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/iniquity-gc/Makefile b/iniquity-gc/Makefile index 595013e..690ca95 100644 --- a/iniquity-gc/Makefile +++ b/iniquity-gc/Makefile @@ -1,9 +1,9 @@ ifeq ($(shell uname), Darwin) - LANGS_CC ?= arch -x86_64 gcc - LANGS_AS ?= nasm -g -f macho64 --gprefix _ + LANGS_CC ?= arch -x86_64 clang + LANGS_AS ?= arch -x86_64 clang -c else - LANGS_CC ?= gcc - LANGS_AS ?= nasm -g -f elf64 + LANGS_CC ?= clang + LANGS_AS ?= clang -c endif objs = \ From 944eae7de2a223a93ea78476818ba80cf94f1446 Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Mon, 23 Feb 2026 17:02:21 -0500 Subject: [PATCH 3/4] Update workflows to try to improve cache performance --- .github/workflows/macos.yml | 16 +++++++++------- .github/workflows/ubuntu.yml | 18 ++++++++++-------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/.github/workflows/macos.yml b/.github/workflows/macos.yml index 29ce138..558a602 100644 --- a/.github/workflows/macos.yml +++ b/.github/workflows/macos.yml @@ -29,21 +29,23 @@ jobs: variant: ${{ matrix.racket-variant }} version: ${{ matrix.racket-version }} + - name: Version info + run: | + uname -a + uname -m + clang --version + gcc --version + - name: Cache Racket packages uses: actions/cache@v4 with: path: | ~/.racket ~/.cache/racket + ~/.local/share/racket + ~/Library/Caches/Racket key: racket-${{ matrix.racket-variant }}-${{ matrix.racket-version }}-${{ matrix.os }} - - name: Version info - run: | - uname -a - uname -m - clang --version - gcc --version - - name: Install langs package run: | raco pkg install --auto ../langs/ diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 5988643..eed0128 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -29,14 +29,6 @@ jobs: variant: ${{ matrix.racket-variant }} version: ${{ matrix.racket-version }} - - name: Cache Racket packages - uses: actions/cache@v4 - with: - path: | - ~/.racket - ~/.cache/racket - key: racket-${{ matrix.racket-variant }}-${{ matrix.racket-version }}-${{ matrix.os }} - - name: Install clang run: | sudo apt install -y clang libssl-dev @@ -46,6 +38,16 @@ jobs: clang --version gcc --version + - name: Cache Racket packages + uses: actions/cache@v4 + with: + path: | + ~/.racket + ~/.cache/racket + ~/.local/share/racket + ~/Library/Caches/Racket + key: racket-${{ matrix.racket-variant }}-${{ matrix.racket-version }}-${{ matrix.os }} + - name: Install langs package run: | raco pkg install --auto ../langs/ From deaa36932cf18e399043b31841a5902000afbec8 Mon Sep 17 00:00:00 2001 From: Pierce Darragh Date: Mon, 23 Feb 2026 17:12:31 -0500 Subject: [PATCH 4/4] Re-omit iniquity-gc tests (needs more investigation) --- info.rkt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/info.rkt b/info.rkt index 5c0fc4b..a0d6704 100644 --- a/info.rkt +++ b/info.rkt @@ -14,4 +14,5 @@ ;; actually care to run Outlaw. ;; To test these, you should do an explicit: raco test -c -(define test-omit-paths (list "outlaw")) +(define test-omit-paths (list "iniquity-gc" + "outlaw"))