]> birchwood-abbey.net Git - mit-scheme.git/commitdiff
rtlgen: Simplify generate/continuation.
authorTaylor R Campbell <campbell+mit-scheme@mumble.net>
Fri, 22 Apr 2022 09:11:29 +0000 (09:11 +0000)
committerTaylor R Campbell <campbell+mit-scheme@mumble.net>
Sat, 14 May 2022 14:25:06 +0000 (14:25 +0000)
No functional change intended, except that this might be a little
faster because it uses one fewer temporary register for many
continuations.

src/compiler/rtlgen/rtlgen.scm

index 7e69839fe9fecf0a17c26909e2e4900e62b67758..b9ec3a7b31ed112036a78e126df6532fe7c2db46 100644 (file)
@@ -151,24 +151,22 @@ USA.
          (generate/rgraph
           (continuation/entry-node continuation)
           (lambda (node)
-            (define (with-value generator)
-              (let* ((temporary (rtl:make-pseudo-register))
-                     (prologue
-                      (rtl:make-assignment temporary
-                                           (rtl:make-fetch register:value)))
-                     (intermezzo (generator temporary)))
-                (values prologue intermezzo)))
             (receive (prologue intermezzo)
                      (enumeration-case continuation-type
                          (continuation/type continuation)
                        ((PUSH)
-                        (with-value rtl:make-push))
+                        (let* ((temporary (rtl:make-pseudo-register))
+                               (prologue
+                                (rtl:make-assignment
+                                 temporary
+                                 (rtl:make-fetch register:value)))
+                               (intermezzo (rtl:make-push temporary)))
+                          (values prologue intermezzo)))
                        ((REGISTER VALUE PREDICATE)
-                        (with-value
-                         (lambda (expression)
-                           (rtl:make-assignment
-                            (continuation/register continuation)
-                            expression))))
+                        (values (rtl:make-assignment
+                                 (continuation/register continuation)
+                                 (rtl:make-fetch register:value))
+                                (make-null-cfg)))
                        ((EFFECT)
                         (values (make-null-cfg) (make-null-cfg)))
                        (else