Skip to content

Commit 17bfacd

Browse files
committed
Replace [Offset] with [Mem]; re-enable tests
Update due to cmsc430/a86@d85206a. With the update, mug, mountebank, and neerdowell now pass.
1 parent 43d9850 commit 17bfacd

14 files changed

Lines changed: 167 additions & 171 deletions

info.rkt

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,4 @@
1414
;; actually care to run Outlaw.
1515

1616
;; To test these, you should do an explicit: raco test -c <lang>
17-
(define test-omit-paths (list "iniquity-gc"
18-
"mountebank"
19-
;; "mug" ;; NOTE: seems to pass currently
20-
"neerdowell"
21-
"outlaw"))
17+
(define test-omit-paths (list "outlaw"))

iniquity-gc/compile-ops.rkt

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -79,22 +79,22 @@
7979
(seq (Push rax)
8080
(allocate 1)
8181
(Pop rax)
82-
(Mov (Offset rbx 0) rax)
82+
(Mov (Mem rbx 0) rax)
8383
(Mov rax rbx)
8484
(Or rax type-box)
8585
(Add rbx 8))]
8686
['unbox
8787
(seq (assert-box rax)
8888
(Xor rax type-box)
89-
(Mov rax (Offset rax 0)))]
89+
(Mov rax (Mem rax 0)))]
9090
['car
9191
(seq (assert-cons rax)
9292
(Xor rax type-cons)
93-
(Mov rax (Offset rax 8)))]
93+
(Mov rax (Mem rax 8)))]
9494
['cdr
9595
(seq (assert-cons rax)
9696
(Xor rax type-cons)
97-
(Mov rax (Offset rax 0)))]
97+
(Mov rax (Mem rax 0)))]
9898
['empty? (eq-imm '())]
9999
['box?
100100
(type-pred ptr-mask type-box)]
@@ -111,7 +111,7 @@
111111
(Xor rax type-vect)
112112
(Cmp rax 0)
113113
(Je zero)
114-
(Mov rax (Offset rax 0))
114+
(Mov rax (Mem rax 0))
115115
(Sal rax int-shift)
116116
(Jmp done)
117117
(Label zero)
@@ -124,7 +124,7 @@
124124
(Xor rax type-str)
125125
(Cmp rax 0)
126126
(Je zero)
127-
(Mov rax (Offset rax 0))
127+
(Mov rax (Mem rax 0))
128128
(Sal rax int-shift)
129129
(Jmp done)
130130
(Label zero)
@@ -181,9 +181,9 @@
181181
(seq (Push rax)
182182
(allocate 2)
183183
(Pop rax)
184-
(Mov (Offset rbx 0) rax)
184+
(Mov (Mem rbx 0) rax)
185185
(Pop rax)
186-
(Mov (Offset rbx 8) rax)
186+
(Mov (Mem rbx 8) rax)
187187
(Mov rax rbx)
188188
(Or rax type-cons)
189189
(Add rbx 16))]
@@ -212,11 +212,11 @@
212212
(Or r9 type-vect)
213213

214214
(Sar r8 int-shift)
215-
(Mov (Offset rbx 0) r8)
215+
(Mov (Mem rbx 0) r8)
216216
(Add rbx 8)
217217

218218
(Label loop)
219-
(Mov (Offset rbx 0) rax)
219+
(Mov (Mem rbx 0) rax)
220220
(Add rbx 8)
221221
(Sub r8 1)
222222
(Cmp r8 0)
@@ -235,14 +235,14 @@
235235
(Cmp rax 0)
236236
(Jl 'raise_error_align)
237237
(Xor r8 type-vect) ; r8 = ptr
238-
(Mov r9 (Offset r8 0)) ; r9 = len
238+
(Mov r9 (Mem r8 0)) ; r9 = len
239239
(Sar rax int-shift) ; rax = index
240240
(Sub r9 1)
241241
(Cmp r9 rax)
242242
(Jl 'raise_error_align)
243243
(Sal rax 3)
244244
(Add r8 rax)
245-
(Mov rax (Offset r8 8)))]
245+
(Mov rax (Mem r8 8)))]
246246

