From 1f8fb3c20d268037c4655f77daaeaa1c91435f67 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Tue, 7 Feb 2017 18:40:30 +0000 Subject: [PATCH] Issue #172 - Cannot assume that just because a primitive deals with immutable objects that it is safe to inline. A (set!) could still mutate variables the primitive is using, causing invalid behavior. --- scheme/cyclone/cps-optimizations.sld | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index 7ecd420e..18f48c97 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -603,7 +603,11 @@ (cdr exp) (ast:lambda-formals->list (car exp))) (or - (prim-calls-inlinable? (cdr exp)) + ; Issue #172 - Cannot assume that just because a primitive + ; deals with immutable objects that it is safe to inline. + ; A (set!) could still mutate variables the primitive is + ; using, causing invalid behavior. + ;(prim-calls-inlinable? (cdr exp)) (inline-prim-call? (ast:lambda-body (car exp)) (prim-calls->arg-variables (cdr exp))