From 0d70c17f4c6882749c68f71bfe10f81bc9d390b6 Mon Sep 17 00:00:00 2001
From: dtc <dtc>
Date: Wed, 4 Mar 1998 14:53:33 +0000
Subject: [PATCH] Update the MIPS and HPPA ports to use the new VM support
 routine make-nlx-entry-argument-start-location.

Update the xep-allocate-frame VOP on the MIPS and HPPA ports to accept
the new copy-more-arg-follows argument; the related VOPS need a
re-write to actually make use of this argument and avoid more-arg
stack problems.
---
 compiler/backend.lisp   |  4 ++--
 compiler/hppa/call.lisp |  5 +++--
 compiler/hppa/nlx.lisp  |  9 ++++++++-
 compiler/ir2tran.lisp   | 23 +++++++++--------------
 compiler/mips/call.lisp |  5 +++--
 compiler/mips/nlx.lisp  |  9 ++++++++-
 6 files changed, 33 insertions(+), 22 deletions(-)

diff --git a/compiler/backend.lisp b/compiler/backend.lisp
index 16b6cc625..2d4c67b8f 100644
--- a/compiler/backend.lisp
+++ b/compiler/backend.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/backend.lisp,v 1.31 1998/01/26 15:54:17 pw Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/backend.lisp,v 1.32 1998/03/04 14:53:22 dtc Rel $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -85,7 +85,7 @@
   ;; From NLX.LISP
   make-nlx-sp-tn
   make-dynamic-state-tns
-  #+(or x86 sparc alpha) make-nlx-entry-argument-start-location
+  make-nlx-entry-argument-start-location
   
   ;; From SUPPORT.LISP
   generate-call-sequence
diff --git a/compiler/hppa/call.lisp b/compiler/hppa/call.lisp
index 41c1dab23..5156c9b5f 100644
--- a/compiler/hppa/call.lisp
+++ b/compiler/hppa/call.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/hppa/call.lisp,v 1.10 1994/10/31 04:42:45 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/hppa/call.lisp,v 1.11 1998/03/04 14:53:33 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -162,7 +162,8 @@
 	      nfp val)))))
 
 (define-vop (xep-allocate-frame)
-  (:info start-lab)
+  (:info start-lab copy-more-arg-follows)
+  (:ignore copy-more-arg-follows)
   (:vop-var vop)
   (:temporary (:scs (non-descriptor-reg)) temp)
   (:generator 1
diff --git a/compiler/hppa/nlx.lisp b/compiler/hppa/nlx.lisp
index 033d3ca76..e53efa2d1 100644
--- a/compiler/hppa/nlx.lisp
+++ b/compiler/hppa/nlx.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/hppa/nlx.lisp,v 1.3 1994/10/31 04:42:45 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/hppa/nlx.lisp,v 1.4 1998/03/04 14:53:32 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -25,6 +25,13 @@
    (make-representation-tn *fixnum-primitive-type* immediate-arg-scn)
    env))
 
+;;; Make-NLX-Entry-Argument-Start-Location  --  Interface
+;;;
+;;;    Make a TN for the argument count passing location for a
+;;; non-local entry.
+;;;
+(def-vm-support-routine make-nlx-entry-argument-start-location ()
+  (make-wired-tn *fixnum-primitive-type* immediate-arg-scn ocfp-offset))
 
 
 ;;; Save and restore dynamic environment.
diff --git a/compiler/ir2tran.lisp b/compiler/ir2tran.lisp
index 209fb39b2..7fcf09526 100644
--- a/compiler/ir2tran.lisp
+++ b/compiler/ir2tran.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir2tran.lisp,v 1.65 1998/01/26 15:54:20 pw Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ir2tran.lisp,v 1.66 1998/03/04 14:53:24 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -1140,17 +1140,13 @@
   (let ((start-label (entry-info-offset (leaf-info fun)))
 	(env (environment-info (node-environment node))))
     (let ((ef (functional-entry-function fun)))
-      (if (and (optional-dispatch-p ef)
-	       (optional-dispatch-more-entry ef))
-	  ;; Special case the xep-allocate-frame + copy-more-arg case.
-	  (progn 
-	    (vop xep-allocate-frame node block start-label
-		 #+(or x86 sparc alpha) t)
-	    (vop copy-more-arg node block (optional-dispatch-max-args ef)))
-	;; No more args, so normal entry.
-	(vop xep-allocate-frame node block start-label
-	     #+(or x86 sparc alpha) nil))
-      
+      (cond ((and (optional-dispatch-p ef) (optional-dispatch-more-entry ef))
+	     ;; Special case the xep-allocate-frame + copy-more-arg case.
+	     (vop xep-allocate-frame node block start-label t)
+	     (vop copy-more-arg node block (optional-dispatch-max-args ef)))
+	    (t
+	     ;; No more args, so normal entry.
+	     (vop xep-allocate-frame node block start-label nil)))
       (if (ir2-environment-environment env)
 	  (let ((closure
 		 (make-normal-tn (backend-any-primitive-type *backend*))))
@@ -1609,8 +1605,7 @@
 	 (2cont (continuation-info cont))
 	 (2info (nlx-info-info info))
 	 (top-loc (ir2-nlx-info-save-sp 2info))
-	 (start-loc #-(or x86 sparc alpha) (make-old-fp-passing-location t)
-		    #+(or x86 sparc alpha) (make-nlx-entry-argument-start-location))
+	 (start-loc (make-nlx-entry-argument-start-location))
 	 (count-loc (make-argument-count-location))
 	 (target (ir2-nlx-info-target 2info)))
 
diff --git a/compiler/mips/call.lisp b/compiler/mips/call.lisp
index 9fc3c5be6..7ffdb78af 100644
--- a/compiler/mips/call.lisp
+++ b/compiler/mips/call.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/call.lisp,v 1.62 1994/10/31 04:44:16 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/call.lisp,v 1.63 1998/03/04 14:53:29 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -170,7 +170,8 @@
 
 
 (define-vop (xep-allocate-frame)
-  (:info start-lab)
+  (:info start-lab copy-more-arg-follows)
+  (:ignore copy-more-arg-follows)
   (:vop-var vop)
   (:temporary (:scs (non-descriptor-reg)) temp)
   (:generator 1
diff --git a/compiler/mips/nlx.lisp b/compiler/mips/nlx.lisp
index 22471eb5f..4b9bf8e17 100644
--- a/compiler/mips/nlx.lisp
+++ b/compiler/mips/nlx.lisp
@@ -5,7 +5,7 @@
 ;;; Carnegie Mellon University, and has been placed in the public domain.
 ;;;
 (ext:file-comment
-  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/nlx.lisp,v 1.20 1994/10/31 04:44:16 ram Exp $")
+  "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/nlx.lisp,v 1.21 1998/03/04 14:53:27 dtc Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -25,6 +25,13 @@
    (make-representation-tn *fixnum-primitive-type* immediate-arg-scn)
    env))
 
+;;; Make-NLX-Entry-Argument-Start-Location  --  Interface
+;;;
+;;;    Make a TN for the argument count passing location for a
+;;; non-local entry.
+;;;
+(def-vm-support-routine make-nlx-entry-argument-start-location ()
+  (make-wired-tn *fixnum-primitive-type* immediate-arg-scn ocfp-offset))
 
 
 ;;; Save and restore dynamic environment.
-- 
GitLab