From 7389417e392f2417d486753f765db4bd57159884 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Sat, 29 Apr 2017 11:13:50 +0000 Subject: [PATCH] If prim mutates args, ignore ivar if not mutated --- scheme/cyclone/cps-optimizations.sld | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index a629ef5c..2fd9fac7 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -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 '())