From: Chris Hanson Date: Fri, 24 Apr 1987 14:15:53 +0000 (+0000) Subject: Change state implementation so that register quantities are allocated X-Git-Tag: 20090517-FFI~13588 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=829fc9d7d3877fe51bbd8b97b63f9401ffbc0dc9;p=mit-scheme.git Change state implementation so that register quantities are allocated on demand. --- diff --git a/v7/src/compiler/rtlopt/rcse1.scm b/v7/src/compiler/rtlopt/rcse1.scm index ba8646118..200e70564 100644 --- a/v7/src/compiler/rtlopt/rcse1.scm +++ b/v7/src/compiler/rtlopt/rcse1.scm @@ -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 diff --git a/v7/src/compiler/rtlopt/rcseep.scm b/v7/src/compiler/rtlopt/rcseep.scm index e480eb028..581664251 100644 --- a/v7/src/compiler/rtlopt/rcseep.scm +++ b/v7/src/compiler/rtlopt/rcseep.scm @@ -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)))))) diff --git a/v7/src/compiler/rtlopt/rcserq.scm b/v7/src/compiler/rtlopt/rcserq.scm index 84d960f3f..57dcc1aeb 100644 --- a/v7/src/compiler/rtlopt/rcserq.scm +++ b/v7/src/compiler/rtlopt/rcserq.scm @@ -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)