diff --git a/compiler/mips/sap.lisp b/compiler/mips/sap.lisp index 6b7f691fbb3b91d5fefd9aca9269fc6d6ab6cd04..cafa3dc2e9ec61ad118cba0a34ee836039a0ff81 100644 --- a/compiler/mips/sap.lisp +++ b/compiler/mips/sap.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/sap.lisp,v 1.8 1990/04/26 20:32:28 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/sap.lisp,v 1.9 1990/04/27 19:22:40 wlott Exp $ ;;; ;;; This file contains the MIPS VM definition of SAP operations. ;;; @@ -121,18 +121,25 @@ (define-vop (pointer+) (:translate sap+) (:args (ptr :scs (sap-reg)) - (offset :scs (any-reg descriptor-reg))) + (offset :scs (signed-reg immediate))) (:arg-types system-area-pointer fixnum) (:results (res :scs (sap-reg))) (:policy :fast-safe) (:generator 1 - (inst addu res ptr offset))) + (sc-case offset + (signed-reg + (inst addu res ptr offset)) + (immediate + (inst addu res ptr (tn-value offset)))))) (define-vop (pointer-) + (:translate sap-) (:args (ptr1 :scs (sap-reg)) (ptr2 :scs (sap-reg))) (:arg-types system-area-pointer system-area-pointer) - (:results (res :scs (any-reg descriptor-reg))) + (:policy :fast-safe) + (:arg-types system-area-pointer system-area-pointer) + (:results (res :scs (signed-reg))) (:generator 1 (inst subu res ptr1 ptr2)))