From cf1c4d059e1e9d61ebcc1a4be06180a14ab5eee7 Mon Sep 17 00:00:00 2001 From: Chris Hanson Date: Mon, 28 Sep 1992 16:38:50 +0000 Subject: [PATCH] Reimplement in-line combined stack and interrupt check, now that microcode will support it properly. --- v7/src/compiler/machines/bobcat/rules3.scm | 33 +++++++++++++--------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/v7/src/compiler/machines/bobcat/rules3.scm b/v7/src/compiler/machines/bobcat/rules3.scm index 4d76f24e8..7e4c53669 100644 --- a/v7/src/compiler/machines/bobcat/rules3.scm +++ b/v7/src/compiler/machines/bobcat/rules3.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: rules3.scm,v 4.34 1992/09/25 01:18:33 cph Exp $ +$Id: rules3.scm,v 4.35 1992/09/28 16:38:50 cph Exp $ Copyright (c) 1988-92 Massachusetts Institute of Technology @@ -403,18 +403,25 @@ MIT in each case. |# ,@(interrupt-check gc-label -12)))) (define (interrupt-check gc-label gc-label-offset) - (if (not compiler:generate-stack-checks?) - (LAP (CMP L ,reg:compiled-memtop (A 5)) - (B GE B (@PCR ,gc-label))) - (LAP (JSR - ,(case gc-label-offset - ((-12) entry:compiler-stack-and-interrupt-check-12) - ((-14) entry:compiler-stack-and-interrupt-check-14) - ((-18) entry:compiler-stack-and-interrupt-check-18) - ((-22) entry:compiler-stack-and-interrupt-check-22) - ((-24) entry:compiler-stack-and-interrupt-check-24) - (else (error "Illegal GC label offset:" - gc-label-offset))))))) + (case compiler:generate-stack-checks? + ((#F) + (LAP (CMP L ,reg:compiled-memtop (A 5)) + (B GE B (@PCR ,gc-label)))) + ((OUT-OF-LINE) + (LAP (JSR + ,(case gc-label-offset + ((-12) entry:compiler-stack-and-interrupt-check-12) + ((-14) entry:compiler-stack-and-interrupt-check-14) + ((-18) entry:compiler-stack-and-interrupt-check-18) + ((-22) entry:compiler-stack-and-interrupt-check-22) + ((-24) entry:compiler-stack-and-interrupt-check-24) + (else (error "Illegal GC label offset:" + gc-label-offset)))))) + (else + (LAP (CMP L ,reg:compiled-memtop (A 5)) + (B GE B (@PCR ,gc-label)) + (CMP L ,reg:stack-guard (A 7)) + (B LE B (@PCR ,gc-label)))))) (define-rule statement (CONTINUATION-ENTRY (? internal-label)) -- 2.25.1