From 960b93da14a6ce4af1371cc0cc118c2936b305cb Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Tue, 5 Dec 1989 20:38:22 +0000 Subject: [PATCH] Split `machine-register-reference' to create new procedure `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 | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/v7/src/compiler/back/lapgn2.scm b/v7/src/compiler/back/lapgn2.scm index fe979b1f9..d025370d1 100644 --- a/v7/src/compiler/back/lapgn2.scm +++ b/v7/src/compiler/back/lapgn2.scm @@ -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) -- 2.25.1