mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-24 04:25:06 +02:00
WIP, added TODO's
This commit is contained in:
parent
5df8fd92ed
commit
32c8ad1949
1 changed files with 16 additions and 7 deletions
|
@ -893,6 +893,7 @@
|
||||||
(c:body cargs)
|
(c:body cargs)
|
||||||
");")))
|
");")))
|
||||||
(else
|
(else
|
||||||
|
TODO: need to handle well-known functions:
|
||||||
(set-c-call-arity! (c:num-args cargs))
|
(set-c-call-arity! (c:num-args cargs))
|
||||||
(c-code
|
(c-code
|
||||||
(string-append
|
(string-append
|
||||||
|
@ -923,8 +924,11 @@
|
||||||
");")))
|
");")))
|
||||||
(else ;; CPS, IE normal behavior
|
(else ;; CPS, IE normal behavior
|
||||||
(set-c-call-arity! num-cargs)
|
(set-c-call-arity! num-cargs)
|
||||||
|
TODO: see corresponding code in %closure-ref that outputs return_closcall.
|
||||||
|
need to use (well-known-lambda) to check the ref to see if it is a WKL.
|
||||||
|
if so, lookup ast and use cgen-id to map back to emit the lambda_gc_ret there
|
||||||
(with-fnc (ast:lambda-id (closure->lam fun)) (lambda (fnc)
|
(with-fnc (ast:lambda-id (closure->lam fun)) (lambda (fnc)
|
||||||
(if (and #f
|
(if (and ;#f
|
||||||
(adbf:well-known fnc)
|
(adbf:well-known fnc)
|
||||||
(equal? (adbf:closure-size fnc) 1))
|
(equal? (adbf:closure-size fnc) 1))
|
||||||
(let* ((lid (adbf:cgen-id fnc))
|
(let* ((lid (adbf:cgen-id fnc))
|
||||||
|
@ -1226,9 +1230,9 @@
|
||||||
(with-fnc ast-id (lambda (fnc)
|
(with-fnc ast-id (lambda (fnc)
|
||||||
(trace:info `(c-compile-closure-element-ref ,ast-id ,var ,idx ,fnc))
|
(trace:info `(c-compile-closure-element-ref ,ast-id ,var ,idx ,fnc))
|
||||||
(cond
|
(cond
|
||||||
((and #f
|
((and ;#f
|
||||||
(adbf:well-known fnc)
|
(adbf:well-known fnc)
|
||||||
(pair? (adbf:all-params fnc))
|
;(pair? (adbf:all-params fnc))
|
||||||
(equal? (adbf:closure-size fnc) 1))
|
(equal? (adbf:closure-size fnc) 1))
|
||||||
(mangle (car (adbf:all-params fnc))))
|
(mangle (car (adbf:all-params fnc))))
|
||||||
(else
|
(else
|
||||||
|
@ -1268,9 +1272,9 @@
|
||||||
(lid (allocate-lambda lam (c-compile-lambda lam trace cps?) cps?))
|
(lid (allocate-lambda lam (c-compile-lambda lam trace cps?) cps?))
|
||||||
(use-obj-instead-of-closure?
|
(use-obj-instead-of-closure?
|
||||||
(with-fnc (ast:lambda-id lam) (lambda (fnc)
|
(with-fnc (ast:lambda-id lam) (lambda (fnc)
|
||||||
(and #f
|
(and ;#f
|
||||||
(adbf:well-known fnc) ;; Only optimize well-known functions
|
(adbf:well-known fnc) ;; Only optimize well-known functions
|
||||||
(equal? (length free-vars) 1) ;; Sanity check
|
;(equal? (length free-vars) 1) ;; Sanity check
|
||||||
(equal? (adbf:closure-size fnc) 1) ;; From closure conv
|
(equal? (adbf:closure-size fnc) 1) ;; From closure conv
|
||||||
))))
|
))))
|
||||||
(macro? (assoc (st:->var trace) (get-macros)))
|
(macro? (assoc (st:->var trace) (get-macros)))
|
||||||
|
@ -1628,10 +1632,15 @@
|
||||||
(let ((ast (caddr l)))
|
(let ((ast (caddr l)))
|
||||||
(when (ast:lambda? ast)
|
(when (ast:lambda? ast)
|
||||||
(with-fnc (ast:lambda-id ast) (lambda (fnc)
|
(with-fnc (ast:lambda-id ast) (lambda (fnc)
|
||||||
(when (and #f
|
;;(when (and
|
||||||
|
;; (adbf:well-known fnc)
|
||||||
|
;; (equal? (adbf:closure-size fnc) 1))
|
||||||
|
;; (trace:error `(JAE ,(car l) ,l ,fnc)))
|
||||||
|
|
||||||
|
(when (and ;#f
|
||||||
(adbf:well-known fnc)
|
(adbf:well-known fnc)
|
||||||
(equal? (adbf:closure-size fnc) 1))
|
(equal? (adbf:closure-size fnc) 1))
|
||||||
;(trace:error `(JAE ,l ,fnc))
|
;(trace:error `(JAE ,(car l) ,l ,fnc))
|
||||||
(let* ((params-str (cdadr l))
|
(let* ((params-str (cdadr l))
|
||||||
(args-str
|
(args-str
|
||||||
(string-join
|
(string-join
|
||||||
|
|
Loading…
Add table
Reference in a new issue