Change state implementation so that register quantities are allocated
authorChris Hanson <org/chris-hanson/cph>
Fri, 24 Apr 1987 14:15:53 +0000 (14:15 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 24 Apr 1987 14:15:53 +0000 (14:15 +0000)
on demand.

v7/src/compiler/rtlopt/rcse1.scm
v7/src/compiler/rtlopt/rcseep.scm
v7/src/compiler/rtlopt/rcserq.scm

index ba8646118e9ebbce9985ead43ae69eb24576bb25..200e70564515cd477df145a64b43bc2d2a18576a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 1.101 1987/04/12 00:22:23 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcse1.scm,v 1.102 1987/04/24 14:13:51 cph Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -335,7 +335,7 @@ MIT in each case. |#
   (cond ((rtl:register? expression)
         (or (register-expression
              (quantity-first-register
-              (register-quantity (rtl:register-number expression))))
+              (get-register-quantity (rtl:register-number expression))))
             expression))
        ((stack-reference? expression)
         (let ((register
@@ -385,7 +385,7 @@ MIT in each case. |#
 (define (register-invalidate! register)
   (let ((next (register-next-equivalent register))
        (previous (register-previous-equivalent register))
-       (quantity (register-quantity register)))
+       (quantity (get-register-quantity register)))
     (set-register-tick! register (1+ (register-tick register)))
     (if next
        (set-register-previous-equivalent! next previous)
@@ -422,7 +422,7 @@ MIT in each case. |#
        (let ((expression (element-expression class)))
          (cond ((rtl:register? expression)
                 (register-equivalence!
-                 (register-quantity (rtl:register-number expression))))
+                 (get-register-quantity (rtl:register-number expression))))
                ((stack-reference? expression)
                 (register-equivalence!
                  (stack-reference-quantity expression))))))
@@ -523,7 +523,7 @@ MIT in each case. |#
           (case type
             ((REGISTER)
              (quantity-number
-              (register-quantity (rtl:register-number expression))))
+              (get-register-quantity (rtl:register-number expression))))
             ((OFFSET)
              ;; Note that stack-references do not get treated as
              ;; memory for purposes of invalidation.  This is because
index e480eb0285f60cf89294f8c6ae82e43affcb8dd4..581664251b4c4a9bb9daea7d67818c53dcdb6f94 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcseep.scm,v 1.2 1987/03/20 05:12:44 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcseep.scm,v 1.3 1987/04/24 14:15:37 cph Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -60,7 +60,7 @@ MIT in each case. |#
   (define (register-equivalent? x y)
     (let ((x (rtl:register-number x))
          (y (rtl:register-number y)))
-      (and (eq? (register-quantity x) (register-quantity y))
+      (and (eq? (get-register-quantity x) (get-register-quantity y))
           (or (not validate?)
               (= (register-in-table y) (register-tick y))))))
 
index 84d960f3fc703c8cf54ae10f002a4bc8ad99c0ba..57dcc1aeba8ca5ea1a8a0b11b61640d2b79568bd 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcserq.scm,v 1.1 1987/03/19 00:49:07 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlopt/rcserq.scm,v 1.2 1987/04/24 14:15:53 cph Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -59,6 +59,12 @@ MIT in each case. |#
                 (quantity-first-register quantity)
                 (quantity-last-register quantity)))
 
+(define (get-register-quantity register)
+  (or (register-quantity register)
+      (let ((quantity (new-quantity register)))
+       (set-register-quantity! register quantity)
+       quantity)))
+
 (define-register-references quantity)
 (define-register-references next-equivalent)
 (define-register-references previous-equivalent)