@@ -266,20 +266,19 @@ check:
266266(ex
267267;; Produces (add1 v) if v is an integer value, #f otherwise
268268(define (plus1 v) ;; Value -> Integer | Boolean
269- (bits->value
270- (asm-interp
271- (prog (Global 'entry )
272- (Label 'entry )
273- (Mov 'rax (value->bits v))
274- (Mov 'r9 'rax )
275- (And 'r9 mask-int)
276- (Cmp 'r9 type-int)
277- (Jne 'err )
278- (Add 'rax (value->bits 1 ))
279- (Ret)
280- (Label 'err )
281- (Mov 'rax (value->bits #f ))
282- (Ret)))))
269+ (run
270+ (prog (Global 'entry )
271+ (Label 'entry )
272+ (Mov 'rax (value->bits v))
273+ (Mov 'r9 'rax )
274+ (And 'r9 mask-int)
275+ (Cmp 'r9 type-int)
276+ (Jne 'err )
277+ (Add 'rax (value->bits 1 ))
278+ (Ret)
279+ (Label 'err )
280+ (Mov 'rax (value->bits #f ))
281+ (Ret))))
283282
284283(plus1 0 )
285284(plus1 1 )
@@ -297,8 +296,7 @@ error. The @racket[asm-interp] intercepts these calls are returns the
297296@racket['err ] symbol to match what the interpreter does:
298297
299298@ex[
300- (current-objs '("runtime.o " ))
301- (asm-interp
299+ (run
302300 (prog (Global 'entry )
303301 (Label 'entry )
304302 (Extern 'raise_error )
@@ -311,22 +309,19 @@ error:
311309(ex
312310;; Produces (add1 v) if v is an integer, 'err otherwise
313311(define (plus1 v) ;; Value -> Integer | 'err
314- (match
315- (asm-interp
316- (prog (Global 'entry )
317- (Label 'entry )
318- (Mov 'rax (value->bits v))
319- (Mov 'r9 'rax )
320- (And 'r9 mask-int)
321- (Cmp 'r9 type-int)
322- (Jne 'err )
323- (Add 'rax (value->bits 1 ))
324- (Ret)
325- (Label 'err )
326- (Extern 'raise_error )
327- (Call 'raise_error )))
328- ['err 'err ]
329- [b (bits->value b)]))
312+ (run
313+ (prog (Global 'entry )
314+ (Label 'entry )
315+ (Mov 'rax (value->bits v))
316+ (Mov 'r9 'rax )
317+ (And 'r9 mask-int)
318+ (Cmp 'r9 type-int)
319+ (Jne 'err )
320+ (Add 'rax (value->bits 1 ))
321+ (Ret)
322+ (Label 'err )
323+ (Extern 'raise_error )
324+ (Call 'raise_error ))))
330325
331326(plus1 0 )
332327(plus1 1 )
@@ -423,6 +418,6 @@ totality of the semantics:
423418And again, we can randomly test the compiler by generating programs and inputs:
424419
425420@ex[
426- (require " random.rkt " )
421+ (require extort/ random)
427422(for ((i 100 ))
428423 (check-compiler (random-expr) (random-input)))]
0 commit comments