mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-16 09:17:35 +02:00
Indicate compiled closures for closure convert phase
This commit is contained in:
parent
61d0f3396b
commit
cc7a2a5027
1 changed files with 12 additions and 1 deletions
|
@ -345,6 +345,12 @@
|
||||||
(let ((var (adb:get/default sym (adb:make-var))))
|
(let ((var (adb:get/default sym (adb:make-var))))
|
||||||
(fnc var)))
|
(fnc var)))
|
||||||
|
|
||||||
|
;; If var found in adb pass to callback and return result, else return #f
|
||||||
|
(define (if-var sym callback)
|
||||||
|
(let* ((var (adb:get/default sym #f))
|
||||||
|
(result (if var (callback var) #f)))
|
||||||
|
result))
|
||||||
|
|
||||||
(define (with-fnc id callback)
|
(define (with-fnc id callback)
|
||||||
(let ((fnc (adb:get/default id (adb:make-fnc))))
|
(let ((fnc (adb:get/default id (adb:make-fnc))))
|
||||||
(callback fnc)))
|
(callback fnc)))
|
||||||
|
@ -1961,7 +1967,12 @@
|
||||||
((lambda? fn) (error `(Unexpected lambda in closure-convert ,exp)))
|
((lambda? fn) (error `(Unexpected lambda in closure-convert ,exp)))
|
||||||
(else
|
(else
|
||||||
(let ((f (cc fn)))
|
(let ((f (cc fn)))
|
||||||
`((%closure-ref ,f 0)
|
`((%closure-ref ,f 0
|
||||||
|
;; Indicate if closure refers to a compiled continuation
|
||||||
|
,@(if (and (symbol? fn)
|
||||||
|
(if-var fn adbv:cont?))
|
||||||
|
(list #t)
|
||||||
|
(list)))
|
||||||
,f
|
,f
|
||||||
,@args))))))
|
,@args))))))
|
||||||
(else
|
(else
|
||||||
|
|
Loading…
Add table
Reference in a new issue