Added an explicit FIXNUM->OBJECT rtl type for eventual
authorMark Friedman <edu/mit/csail/zurich/markf>
Thu, 19 May 1988 15:22:46 +0000 (15:22 +0000)
committerMark Friedman <edu/mit/csail/zurich/markf>
Thu, 19 May 1988 15:22:46 +0000 (15:22 +0000)
support for reusing the unboxed results of fixnum operations

v7/src/compiler/rtlbase/rtlcon.scm
v7/src/compiler/rtlbase/rtlexp.scm
v7/src/compiler/rtlbase/rtlty1.scm

index 454d7501666a16f4029cf291882a7cd893bdb0d9..49a9d80bcb67b1db0a62db6b517a4c7d8300b9e8 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-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
 
@@ -470,15 +470,24 @@ MIT in each case. |#
 (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)
index 090586ff71c6d6f965af4067fb8105a4cc9497a6..3afbfd0439a9e986f548e31ee0b6c3d06d479c6a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-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
 
@@ -78,7 +78,10 @@ MIT in each case. |#
 (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
index f514f469ffc8efa7f3b67f4d597a6adb490e9c0f..d3e55f5b9b9df08763a8c3eff8e4ea52e9032f47 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-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
 
@@ -43,6 +43,7 @@ MIT in each case. |#
 (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)