Rewrite side-effecting operations on continuation cfg fields to
authorChris Hanson <org/chris-hanson/cph>
Tue, 16 Dec 1986 23:47:07 +0000 (23:47 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 16 Dec 1986 23:47:07 +0000 (23:47 +0000)
perform side-effects on the sframe rather than the continuation.

v7/src/compiler/base/ctypes.scm

index 586edc14b8eeed1426b6c8a26fc9a4d86f05ce18..238de848344b631d075f7f31ca671d114161495a 100644 (file)
@@ -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)
   (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)