When dynamic link is in use, it must be pushed even if the
authorChris Hanson <org/chris-hanson/cph>
Thu, 13 Oct 1988 10:34:23 +0000 (10:34 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 13 Oct 1988 10:34:23 +0000 (10:34 +0000)
continuation is always known.

v7/src/compiler/base/contin.scm
v7/src/compiler/rtlgen/rgstmt.scm

index f9b65521bef5dad77991ee9e12d44eba69481cc9..4328f39c2f8afc4cd8dc61b8a30cabdd849da53e 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/contin.scm,v 4.4 1988/08/18 01:34:39 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/contin.scm,v 4.5 1988/10/13 10:34:10 cph Exp $
 
 Copyright (c) 1988 Massachusetts Institute of Technology
 
@@ -109,12 +109,13 @@ MIT in each case. |#
 (define (continuation/frame-size continuation)
   (let ((closing-block (continuation/closing-block continuation)))
     (+ (if (ic-block? closing-block) 1 0)
+       (if (and (stack-block? closing-block)
+               (stack-block/dynamic-link? closing-block))
+          1
+          0)
        (if (continuation/always-known-operator? continuation)
           0
-          (if (and (stack-block? closing-block)
-                   (stack-block/dynamic-link? closing-block))
-              2
-              1)))))
+          1))))
 
 (define (uni-continuation? rvalue)
   (and (rvalue/procedure? rvalue)
index 056cef2263721910f1545b70b7480d6cbd2dcde6..63fa07b19e5fb7b3263d46ca4eb86fdf35b2d607 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgstmt.scm,v 4.5 1988/08/18 01:37:14 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rgstmt.scm,v 4.6 1988/10/13 10:34:23 cph Exp $
 
 Copyright (c) 1988 Massachusetts Institute of Technology
 
@@ -141,19 +141,18 @@ MIT in each case. |#
 (define (generate/continuation-cons block continuation)
   block
   (let ((closing-block (continuation/closing-block continuation)))
-    (scfg*scfg->scfg!
+    (scfg-append!
      (if (ic-block? closing-block)
         (rtl:make-push (rtl:make-fetch register:environment))
         (make-null-cfg))
+     (if (block/dynamic-link? closing-block)
+        (rtl:make-push-link)
+        (make-null-cfg))
      (if (continuation/always-known-operator? continuation)
         (make-null-cfg)
         (begin
           (enqueue-continuation! continuation)
-          (scfg*scfg->scfg!
-           (if (block/dynamic-link? closing-block)
-               (rtl:make-push-link)
-               (make-null-cfg))
-           (rtl:make-push-return (continuation/label continuation))))))))
+          (rtl:make-push-return (continuation/label continuation)))))))
 
 (define (generate/pop pop)
   (rtl:make-pop (continuation*/register (pop-continuation pop))))