diff options
| author | Rose Hogenson <rhogenson@posteo.net> | 2023-05-01 07:56:42 -0700 |
|---|---|---|
| committer | Rose Hogenson <rhogenson@posteo.net> | 2023-05-01 07:56:42 -0700 |
| commit | a89d6c82e981fec7d6e4c975e083d2b9e04467ad (patch) | |
| tree | d5445ceb797473dd45ac006c337d990e5dd6f0d4 /lib/csc/codegen-test.csc | |
| parent | Fix bugs with recursive macros and empty template. (diff) | |
| download | chromatopelma-a89d6c82e981fec7d6e4c975e083d2b9e04467ad.tar.zst | |
Rewrite most of the compiler.
This represents a major step back in terms of functionality, and amount
of code. The latter I think constitutes a major win. Next steps are to
reimplement syntax-rules, call/cc, and call-with-values.
Diffstat (limited to 'lib/csc/codegen-test.csc')
| -rw-r--r-- | lib/csc/codegen-test.csc | 132 |
1 files changed, 0 insertions, 132 deletions
diff --git a/lib/csc/codegen-test.csc b/lib/csc/codegen-test.csc deleted file mode 100644 index 752f250..0000000 --- a/lib/csc/codegen-test.csc +++ /dev/null @@ -1,132 +0,0 @@ -(define-library (csc codegen-test) - (import (scheme base) - (only (csc gensym) - gensym) - (only (csc ir2) - *globals* - make-apply - make-branch - make-closure - make-constant - make-fix - make-label - make-library-ref - make-primitive - make-variable) - (only (csc loop) - loop - return) - (only (csc match) - match) - (only (csc testing) - assert-equal - test) - (csc codegen)) - (begin - - - (define (test-var) - (make-variable (gensym))) - - - (define (test-label) - (make-label (gensym))) - - - (test codegen-apply - (define p (test-var)) - (assert-equal - '((peek (local 1) (local 0) (const 5)) - (mov (local 2) (local 1)) - (mov (local 1) (const 10)) - (jmp (local 2)) - (label 0)) - (ir2->ir3 - (make-fix '() - (make-primitive 'peek (list *globals* (make-constant 5)) (list p) - (make-apply p (list (make-constant 10)))))))) - - - (test codegen-call-global - (define p (test-var)) - (assert-equal - '((peek (local 1) (local 0) (global cons (csc based))) - (mov (local 3) (local 1)) - (mov (local 1) (const 5)) - (mov (local 2) (const ())) - (jmp (local 3)) - (label 0)) - (ir2->ir3 - (make-fix '() - (make-primitive 'peek (list *globals* (make-library-ref 'cons '(csc based))) (list p) - (make-apply p (list (make-constant 5) (make-constant '())))))))) - - - (test codegen-call-known - (define f (test-label)) - (define ret (test-var)) - (assert-equal - '((mov (local 1) (label 1)) - (jmp (label 1)) - (label 1) - (mov (local 2) (local 1)) - (jmp (local 2)) - (label 0)) - (ir2->ir3 - (make-fix - (list (make-closure f (list ret) - (make-apply ret (list ret)))) - (make-apply f (list f)))))) - - - (test codegen-permute - (define f (test-label)) - (define g (test-label)) - (define f1 (test-var)) - (define f2 (test-var)) - (define g1 (test-var)) - (define g2 (test-var)) - (define g3 (test-var)) - (assert-equal - '((mov (local 1) (const 0)) - (mov (local 2) (const 1)) - (jmp (label 1)) - (label 1) - (mov (local 255) (local 1)) - (mov (local 1) (local 2)) - (mov (local 2) (local 255)) - (mov (local 3) (const 0)) - (jmp (label 2)) - (label 2) - (mov (local 2) (local 1)) - (mov (local 1) (local 3)) - (jmp (label 1)) - (label 0)) - (ir2->ir3 - (make-fix - (list (make-closure f (list f1 f2) - (make-apply g (list f2 f1 (make-constant 0)))) - (make-closure g (list g1 g2 g3) - (make-apply f (list g3 g1)))) - (make-apply f (list (make-constant 0) (make-constant 1))))))) - - - (test codegen-branch - (define p (test-var)) - (assert-equal - '((peek (local 1) (local 0) (const 1)) - (jmpif (const #t) (label 1)) - (mov (local 2) (local 1)) - (mov (local 1) (const 10)) - (jmp (local 2)) - (label 1) - (mov (local 2) (local 1)) - (mov (local 1) (const 5)) - (jmp (local 2)) - (label 0)) - (ir2->ir3 - (make-fix '() - (make-primitive 'peek (list *globals* (make-constant 1)) (list p) - (make-branch (make-constant #t) - (make-apply p (list (make-constant 5))) - (make-apply p (list (make-constant 10))))))))))) |
