mirror of
https://github.com/justinethier/cyclone.git
synced 2025-07-16 09:17:35 +02:00
WIP
This commit is contained in:
parent
8cb0dd1b20
commit
bee311de80
1 changed files with 19 additions and 7 deletions
|
@ -1207,17 +1207,17 @@
|
||||||
(define (inline-prim-call? exp scope-sym ivars args)
|
(define (inline-prim-call? exp scope-sym ivars args)
|
||||||
(let ((fast-inline #t)
|
(let ((fast-inline #t)
|
||||||
(cannot-inline #f))
|
(cannot-inline #f))
|
||||||
(for-each
|
;(for-each
|
||||||
(lambda (v)
|
; (lambda (v)
|
||||||
(with-var v (lambda (var)
|
; (with-var v (lambda (var)
|
||||||
(if (adbv:mutated-by-set? var)
|
; (if (adbv:mutated-by-set? var)
|
||||||
(set! cannot-inline #t)))))
|
; (set! cannot-inline #t)))))
|
||||||
args)
|
; args)
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (v)
|
(lambda (v)
|
||||||
(with-var v (lambda (var)
|
(with-var v (lambda (var)
|
||||||
(if (or (member scope-sym (adbv:mutated-indirectly var))
|
(if (or (member scope-sym (adbv:mutated-indirectly var))
|
||||||
(adbv:mutated-by-set? var) ;; TOO restrictive, only matters if set! occurs in body we
|
;(adbv:mutated-by-set? var) ;; TOO restrictive, only matters if set! occurs in body we
|
||||||
) ;; are inlining to. Also, does not catch cases where the
|
) ;; are inlining to. Also, does not catch cases where the
|
||||||
;; var might be mutated by a function call outside this
|
;; var might be mutated by a function call outside this
|
||||||
;; module (but hopefully we already catch that elsewhere).
|
;; module (but hopefully we already catch that elsewhere).
|
||||||
|
@ -1306,6 +1306,18 @@
|
||||||
; (inline-ok? (cadr exp) ivars args arg-used return)
|
; (inline-ok? (cadr exp) ivars args arg-used return)
|
||||||
;)
|
;)
|
||||||
(else
|
(else
|
||||||
|
;(when (ref? (car exp))
|
||||||
|
; (with-var (car exp) (lambda (var)
|
||||||
|
; (when (adbv:defines-lambda-id var)
|
||||||
|
; ;TODO: return #f if any ivars are members of vars-mutated-by-set from the adbf
|
||||||
|
; (with-fnc (adbv:defines-lambda-id var) (lambda (fnc)
|
||||||
|
; (for-each
|
||||||
|
; (lambda (ivar)
|
||||||
|
; (if (member ivar (adbf:vars-mutated-by-set fnc))
|
||||||
|
; (return #f))
|
||||||
|
; )
|
||||||
|
; ivars))))
|
||||||
|
; )))
|
||||||
(for-each
|
(for-each
|
||||||
(lambda (e)
|
(lambda (e)
|
||||||
(inline-ok? e ivars args arg-used return))
|
(inline-ok? e ivars args arg-used return))
|
||||||
|
|
Loading…
Add table
Reference in a new issue