diff --git a/compiler/backend.lisp b/compiler/backend.lisp index 16b6cc6259745f0ab5f6ba4a15f49f59c59ccb84..2d4c67b8fc2c439ace6f13f475a9de809ebf7fbe 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 41c1dab23c6f3886849d6e25c7b0fc4020df2a03..5156c9b5f8762dc8624c60d549e1652771763b33 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 033d3ca768b7b69408ed4d035c14344624c052ae..e53efa2d18b2502ca892901a29e9eeba87178d8c 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 209fb39b2250eb0234a19d13cb196b358f016db2..7fcf09526de1e1c071ac8759aa7617b7074b245e 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 9fc3c5be60ca9142b2ad54ae4d1fb22bc70a2689..7ffdb78af50b7b76b635ddc8a5b30a759592a3f2 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 22471eb5fee329390cea9ed4b95d415e52c649b8..4b9bf8e179c40876e6f38f75c5a89e011c81a50b 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.