mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-24 20:45:06 +02:00
Storage for lambda side effects
This commit is contained in:
parent
7389417e39
commit
8ef7060463
1 changed files with 9 additions and 2 deletions
|
@ -52,6 +52,7 @@
|
||||||
adb:function?
|
adb:function?
|
||||||
adbf:simple adbf:set-simple!
|
adbf:simple adbf:set-simple!
|
||||||
adbf:unused-params adbf:set-unused-params!
|
adbf:unused-params adbf:set-unused-params!
|
||||||
|
adbf:side-effects adbf:set-side-effects!
|
||||||
)
|
)
|
||||||
(begin
|
(begin
|
||||||
(define *adb* (make-hash-table))
|
(define *adb* (make-hash-table))
|
||||||
|
@ -115,15 +116,16 @@
|
||||||
(%adb:make-var '? '? #f #f '() #f #f 0 0 #t #f))
|
(%adb:make-var '? '? #f #f '() #f #f 0 0 #t #f))
|
||||||
|
|
||||||
(define-record-type <analysis-db-function>
|
(define-record-type <analysis-db-function>
|
||||||
(%adb:make-fnc simple unused-params assigned-to-var)
|
(%adb:make-fnc simple unused-params assigned-to-var side-effects)
|
||||||
adb:function?
|
adb:function?
|
||||||
(simple adbf:simple adbf:set-simple!)
|
(simple adbf:simple adbf:set-simple!)
|
||||||
(unused-params adbf:unused-params adbf:set-unused-params!)
|
(unused-params adbf:unused-params adbf:set-unused-params!)
|
||||||
(assigned-to-var adbf:assigned-to-var adbf:set-assigned-to-var!)
|
(assigned-to-var adbf:assigned-to-var adbf:set-assigned-to-var!)
|
||||||
|
(side-effects adbf:side-effects adbf:set-side-effects!)
|
||||||
;; TODO: top-level-define ?
|
;; TODO: top-level-define ?
|
||||||
)
|
)
|
||||||
(define (adb:make-fnc)
|
(define (adb:make-fnc)
|
||||||
(%adb:make-fnc '? '? '()))
|
(%adb:make-fnc '? '? '() #f))
|
||||||
|
|
||||||
;; A constant value that cannot be mutated
|
;; A constant value that cannot be mutated
|
||||||
;; A variable only ever assigned to one of these could have all
|
;; A variable only ever assigned to one of these could have all
|
||||||
|
@ -254,6 +256,11 @@
|
||||||
(k #t))))))) ;; Scanned fine, return #t
|
(k #t))))))) ;; Scanned fine, return #t
|
||||||
(else #f)))
|
(else #f)))
|
||||||
|
|
||||||
|
;; Mark each lambda that has side effects.
|
||||||
|
;; For nested lambdas, if a child has side effects also mark the parent
|
||||||
|
;(define (analyze-lambda-side-effects exp lid)
|
||||||
|
|
||||||
|
|
||||||
;; TODO: check app for const/const-value, also (for now) reset them
|
;; TODO: check app for const/const-value, also (for now) reset them
|
||||||
;; if the variable is modified via set/define
|
;; if the variable is modified via set/define
|
||||||
(define (analyze exp lid)
|
(define (analyze exp lid)
|
||||||
|
|
Loading…
Add table
Reference in a new issue