#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlexp.scm,v 4.3 1988/03/14 21:04:40 jinx Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlexp.scm,v 4.4 1988/04/25 21:44:58 markf Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(or (rtl:object->address? expression)
(rtl:variable-cache? expression)
(rtl:assignment-cache? expression))))
+
+(define (rtl:fixnum-valued-expression? expression)
+ (if (rtl:register? expression)
+ (register-contains-fixnum? (rtl:register-number expression))
+ (rtl:object->fixnum? expression)))
+
+(define (rtl:optimizable? expression)
+ ;;; In order to avoid a combinatorial explosion in the number of
+ ;;; rules required in the lapgen phase we create a class of
+ ;;; expression types which we don't want optimized. We will
+ ;;; explicitly assign these expression types to registers during
+ ;;; rtl generation and then we need only create rules for how to
+ ;;; generate assignments to registers. Some day we will have
+ ;;; some facility for subrule hierarchies which may avoid the
+ ;;; combinatorial explosion. When that happens the next test may
+ ;;; be replaced by true.
+ (not (memq (rtl:expression-type expression)
+ '(OBJECT->FIXNUM))))
\f
(define (rtl:map-subexpressions expression procedure)
(if (rtl:constant? expression)
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlreg.scm,v 4.2 1987/12/30 07:07:50 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlreg.scm,v 4.3 1988/04/25 21:45:08 markf Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(bit-string-set! (rgraph-register-crosses-call? *current-rgraph*) register))
(define-integrable (register-contains-address? register)
- (memq register (rgraph-address-registers *current-rgraph*)))
\ No newline at end of file
+ (memq register (rgraph-address-registers *current-rgraph*)))
+
+(define-integrable (register-contains-fixnum? register)
+ (memq register (rgraph-fixnum-registers *current-rgraph*)))
\ No newline at end of file