diff --git a/compiler/mips/memory.lisp b/compiler/mips/memory.lisp index ef16a46818fac07cdc262b9c91425b04f84215c5..5845278eb33cbd9a7488ec95349b05e0163bf4fd 100644 --- a/compiler/mips/memory.lisp +++ b/compiler/mips/memory.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman (FAHLMAN@CMUC). ;;; ********************************************************************** ;;; -;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/memory.lisp,v 1.9 1990/06/18 14:47:14 wlott Exp $ +;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/mips/memory.lisp,v 1.10 1990/08/15 02:55:01 wlott Exp $ ;;; ;;; This file contains the MIPS definitions of some general purpose memory ;;; reference VOPs inherited by basic memory reference operations. @@ -22,7 +22,9 @@ ;;; Cell-Ref and Cell-Set are used to define VOPs like CAR, where the offset to ;;; be read or written is a property of the VOP used. Cell-Setf is similar to -;;; Cell-Set, but delivers the new value as the result. +;;; Cell-Set, but delivers the new value as the result. Cell-Setf-Function +;;; takes its arguments as if it were a setf function (new value first, as +;;; apposed to a setf macro, which takes the new value last). ;;; (define-vop (cell-ref) (:args (object :scs (descriptor-reg))) @@ -50,6 +52,17 @@ (:generator 4 (storew value object offset lowtag) (move result value))) +;;; +(define-vop (cell-setf-function) + (:args (value :scs (descriptor-reg any-reg) + :target result) + (object :scs (descriptor-reg))) + (:results (result :scs (descriptor-reg any-reg))) + (:variant-vars offset lowtag) + (:policy :fast-safe) + (:generator 4 + (storew value object offset lowtag) + (move result value))) ;;; Define-Cell-Accessors -- Interface ;;;