If prim mutates args, ignore ivar if not mutated

This commit is contained in:
Justin Ethier 2017-04-29 11:13:50 +00:00
parent 79cde357b1
commit 7389417e39

View file

@ -959,17 +959,17 @@
(analyze:find-inlinable-vars e args)))
(cdr exp)))
;(reverse (cdr exp))))
;; If primitive mutates its args, ignore if ivar is not mutated (??)
;((and (prim? (car exp))
; (prim:mutates? (car exp))
; (> (length exp) 1))
; (analyze:find-inlinable-vars (cadr exp) args)
; ;; First param is always mutated
; (for-each
; (lambda (e)
; (if (not (ref? e))
; (analyze:find-inlinable-vars e args)))
; (cddr exp)))
;; If primitive mutates its args, ignore ivar if it is not mutated
((and (prim? (car exp))
(prim:mutates? (car exp))
(> (length exp) 1))
(analyze:find-inlinable-vars (cadr exp) args)
;; First param is always mutated
(for-each
(lambda (e)
(if (not (ref? e))
(analyze:find-inlinable-vars e args)))
(cddr exp)))
((and (not (prim? (car exp)))
(ref? (car exp)))
(define ref-formals '())