mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-15 08:47:35 +02:00
Refactoring, set placeholders for future dev
This commit is contained in:
parent
540c5463f6
commit
769ec2ea76
1 changed files with 14 additions and 12 deletions
|
@ -69,9 +69,8 @@
|
||||||
adbv:const-value
|
adbv:const-value
|
||||||
adbv:set-const-value!
|
adbv:set-const-value!
|
||||||
adbv:ref-count
|
adbv:ref-count
|
||||||
adbv:set-ref-count!
|
adbv:set-ref-by-and-count!
|
||||||
adbv:ref-by
|
adbv:ref-by
|
||||||
adbv:set-ref-by!
|
|
||||||
adbv:def-in-loop?
|
adbv:def-in-loop?
|
||||||
adbv:set-def-in-loop!
|
adbv:set-def-in-loop!
|
||||||
adbv:ref-in-loop?
|
adbv:ref-in-loop?
|
||||||
|
@ -173,8 +172,8 @@
|
||||||
(defines-lambda-id adbv:defines-lambda-id adbv:set-defines-lambda-id!)
|
(defines-lambda-id adbv:defines-lambda-id adbv:set-defines-lambda-id!)
|
||||||
(const adbv:const? adbv:set-const!)
|
(const adbv:const? adbv:set-const!)
|
||||||
(const-value adbv:const-value adbv:set-const-value!)
|
(const-value adbv:const-value adbv:set-const-value!)
|
||||||
(ref-count adbv:ref-count adbv:set-ref-count!)
|
(ref-count adbv:ref-count %adbv:set-ref-count!)
|
||||||
(ref-by adbv:ref-by adbv:set-ref-by!)
|
(ref-by adbv:ref-by %adbv:set-ref-by!)
|
||||||
(mutated-by-set adbv:mutated-by-set? adbv:set-mutated-by-set!)
|
(mutated-by-set adbv:mutated-by-set? adbv:set-mutated-by-set!)
|
||||||
;; TODO: need to set reassigned flag if variable is SET, however there is at least
|
;; TODO: need to set reassigned flag if variable is SET, however there is at least
|
||||||
;; one exception for local define's, which are initialized to #f and then assigned
|
;; one exception for local define's, which are initialized to #f and then assigned
|
||||||
|
@ -201,6 +200,12 @@
|
||||||
(self-rec-call adbv:self-rec-call? adbv:set-self-rec-call!)
|
(self-rec-call adbv:self-rec-call? adbv:set-self-rec-call!)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
(define (adbv:set-ref-by-and-count! var lambda-id)
|
||||||
|
(let ((ref-bys (adbv:ref-by var)))
|
||||||
|
;(when (not (member lambda-id ref-bys)) ;; Assume low ref-by count
|
||||||
|
(%adbv:set-ref-count! var (+ 1 (adbv:ref-count var)))
|
||||||
|
(%adbv:set-ref-by! var (cons lambda-id ref-bys)))) ;)
|
||||||
|
|
||||||
(define (adbv-set-assigned-value-helper! sym var value)
|
(define (adbv-set-assigned-value-helper! sym var value)
|
||||||
(define (update-lambda-atv! syms value)
|
(define (update-lambda-atv! syms value)
|
||||||
;(trace:error `(update-lambda-atv! ,syms ,value))
|
;(trace:error `(update-lambda-atv! ,syms ,value))
|
||||||
|
@ -585,15 +590,13 @@
|
||||||
((quote? exp) #f)
|
((quote? exp) #f)
|
||||||
((ref? exp)
|
((ref? exp)
|
||||||
(let ((var (adb:get/default exp (adb:make-var))))
|
(let ((var (adb:get/default exp (adb:make-var))))
|
||||||
(adbv:set-ref-count! var (+ 1 (adbv:ref-count var)))
|
(adbv:set-ref-by-and-count! var lid)
|
||||||
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
|
||||||
))
|
))
|
||||||
((define? exp)
|
((define? exp)
|
||||||
;(let ((var (adb:get/default (define->var exp) (adb:make-var))))
|
;(let ((var (adb:get/default (define->var exp) (adb:make-var))))
|
||||||
(with-var! (define->var exp) (lambda (var)
|
(with-var! (define->var exp) (lambda (var)
|
||||||
(adbv:set-defined-by! var lid)
|
(adbv:set-defined-by! var lid)
|
||||||
(adbv:set-ref-count! var (+ 1 (adbv:ref-count var)))
|
(adbv:set-ref-by-and-count! var lid)
|
||||||
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
|
||||||
(adbv-set-assigned-value-helper! (define->var exp) var (define->exp exp))
|
(adbv-set-assigned-value-helper! (define->var exp) var (define->exp exp))
|
||||||
(adbv:set-const! var #f)
|
(adbv:set-const! var #f)
|
||||||
(adbv:set-const-value! var #f)))
|
(adbv:set-const-value! var #f)))
|
||||||
|
@ -610,8 +613,7 @@
|
||||||
(adbv:set-reassigned! var #t))
|
(adbv:set-reassigned! var #t))
|
||||||
(adbv:set-mutated-by-set! var #t)
|
(adbv:set-mutated-by-set! var #t)
|
||||||
(adbv-set-assigned-value-helper! (set!->var exp) var (set!->exp exp))
|
(adbv-set-assigned-value-helper! (set!->var exp) var (set!->exp exp))
|
||||||
(adbv:set-ref-count! var (+ 1 (adbv:ref-count var)))
|
(adbv:set-ref-by-and-count! var lid)
|
||||||
(adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
|
||||||
(adbv:set-const! var #f)
|
(adbv:set-const! var #f)
|
||||||
(adbv:set-const-value! var #f)))
|
(adbv:set-const-value! var #f)))
|
||||||
(analyze (set!->exp exp) scope-sym lid))
|
(analyze (set!->exp exp) scope-sym lid))
|
||||||
|
@ -702,8 +704,7 @@
|
||||||
;; TODO:
|
;; TODO:
|
||||||
; ((ref? exp)
|
; ((ref? exp)
|
||||||
; (let ((var (adb:get/default exp (adb:make-var))))
|
; (let ((var (adb:get/default exp (adb:make-var))))
|
||||||
; (adbv:set-ref-count! var (+ 1 (adbv:ref-count var)))
|
; (adbv:set-ref-by-and-count! var lid)
|
||||||
; (adbv:set-ref-by! var (cons lid (adbv:ref-by var)))
|
|
||||||
; ))
|
; ))
|
||||||
((define? exp)
|
((define? exp)
|
||||||
;(let ((var (adb:get/default (define->var exp) (adb:make-var))))
|
;(let ((var (adb:get/default (define->var exp) (adb:make-var))))
|
||||||
|
@ -977,6 +978,7 @@
|
||||||
(and
|
(and
|
||||||
arg ;; #f is a special value for init, so do not optimize it for now
|
arg ;; #f is a special value for init, so do not optimize it for now
|
||||||
(or (const? arg)
|
(or (const? arg)
|
||||||
|
;;(ref? arg) ;; DEBUG
|
||||||
(quote? arg))))
|
(quote? arg))))
|
||||||
(cdr exp))
|
(cdr exp))
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue