WIP - emit AST lambda's from closure convert

This commit is contained in:
Justin Ethier 2018-09-06 13:32:01 -04:00
parent bea5644503
commit 8359f7a6f9
2 changed files with 6 additions and 8 deletions

View file

@ -441,15 +441,13 @@
((define? expr) ((define? expr)
;; Global ;; Global
`(define ,(define->var expr) `(define ,(define->var expr)
,@(caddr (closure-convert (define->exp expr) globals *optimization-level*)))) ,@(car (ast:lambda-body (closure-convert (define->exp expr) globals *optimization-level*)))))
((define-c? expr) ((define-c? expr)
expr) expr)
(else (else
(caddr ;; Strip off superfluous lambda (car (ast:lambda-body ;; Strip off superfluous lambda
(closure-convert expr globals *optimization-level*))))) (closure-convert expr globals *optimization-level*))))))
input-program)) input-program))
; (caddr ;; Strip off superfluous lambda
; (closure-convert input-program)))
(trace:info "---------------- after closure-convert:") (trace:info "---------------- after closure-convert:")
(trace:info (ast:ast->pp-sexp input-program)) (trace:info (ast:ast->pp-sexp input-program))

View file

@ -1588,7 +1588,7 @@
(list->lambda-formals (list->lambda-formals
(cons new-self-var (ast:lambda-formals->list exp)) (cons new-self-var (ast:lambda-formals->list exp))
(ast:lambda-formals-type exp)) (ast:lambda-formals-type exp))
(convert (car body) new-self-var new-free-vars) (list (convert (car body) new-self-var new-free-vars))
(ast:lambda-has-cont exp)) (ast:lambda-has-cont exp))
,@(map (lambda (v) ;; TODO: splice here? ,@(map (lambda (v) ;; TODO: splice here?
(cc v)) (cc v))
@ -1659,7 +1659,7 @@
(list->lambda-formals (list->lambda-formals
(cons new-self-var (ast:lambda-formals->list fn)) (cons new-self-var (ast:lambda-formals->list fn))
(ast:lambda-formals-type fn)) (ast:lambda-formals-type fn))
(convert (car body) new-self-var new-free-vars) (list (convert (car body) new-self-var new-free-vars))
(ast:lambda-has-cont fn) (ast:lambda-has-cont fn)
) )
,@(map (lambda (v) (cc v)) ,@(map (lambda (v) (cc v))
@ -1687,7 +1687,7 @@
(ast:make-lambda (ast:make-lambda
(list) (list)
(convert exp #f '()) (list (convert exp #f '()))
#f)) #f))
(define (analyze:find-named-lets exp) (define (analyze:find-named-lets exp)