#| -*-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
(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
(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)
(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))))))
(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
#| -*-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
(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))))))
#| -*-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
(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)