From 37d510a41f0f1eecafb3d8ae8311fb56186ae36c Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 10 Jul 2017 13:26:30 +0000 Subject: [PATCH] Only use Cyc-seq for non-CPSing arguments --- maze-get-set-root.scm | 8 +++++++- scheme/cyclone/cps-optimizations.sld | 9 ++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/maze-get-set-root.scm b/maze-get-set-root.scm index 988f1afe..2538b532 100644 --- a/maze-get-set-root.scm +++ b/maze-get-set-root.scm @@ -17,4 +17,10 @@ r)))));; Then return r. (write - (get-set-root '())) + (get-set-root '( + (a . 1) + (b . 2) + (c . 3) + (d . 4) + (e . 5) + ))) diff --git a/scheme/cyclone/cps-optimizations.sld b/scheme/cyclone/cps-optimizations.sld index 0bbeab0c..85db59b1 100644 --- a/scheme/cyclone/cps-optimizations.sld +++ b/scheme/cyclone/cps-optimizations.sld @@ -1477,7 +1477,14 @@ (with-var (car (lambda-formals->list fn)) (lambda (var) - (zero? (adbv:ref-count var))))) + (zero? (adbv:ref-count var)))) + ;; Non-CPS args + (every + (lambda (x) + (or (not (pair? x)) ;; Should never happen + (and (prim-call? x) + (not (prim:cont? (car x)))))) + args)) `(Cyc-seq ,@args ,@(map cc (lambda->exp fn))))