Improve code generated for inputs like the following:
authorChris Hanson <org/chris-hanson/cph>
Thu, 18 Aug 1988 01:46:45 +0000 (01:46 +0000)
committerChris Hanson <org/chris-hanson/cph>
Thu, 18 Aug 1988 01:46:45 +0000 (01:46 +0000)
    (if (if (and (object-type? (ucode-type fixnum) r)
 (object-type? (ucode-type fixnum) l))
    (fix:> r l)
    (> r l))
...)

Previously, the code generated for the call to `fix:>' was deficient
in that it pushed a continuation, performed the inline coded
comparison, then did a pop-return.  In fact, since the continuation is
known at that point, and is not being passed anywhere, there's no
reason to push anything on the stack.  These changes implement this.

v7/src/compiler/machines/bobcat/make.scm-68040
v7/src/compiler/rtlgen/rtlgen.scm

index 7b55d096e9bf9fd6140c5fcd9065a987047ed3c5..88b2a529e409ea38c3f12e295a4b3595b6ba3238 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/make.scm-68040,v 4.20 1988/08/11 20:15:54 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/bobcat/make.scm-68040,v 4.21 1988/08/18 01:45:48 cph Exp $
 
 Copyright (c) 1988 Massachusetts Institute of Technology
 
@@ -41,4 +41,4 @@ MIT in each case. |#
            ((package/reference (find-package name) 'INITIALIZE-PACKAGE!)))
          '((COMPILER MACROS)
            (COMPILER DECLARATIONS)))
-(add-system! (make-system "Liar" 14 20 '()))
\ No newline at end of file
+(add-system! (make-system "Liar" 14 21 '()))
\ No newline at end of file
index a8cb8c6b414272d2a6fa3b5f93ceaa093e4d8596..ad6f9232c46ee5d38d04c8278a631e9200763b7a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rtlgen.scm,v 4.6 1988/08/18 01:37:23 cph Exp $
+$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/rtlgen/rtlgen.scm,v 4.7 1988/08/18 01:46:45 cph Exp $
 
 Copyright (c) 1988 Massachusetts Institute of Technology
 
@@ -158,7 +158,7 @@ MIT in each case. |#
     (if (and (not (continuation/always-known-operator? continuation))
             (block/dynamic-link? block))
        (rtl:make-pop-link)
-       (make-null-cfg)))))
+       (make-null-cfg))))
 \f
 (define (generate/node node)
   (let ((memoization (cfg-node-get node memoization-tag)))