247247
['make-string
248248
(let ((loop (gensym))
@@ -269,7 +269,7 @@
269269
(Or r9 type-str)
270270

271271
(Sar r8 int-shift)
272-
(Mov (Offset rbx 0) r8)
272+
(Mov (Mem rbx 0) r8)
273273
(Add rbx 8)
274274

275275
(Sar rax char-shift)
@@ -279,7 +279,7 @@
279279
(Sal r8 1) ; len is odd
280280

281281
(Label loop)
282-
(Mov (Offset rbx 0) eax)
282+
(Mov (Mem rbx 0) eax)
283283
(Add rbx 4)
284284
(Sub r8 1)
285285
(Cmp r8 0)
@@ -300,22 +300,22 @@
300300
(Cmp rax 0)
301301
(Jl 'raise_error_align)
302302
(Xor r8 type-str) ; r8 = ptr
303-
(Mov r9 (Offset r8 0)) ; r9 = len
303+
(Mov r9 (Mem r8 0)) ; r9 = len
304304
(Sar rax int-shift) ; rax = index
305305
(Sub r9 1)
306306
(Cmp r9 rax)
307307
(Jl 'raise_error_align)
308308
(Sal rax 2)
309309
(Add r8 rax)
310-
(Mov 'eax (Offset r8 8))
310+
(Mov 'eax (Mem r8 8))
311311
(Sal rax char-shift)
312312
(Or rax type-char))]
313313

314314
['set-box!
315315
(seq (Pop r8)
316316
(assert-box r8)
317317
(Xor r8 type-box)
318-
(Mov (Offset r8 0) rax)
318+
(Mov (Mem r8 0) rax)
319319
(Mov rax (value->bits (void))))]))
320320

321321
;; Op3 -> Asm
@@ -329,14 +329,14 @@
329329
(Cmp r10 0)
330330
(Jl 'raise_error_align)
331331
(Xor r8 type-vect) ; r8 = ptr
332-
(Mov r9 (Offset r8 0)) ; r9 = len
332+
(Mov r9 (Mem r8 0)) ; r9 = len
333333
(Sar r10 int-shift) ; r10 = index
334334
(Sub r9 1)
335335
(Cmp r9 r10)
336336
(Jl 'raise_error_align)
337337
(Sal r10 3)
338338
(Add r8 r10)
339-
(Mov (Offset r8 8) rax)
339+
(Mov (Mem r8 8) rax)
340340
(Mov rax (value->bits (void))))]))
341341

342342

iniquity-gc/compile.rkt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
;; Prog -> Asm
1414
(define (compile p)
1515
(match p
16-
[(Prog ds e)
16+
[(Prog ds e)
1717
(prog (externs)
1818
(Global 'entry)
1919
(Label 'entry)
@@ -82,7 +82,7 @@
8282
;; Id CEnv -> Asm
8383
(define (compile-variable x c)
8484
(let ((i (lookup x c)))
85-
(seq (Mov rax (Offset rsp i)))))
85+
(seq (Mov rax (Mem rsp i)))))
8686

8787
;; String -> Asm
8888
(define (compile-string s)
@@ -91,7 +91,7 @@
9191
(seq (Mov rax type-str))
9292
(seq (allocate (add1 (quotient (add1 len) 2)))
9393
(Mov rax len)
94-
(Mov (Offset rbx 0) rax)
94+
(Mov (Mem rbx 0) rax)
9595
(compile-string-chars (string->list s) 8)
9696
(Mov rax rbx)
9797
(Or rax type-str)
@@ -104,7 +104,7 @@
104104
['() (seq)]
105105
[(cons c cs)
106106
(seq (Mov rax (char->integer c))
107-
(Mov (Offset rbx i) 'eax)
107+
(Mov (Mem rbx i) 'eax)
108108
(compile-string-chars cs (+ 4 i)))]))
109109

110110
;; Op0 CEnv -> Asm

mountebank/compile-datum.rkt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
[else (compile-atom d)]))
1717

1818
(define (load-symbol s)
19-
(Plus (symbol->data-label s) type-symb))
19+
(Mem (symbol->data-label s) type-symb))
2020

2121
(define (load-string s)
22-
(Plus (symbol->data-label (string->symbol s)) type-str))
22+
(Mem (symbol->data-label (string->symbol s)) type-str))
2323

2424
;; Value -> Asm
2525
(define (compile-atom v)
@@ -55,7 +55,7 @@
5555
(match (compile-quoted c)
5656
[(cons l1 is1)
5757
(let ((l (gensym 'box)))
58-
(cons (Plus l type-box)
58+
(cons (Mem l type-box)
5959
(seq (Label l)
6060
(Dq l1)
6161
is1)))]))
@@ -67,7 +67,7 @@
6767
(match (compile-quoted c2)
6868
[(cons l2 is2)
6969
(let ((l (gensym 'cons)))
70-
(cons (Plus l type-cons)
70+
(cons (Mem l type-cons)
7171
(seq (Label l)
7272
(Dq l2)
7373
(Dq l1)
@@ -81,7 +81,7 @@
8181
[_
8282
(let ((l (gensym 'vector))
8383
(cds (map compile-quoted ds)))
84-
(cons (Plus l type-vect)
84+
(cons (Mem l type-vect)
8585
(seq (Label l)
8686
(Dq (length ds))
8787
(map (λ (cd) (Dq (car cd))) cds)

mountebank/compile-define.rkt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
[(cons (Defn f xs e) ds)
4747
(let ((fvs (fv (Lam f xs e))))
4848
(seq (Lea rax (symbol->label f))
49-
(Mov (Offset rbx off) rax)
49+
(Mov (Mem rbx off) rax)
5050
(Mov rax rbx)
5151
(Add rax off)
5252
(Or rax type-proc)

mountebank/compile-expr.rkt

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
(define (compile-variable x c)
4040
(match (lookup x c)
4141
[#f (error "unbound variable")] ;(seq (Lea rax (symbol->label x)))]
42-
[i (seq (Mov rax (Offset rsp i)))]))
42+
[i (seq (Mov rax (Mem rsp i)))]))
4343

4444
;; Op0 CEnv -> Asm
4545
(define (compile-prim0 p c)
@@ -103,19 +103,19 @@
103103
(seq (compile-es (cons e es) c)
104104
(move-args (add1 (length es)) (length c))
105105
(Add rsp (* 8 (length c)))
106-
(Mov rax (Offset rsp (* 8 (length es))))
106+
(Mov rax (Mem rsp (* 8 (length es))))
107107
(assert-proc rax)
108108
(Xor rax type-proc)
109-
(Mov rax (Offset rax 0))
109+
(Mov rax (Mem rax 0))
110110
(Jmp rax)))
111111

112112
;; Integer Integer -> Asm
113113
(define (move-args i off)
114114
(cond [(zero? off) (seq)]
115115
[(zero? i) (seq)]
116116
[else
117-
(seq (Mov r8 (Offset rsp (* 8 (sub1 i))))
118-
(Mov (Offset rsp (* 8 (+ off (sub1 i)))) r8)
117+
(seq (Mov r8 (Mem rsp (* 8 (sub1 i))))
118+
(Mov (Mem rsp (* 8 (+ off (sub1 i)))) r8)
119119
(move-args (sub1 i) off))]))
120120

121121
;; Expr [Listof Expr] CEnv -> Asm
@@ -127,18 +127,18 @@
127127
(seq (Lea rax r)
128128
(Push rax)
129129
(compile-es (cons e es) (cons #f c))
130-
(Mov rax (Offset rsp i))
130+
(Mov rax (Mem rsp i))
131131
(assert-proc rax)
132132
(Xor rax type-proc)
133-
(Mov rax (Offset rax 0)) ; fetch the code label
133+
(Mov rax (Mem rax 0)) ; fetch the code label
134134
(Jmp rax)
135135
(Label r))))
136136

137137
;; Id [Listof Id] Expr CEnv -> Asm
138138
(define (compile-lam f xs e c)
139139
(let ((fvs (fv (Lam f xs e))))
140140
(seq (Lea rax (symbol->label f))
141-
(Mov (Offset rbx 0) rax)
141+
(Mov (Mem rbx 0) rax)
142142
(free-vars-to-heap fvs c 8)
143143
(Mov rax rbx) ; return value
144144
(Or rax type-proc)
@@ -150,8 +150,8 @@
150150
(match fvs
151151
['() (seq)]
152152
[(cons x fvs)
153-
(seq (Mov r8 (Offset rsp (lookup x c)))
154-
(Mov (Offset rbx off) r8)
153+
(seq (Mov r8 (Mem rsp (lookup x c)))
154+
(Mov (Mem rbx off) r8)
155155
(free-vars-to-heap fvs c (+ off 8)))]))
156156

157157
;; [Listof Lam] -> Asm
@@ -169,7 +169,7 @@
169169
[(Lam f xs e)
170170
(let ((env (append (reverse fvs) (reverse xs) (list #f))))
171171
(seq (Label (symbol->label f))
172-
(Mov rax (Offset rsp (* 8 (length xs))))
172+
(Mov rax (Mem rsp (* 8 (length xs))))
173173
(Xor rax type-proc)
174174
(copy-env-to-stack fvs 8)
175175
(compile-e e env #t)
@@ -182,7 +182,7 @@
182182
(match fvs
183183
['() (seq)]
184184
[(cons _ fvs)
185-
(seq (Mov r9 (Offset rax off))
185+
(seq (Mov r9 (Mem rax off))
186186
(Push r9)
187187
(copy-env-to-stack fvs (+ 8 off)))]))
188188

@@ -218,7 +218,7 @@
218218
(let ((next (gensym)))
219219
(match (compile-pattern p '() next)
220220
[(list i cm)
221-
(seq (Mov rax (Offset rsp 0)) ; restore value being matched
221+
(seq (Mov rax (Mem rsp 0)) ; restore value being matched
222222
i
223223
(compile-e e (append cm c) t?)
224224
(Add rsp (* 8 (length cm)))
@@ -254,7 +254,7 @@
254254
cm))]
255255
[(PSymb s)
256256
(let ((ok (gensym)))
257-
(list (seq (Lea r9 (Plus (symbol->data-label s) type-symb))
257+
(list (seq (Lea r9 (Mem (symbol->data-label s) type-symb))
258258
(Cmp rax r9)
259259
(Je ok)
260260
(Add rsp (* 8 (length cm)))
@@ -277,7 +277,7 @@
277277
(list
278278
(seq (Push rax)
279279
i1
280-
(Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm)))))
280+
(Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm)))))
281281
i2)
282282
cm2)])])]
283283
[(PBox p)
@@ -293,7 +293,7 @@
293293
(Jmp next)
294294
(Label ok)
295295
(Xor rax type-box)
296-
(Mov rax (Offset rax 0))
296+
(Mov rax (Mem rax 0))
297297
i1)
298298
cm1))])]
299299
[(PCons p1 p2)
@@ -311,10 +311,10 @@
311311
(Jmp next)
312312
(Label ok)
313313
(Xor rax type-cons)
314-
(Mov r8 (Offset rax 0))
314+
(Mov r8 (Mem rax 0))
315315
(Push r8) ; push cdr
316-
(Mov rax (Offset rax 8)) ; mov rax car
316+
(Mov rax (Mem rax 8)) ; mov rax car
317317
i1
318-
(Mov rax (Offset rsp (* 8 (- (sub1 (length cm1)) (length cm)))))
318+
(Mov rax (Mem rsp (* 8 (- (sub1 (length cm1)) (length cm)))))
319319
i2)
320320
cm2))])])]))

0 commit comments

Comments
 (0)