From a89d6c82e981fec7d6e4c975e083d2b9e04467ad Mon Sep 17 00:00:00 2001 From: Rose Hogenson Date: Mon, 1 May 2023 07:56:42 -0700 Subject: 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. --- lib/csc/ir2.csc | 217 -------------------------------------------------------- 1 file changed, 217 deletions(-) delete mode 100644 lib/csc/ir2.csc (limited to 'lib/csc/ir2.csc') diff --git a/lib/csc/ir2.csc b/lib/csc/ir2.csc deleted file mode 100644 index 888437f..0000000 --- a/lib/csc/ir2.csc +++ /dev/null @@ -1,217 +0,0 @@ -(define-library (csc ir2) - (export - %apply - %branch - %closure - %fix - %globals - %label - %primitive - %tail - %variable - *globals* - *tail* - apply-arguments - apply-procedure - apply? - branch-atom - branch-false - branch-true - branch? - call-closure-args - call-closure-closure - call-closure? - closure-arguments - closure-body - closure-name - closure-rest - closure? - fix-body - fix-functions - fix? - globals? - label-gensym - label? - make-apply - make-branch - make-call-closure - make-closure - make-fix - make-label - make-primitive - make-variable - primitive-arguments - primitive-continuation - primitive-operation - primitive-results - primitive? - tail? - variable-gensym - variable? - - ; Re-exports from IR1. - %constant - %library-ref - constant-expression - constant? - lexical-ref-gensym - lexical-ref-name - lexical-ref? - lexical-set-expression - lexical-set-ref - lexical-set? - library-ref-library - library-ref-name - library-ref? - make-constant - make-lexical-ref - make-lexical-set - make-library-ref) - (import (scheme base) - (only (csc ir1) - %constant - %library-ref - constant-expression - constant? - lexical-ref-gensym - lexical-ref-name - lexical-ref? - lexical-set-expression - lexical-set-ref - lexical-set? - library-ref-library - library-ref-name - library-ref? - make-constant - make-lexical-ref - make-lexical-set - make-library-ref) - (only (csc list) all) - (only (csc loop) - loop - return) - (only (csc match) - define-match-record-type - match)) - (begin - ; This library defines the intermediate representation IR2. - ; It's CPS time bitch. - - ; CPS atom: - ; An atom is a value that can be computed immediately without - ; any subexpressions. - ; Atoms consist of - ; - constant, - ; - lexical-ref, - ; - library-ref, - ; - or globals. - ; After closure conversion, there are no more lexical refs. - ; Each lexical ref will be converted to a . - - - ; A function argument or local variable. - (define-match-record-type - (make-variable gensym) - variable? - %variable - (gensym variable-gensym)) - - - ; The globals array. This will eventually be stored in register 0. - (define-match-record-type - (make-globals) - globals? - %globals) - - - ; A global instance of . - ; Considered equal to calling (make-globals). - (define *globals* (make-globals)) - - - ; A label, used for function names and will compile to a constant. - (define-match-record-type