From 751d61141e395df9af85c42cfdf21d6ad1d9e21d Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Thu, 13 May 2004 14:37:06 +0000 Subject: [PATCH] o Use the gtemp register for LOAD-CONSTANT. This allows the CLOS/defmethod test in cl-bench to run. (I'm waiting for bug reports before adding this everywhere.) o Add a temp to the MOVE-ARGUMENT vop so we can store things on the stack with large offsets. --- compiler/sparc/move.lisp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/compiler/sparc/move.lisp b/compiler/sparc/move.lisp index afdd442c4..20fa8d394 100644 --- a/compiler/sparc/move.lisp +++ b/compiler/sparc/move.lisp @@ -5,11 +5,11 @@ ;;; Carnegie Mellon University, and has been placed in the public domain. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/move.lisp,v 1.14 2004/01/15 16:14:37 toy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/move.lisp,v 1.15 2004/05/13 14:37:06 rtoy Rel $") ;;; ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/move.lisp,v 1.14 2004/01/15 16:14:37 toy Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/move.lisp,v 1.15 2004/05/13 14:37:06 rtoy Rel $ ;;; ;;; This file contains the SPARC VM definition of operand loading/saving and ;;; the Move VOP. @@ -57,7 +57,7 @@ (define-move-function (load-constant 5) (vop x y) ((constant) (descriptor-reg)) - (loadw y code-tn (tn-offset x) other-pointer-type)) + (loadw y code-tn (tn-offset x) other-pointer-type gtemp-tn)) (define-move-function (load-stack 5) (vop x y) ((control-stack) (any-reg descriptor-reg)) @@ -116,13 +116,14 @@ :scs (any-reg descriptor-reg zero null)) (fp :scs (any-reg) :load-if (not (sc-is y any-reg descriptor-reg)))) + (:temporary (:scs (non-descriptor-reg)) temp) (:results (y)) (:generator 0 (sc-case y ((any-reg descriptor-reg) (move y x)) (control-stack - (storew x fp (tn-offset y)))))) + (storew x fp (tn-offset y) 0 temp))))) ;;; (define-move-vop move-argument :move-argument (any-reg descriptor-reg) @@ -365,13 +366,14 @@ (fp :scs (any-reg) :load-if (not (sc-is y sap-reg)))) (:results (y)) + (:temporary (:scs (non-descriptor-reg)) temp) (:note "word integer argument move") (:generator 0 (sc-case y ((signed-reg unsigned-reg) (move y x)) ((signed-stack unsigned-stack) - (storew x fp (tn-offset y)))))) + (storew x fp (tn-offset y) 0 temp))))) ;;; (define-move-vop move-word-argument :move-argument (descriptor-reg any-reg signed-reg unsigned-reg) (signed-reg unsigned-reg)) -- GitLab