Split `machine-register-reference' to create new procedure
authorChris Hanson <org/chris-hanson/cph>
Tue, 5 Dec 1989 20:38:22 +0000 (20:38 +0000)
committerChris Hanson <org/chris-hanson/cph>
Tue, 5 Dec 1989 20:38:22 +0000 (20:38 +0000)
`guarantee-alias-register!'.  This new procedure is like
`load-alias-register!' except that it accepts a machine register as an
argument and handles it appropriately.

v7/src/compiler/back/lapgn2.scm

index fe979b1f99b62d089092360c5401e0a2dffa1587..d025370d19e7bf89eba30e40b8abc8cb84211a0b 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn2.scm,v 1.12 1989/12/04 15:34:40 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/back/lapgn2.scm,v 1.13 1989/12/05 20:38:22 cph Exp $
 
 Copyright (c) 1987, 1988, 1989 Massachusetts Institute of Technology
 
@@ -302,18 +302,19 @@ MIT in each case. |#
                      (else (no-reuse-possible))))
              (no-preference))))))
 
-(define (machine-register-reference register type)
-  ;; Returns a reference to a machine register which contains the same
-  ;; contents as `register', and which has the given `type'.
-  (register-reference
-   (if (machine-register? register)
-       (if (register-type? register type)
-          register
-          (let ((temp (allocate-temporary-register! type)))
-            (prefix-instructions!
-             (register->register-transfer register temp))
-            temp))
-       (load-alias-register! register type))))
+(define-integrable (machine-register-reference register type)
+  (register-reference (guarantee-alias-register! register type)))
+
+(define (guarantee-alias-register! register type)
+  ;; Returns a a machine register which contains the same contents as
+  ;; `register', and which has the given `type'.
+  (if (machine-register? register)
+      (if (register-type? register type)
+         register
+         (let ((temp (allocate-temporary-register! type)))
+           (prefix-instructions! (register->register-transfer register temp))
+           temp))
+      (load-alias-register! register type)))
 
 (define (load-machine-register! source-register machine-register)
   (if (machine-register? source-register)