Change the analysis performed to determine whether a variable has been
authorChris Hanson <org/chris-hanson/cph>
Sat, 18 Apr 1987 00:22:35 +0000 (00:22 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 18 Apr 1987 00:22:35 +0000 (00:22 +0000)
assigned.  Do not treat auxiliary bindings specially, except those
that have been identified as having constant or procedure values.

This unfortunately produces less efficient code, but guarantees that
there will be no troubles with the order of events when creating
closures.

v7/src/compiler/base/ctypes.scm

index 746ddefe2e62ca12c4842429b2ed81727c33b2ba..12cbcbe796efe6b7fac97dbe3b015deba99af345 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 1.42 1987/03/19 23:11:10 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/base/ctypes.scm,v 1.43 1987/04/18 00:22:35 cph Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -41,7 +41,7 @@ MIT in each case. |#
 (define (make-assignment block lvalue rvalue)
   (vnode-connect! lvalue rvalue)
   (if (variable? lvalue)
-      (set-variable-assignments! lvalue (1+ (variable-assignments lvalue))))
+      (variable-assigned! lvalue))
   (snode->scfg (make-snode assignment-tag block lvalue rvalue)))
 
 (define-snode definition block lvalue rvalue)
@@ -49,7 +49,7 @@ MIT in each case. |#
 (define (make-definition block lvalue rvalue)
   (vnode-connect! lvalue rvalue)
   (if (variable? lvalue)
-      (set-variable-assignments! lvalue (1+ (variable-assignments lvalue))))
+      (variable-assigned! lvalue))
   (snode->scfg (make-snode definition-tag block lvalue rvalue)))
 
 (define-pnode true-test rvalue)