Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 9 additions & 7 deletions .github/workflows/macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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/
Expand Down
18 changes: 10 additions & 8 deletions .github/workflows/ubuntu.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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/
Expand Down
3 changes: 0 additions & 3 deletions info.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,4 @@

;; To test these, you should do an explicit: raco test -c <lang>
(define test-omit-paths (list "iniquity-gc"
"mountebank"
;; "mug" ;; NOTE: seems to pass currently
"neerdowell"
"outlaw"))
8 changes: 4 additions & 4 deletions iniquity-gc/Makefile
Original file line number Diff line number Diff line change
@@ -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 = \
Expand Down
38 changes: 19 additions & 19 deletions iniquity-gc/compile-ops.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand All @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -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))]
Expand Down Expand Up @@ -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)
Expand All @@ -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))
Expand All @@ -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)
Expand All @@ -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)
Expand All @@ -300,22 +300,22 @@
(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))]

['set-box!
(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
Expand All @@ -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))))]))


Expand Down
8 changes: 4 additions & 4 deletions iniquity-gc/compile.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
;; Prog -> Asm
(define (compile p)
(match p
[(Prog ds e)
[(Prog ds e)
(prog (externs)
(Global 'entry)
(Label 'entry)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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
Expand Down
10 changes: 5 additions & 5 deletions mountebank/compile-datum.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)))]))
Expand All @@ -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)
Expand All @@ -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)
Expand Down
2 changes: 1 addition & 1 deletion mountebank/compile-define.rkt
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
Loading