#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 4.7 1988/05/09 19:52:24 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 4.8 1988/05/19 15:22:46 markf Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(define-expression-method 'OBJECT->ADDRESS
(object-selector rtl:make-object->address))
+(define-expression-method 'FIXNUM->OBJECT
+ (object-selector rtl:make-fixnum->object))
+
(define-expression-method 'OBJECT->FIXNUM
(lambda (receiver scfg-append! expression)
- (expression-simplify* expression scfg-append!
- (lambda (s-expression)
- (assign-to-temporary
- (rtl:make-object->fixnum s-expression)
- scfg-append!
- (lambda (temporary)
- (receiver temporary)))))))
+ (cond ((or (rtl:fixnum-valued-expression? expression)
+ (rtl:constant? expression))
+ (expression-simplify* expression scfg-append!
+ (lambda (s-constant)
+ (receiver s-constant))))
+ (else
+ (expression-simplify* expression scfg-append!
+ (lambda (s-expression)
+ (assign-to-temporary
+ (rtl:make-object->fixnum s-expression)
+ scfg-append!
+ (lambda (temporary)
+ (receiver temporary)))))))))
(define-expression-method 'CONS-POINTER
(lambda (receiver scfg-append! type datum)
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlexp.scm,v 4.5 1988/05/09 19:51:39 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlexp.scm,v 4.6 1988/05/19 15:20:13 markf Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(define (rtl:fixnum-valued-expression? expression)
(if (rtl:register? expression)
(register-contains-fixnum? (rtl:register-number expression))
- (rtl:object->fixnum? expression)))
+ (or (rtl:object->fixnum? expression)
+ (rtl:fixnum-1-arg? expression)
+ (rtl:fixnum-2-args? expression))))
+
(define (rtl:optimizable? expression)
;;; In order to avoid a combinatorial explosion in the number of
#| -*-Scheme-*-
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlty1.scm,v 4.6 1988/05/09 19:50:30 mhwu Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlty1.scm,v 4.7 1988/05/19 15:22:29 markf Exp $
Copyright (c) 1987 Massachusetts Institute of Technology
(define-rtl-expression object->datum rtl: expression)
(define-rtl-expression object->type rtl: register)
(define-rtl-expression object->fixnum rtl: expression)
+(define-rtl-expression fixnum->object rtl: expression)
(define-rtl-expression offset rtl: register number)
(define-rtl-expression pre-increment rtl: register number)
(define-rtl-expression post-increment rtl: register number)