Allow dereferencing of constants in RTL.
authorChris Hanson <org/chris-hanson/cph>
Fri, 31 Jul 1987 00:51:10 +0000 (00:51 +0000)
committerChris Hanson <org/chris-hanson/cph>
Fri, 31 Jul 1987 00:51:10 +0000 (00:51 +0000)
v7/src/compiler/rtlbase/rtlcon.scm

index 9cbdfcb255f969dc120cb7e6a59a4d34d5ffbd3c..ab1d1fbc136949bd2c20476ed10f7617f598cf8e 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 1.11 1987/07/21 22:40:30 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlbase/rtlcon.scm,v 1.12 1987/07/31 00:51:10 cph Exp $
 
 Copyright (c) 1987 Massachusetts Institute of Technology
 
@@ -222,11 +222,18 @@ MIT in each case. |#
                    (lambda (register)
                      (if-memory register (caddr locative))))
                  (error "LOCATIVE-DEREFERENCE: Bad OFFSET" locative))))
+          ((CONSTANT)
+           (assign-to-temporary locative scfg-append!
+             (lambda (register)
+               (assign-to-temporary (rtl:make-object->address register)
+                                    scfg-append!
+                 (lambda (register)
+                   (if-memory register 0))))))
           (else
            (error "LOCATIVE-DEREFERENCE: Unknown keyword" (car locative)))))
        (else
         (error "LOCATIVE-DEREFERENCE: Illegal locative" locative))))
-
+\f
 (define (locative-fetch locative scfg-append! receiver)
   (locative-fetch-1 locative scfg-append!
     (lambda (register)
@@ -235,7 +242,7 @@ MIT in each case. |#
          (assign-to-temporary (rtl:make-object->address register)
                               scfg-append!
                               receiver)))))
-\f
+
 (define (locative-fetch-1 locative scfg-append! receiver)
   (locative-dereference locative scfg-append!
     receiver
@@ -243,7 +250,7 @@ MIT in each case. |#
       (assign-to-temporary (rtl:make-offset register offset)
                           scfg-append!
                           receiver))))
-
+\f
 (define-export (expression-simplify-for-statement expression receiver)
   (expression-simplify expression scfg*scfg->scfg! receiver))