Tighten up the code sequence for the combined interrupt and stack
authorChris Hanson <org/chris-hanson/cph>
Sat, 26 Sep 1992 15:49:20 +0000 (15:49 +0000)
committerChris Hanson <org/chris-hanson/cph>
Sat, 26 Sep 1992 15:49:20 +0000 (15:49 +0000)
check.  New sequence is 6 instructions rather than former 8.

v7/src/compiler/machines/mips/rules3.scm

index 35e069217c717c3e5bb6ee4b5caef5112ea135f4..ef15dfd46e232decce8a091932e880c8a041fe5a 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Header: /Users/cph/tmp/foo/mit-scheme/mit-scheme/v7/src/compiler/machines/mips/rules3.scm,v 1.12 1992/08/20 01:26:56 jinx Exp $
+$Id: rules3.scm,v 1.13 1992/09/26 15:49:20 cph Exp $
 
 Copyright (c) 1988-1992 Massachusetts Institute of Technology
 
@@ -427,18 +427,16 @@ MIT in each case. |#
         ,@(interrupt-check gc-label))))
 
 (define (interrupt-check gc-label)
-  (LAP (SLT ,regnum:assembler-temp ,regnum:memtop ,regnum:free)
-       (BNE ,regnum:assembler-temp 0 (@PCR ,gc-label))
-       (LW ,regnum:memtop ,reg:memtop)
-       ,@(if compiler:generate-stack-checks?
-            (LAP (LW ,regnum:assembler-temp ,reg:stack-guard)
-                 (NOP)
-                 (SLT ,regnum:assembler-temp
-                      ,regnum:stack-pointer
-                      ,regnum:assembler-temp)
-                 (BNE ,regnum:assembler-temp 0 (@PCR ,gc-label))
-                 (NOP))
-            (LAP))))
+  (if (not compiler:generate-stack-checks?)
+      (LAP (SLT ,regnum:assembler-temp ,regnum:memtop ,regnum:free)
+          (BNE ,regnum:assembler-temp 0 (@PCR ,gc-label))
+          (LW ,regnum:memtop ,reg:memtop))
+      (LAP (LW ,regnum:first-arg ,reg:stack-guard)
+          (SLT ,regnum:assembler-temp ,regnum:memtop ,regnum:free)
+          (BNE ,regnum:assembler-temp 0 (@PCR ,gc-label))
+          (SLT ,regnum:assembler-temp ,regnum:stack-pointer ,regnum:first-arg)
+          (BNE ,regnum:assembler-temp 0 (@PCR ,gc-label))
+          (LW ,regnum:memtop ,reg:memtop))))
 
 (define-rule statement
   (CONTINUATION-ENTRY (? internal-label))