From 1765e4eafcf2dead2a9c8f31402d495cd0a81db0 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 16 Dec 1986 23:47:07 +0000 Subject: [PATCH] Rewrite side-effecting operations on continuation cfg fields to perform side-effects on the sframe rather than the continuation. --- v7/src/compiler/base/ctypes.scm | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/v7/src/compiler/base/ctypes.scm b/v7/src/compiler/base/ctypes.scm index 586edc14b..238de8483 100644 --- a/v7/src/compiler/base/ctypes.scm +++ b/v7/src/compiler/base/ctypes.scm @@ -37,7 +37,7 @@ ;;;; Compiler CFG Datatypes -;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 1.33 1986/12/15 05:26:07 cph Exp $ +;;; $Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 1.34 1986/12/16 23:47:07 cph Exp $ (declare (usual-integrations)) (using-syntax (access compiler-syntax-table compiler-package) @@ -108,13 +108,16 @@ (entry-holder-next (continuation-&entry continuation))) (define-integrable (set-continuation-entry! continuation entry) - (set-continuation-&entry! continuation (node->holder entry))) + (set-entry-holder-next! (continuation-&entry continuation) entry)) (define-integrable (continuation-rtl continuation) (sframe->scfg (continuation-&rtl continuation))) -(define-integrable (set-continuation-rtl! continuation rtl) - (set-continuation-&rtl! continuation (scfg->sframe rtl))) +(define (set-continuation-rtl! continuation rtl) + (let ((sframe (continuation-&rtl continuation))) + (if sframe + (sframe-replace-cfg! sframe rtl) + (set-continuation-&rtl! continuation (scfg->sframe rtl))))) (define-unparser continuation-tag (lambda (continuation) -- 2.25.1