From: Guillermo J. Rozas <edu/mit/csail/zurich/gjr>
Date: Wed, 23 Nov 1994 20:43:30 +0000 (+0000)
Subject: Eliminate potential register reallocation of the continuation register
X-Git-Tag: 20090517-FFI~6976
X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=1b0a84428afcdb51c94366e3cb52a82f2f24a637;p=mit-scheme.git

Eliminate potential register reallocation of the continuation register
in new-apply.
---

diff --git a/v8/src/compiler/machines/spectrum/rules3.scm b/v8/src/compiler/machines/spectrum/rules3.scm
index 95d1246cf..54ef6d378 100644
--- a/v8/src/compiler/machines/spectrum/rules3.scm
+++ b/v8/src/compiler/machines/spectrum/rules3.scm
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: rules3.scm,v 1.2 1994/11/23 20:40:56 adams Exp $
+$Id: rules3.scm,v 1.3 1994/11/23 20:43:30 gjr Exp $
 
 Copyright (c) 1988-1994 Massachusetts Institute of Technology
 
@@ -430,15 +430,15 @@ MIT in each case. |#
 		,@load-continuation
 		,@(invoke-hook hook)
 		(WORD () (- ,(constant->label prim) *PC*)))
-	 (let ((label1 (generate-label))
-	       (label2 (generate-label)))
-	   (LAP ,@load-continuation
-		(BLE () (OFFSET ,hook 4 ,regnum:scheme-to-interface-ble))
-		(ADDI () (- (- ,label2 ,label1) ,*privilege-level*) 31 31)
-		(LABEL ,label1)
-		,@(gen-preservation-info)
-		(LABEL ,label2)
-		(WORD () (- ,(constant->label prim) *PC*)))))))))
+	   (let ((label1 (generate-label))
+		 (label2 (generate-label)))
+	     (LAP ,@load-continuation
+		  (BLE () (OFFSET ,hook 4 ,regnum:scheme-to-interface-ble))
+		  (ADDI () (- (- ,label2 ,label1) ,*privilege-level*) 31 31)
+		  (LABEL ,label1)
+		  ,@(gen-preservation-info)
+		  (LABEL ,label2)
+		  (WORD () (- ,(constant->label prim) *PC*)))))))))
 
 #|
 (define (open-code-block-allocation name prim hook frame-size cont-label)
@@ -1516,6 +1516,8 @@ MIT in each case. |#
 					      delete-dead-registers!)))
 	 (obj* (or obj regnum:first-arg)))
     (need-register! obj*)
+    (if continuation
+	(need-register! 19))
     (let ((addr (if untagged-entries? obj* (standard-temporary!)))
 	  (temp (standard-temporary!))
 	  (label (generate-label))