From b81426bb210ea5fca6d841e4dfeb38d83e1a6554 Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Sun, 7 Aug 2022 19:42:35 -0700 Subject: Misc test fixup in the compiler. --- lib/csc/cps-test.csc | 12 ++++++------ lib/csc/cps.csc | 4 ++-- lib/csc/encoding.csc | 7 ++++++- lib/csc/ir1.csc | 3 ++- lib/csc/macros.csc | 23 ++++++++++++----------- 5 files changed, 28 insertions(+), 21 deletions(-) (limited to 'lib/csc') diff --git a/lib/csc/cps-test.csc b/lib/csc/cps-test.csc index 7aab023..ab92646 100644 --- a/lib/csc/cps-test.csc +++ b/lib/csc/cps-test.csc @@ -206,7 +206,7 @@ (list (make-closure (test-ref 'generated-symbol) (list (test-ref 'generated-symbol) (test-ref 'generated-symbol)) (make-primitive 'peek (list (test-ref 'generated-symbol) (make-constant 1)) (list (test-ref 'generated-symbol)) - (make-primitive 'intle-bytes w dest) (arg->le-bytes w x)) - (('intle-bytes w dest) (arg->le-bytes w x) (arg->le-bytes w y)) + (('eq dest x y) + (make-opcode w 17 (is-const? x) (is-const? y)) + (arg->le-bytes w dest) + (arg->le-bytes w x) + (arg->le-bytes w y)) (_ (error "invalid opcode" opcode)))) diff --git a/lib/csc/ir1.csc b/lib/csc/ir1.csc index a39c07d..5cc0bf0 100644 --- a/lib/csc/ir1.csc +++ b/lib/csc/ir1.csc @@ -168,7 +168,8 @@ ; - alloc: size -> result ; - peek: pointer * offset -> result ; - poke: word * pointer * offset -> () - ; - int bool + ; - lt: int * int -> bool + ; - eq: obj * obj -> bool ; - call-with-current-continuation: proc -> result ; - call-with-values: producer * consumer -> result ; - apply: proc * args -> result diff --git a/lib/csc/macros.csc b/lib/csc/macros.csc index 4463f91..739f532 100644 --- a/lib/csc/macros.csc +++ b/lib/csc/macros.csc @@ -837,14 +837,15 @@ (set! ident-map (insert ident-map k v))) env) (define environment (make-environment ident-map name)) - (loop for expr in body - for expanded-expr = (expand expr environment) - with res = (make-constant #f) - do (set! res (make-sequence res expanded-expr)) - finally (return res) - if (define-syntax? expanded-expr) - do (set! environment - (add-binding - (define-syntax-name expanded-expr) - (define-syntax-transformer expanded-expr) - environment)))))) + (if (null? body) + (make-constant #f) + (loop for expr in body + for expanded-expr = (expand expr environment) + for res = expanded-expr then (make-sequence res expanded-expr) + finally (return res) + if (define-syntax? expanded-expr) + do (set! environment + (add-binding + (define-syntax-name expanded-expr) + (define-syntax-transformer expanded-expr) + environment))))))) -- cgit v1.3.1