Skip to content
Snippets Groups Projects
Commit c8f7c04b authored by ram's avatar ram
Browse files

In system-setters combined the BASE and TEMP temporaries to keep the poor

register allocator from getting all confused.
parent feba72b1
No related branches found
No related tags found
No related merge requests found
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
;;; Scott Fahlman (FAHLMAN@CMUC). ;;; Scott Fahlman (FAHLMAN@CMUC).
;;; ********************************************************************** ;;; **********************************************************************
;;; ;;;
;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/rt/sap.lisp,v 1.5 1991/04/29 06:19:14 wlott Exp $ ;;; $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/rt/sap.lisp,v 1.6 1991/07/10 17:51:14 ram Exp $
;;; ;;;
;;; This file contains the IBM RT VM definition of SAP operations. ;;; This file contains the IBM RT VM definition of SAP operations.
;;; ;;;
...@@ -309,13 +309,11 @@ ...@@ -309,13 +309,11 @@
(:policy :fast-safe) (:policy :fast-safe)
(:translate ,translate) (:translate ,translate)
(:args (object :scs (sap-reg) :to (:eval 0)) (:args (object :scs (sap-reg) :to (:eval 0))
(offset :scs (any-reg) :target temp) (offset :scs (any-reg) :target base)
(data :scs (,@data-scs) :target result (data :scs (,@data-scs) :target result
:to (:eval 1))) :to (:eval 1)))
(:arg-types system-area-pointer positive-fixnum ,data-type) (:arg-types system-area-pointer positive-fixnum ,data-type)
(:temporary (:scs (sap-reg) :from (:eval 0) :to (:eval 2)) base) (:temporary (:scs (sap-reg) :from (:argument 1) :to (:eval 2)) base)
(:temporary (:scs (non-descriptor-reg)
:from (:argument 1) :to (:eval 0)) temp)
;; Add some bullshit temporaries because of human understanding about ;; Add some bullshit temporaries because of human understanding about
;; a peculiarity in compiler register allocation, so this will trick ;; a peculiarity in compiler register allocation, so this will trick
;; the compiler into giving us enough non-descriptor-regs. ;; the compiler into giving us enough non-descriptor-regs.
...@@ -326,14 +324,14 @@ ...@@ -326,14 +324,14 @@
(:results (result :scs (,@data-scs))) (:results (result :scs (,@data-scs)))
(:result-types ,data-type) (:result-types ,data-type)
(:generator 7 (:generator 7
(move temp offset) (move base offset)
;; ;;
;; We shift right because the offset has fixnum lowtag. Effectively ;; We shift right because the offset has fixnum lowtag. Effectively
;; the index has already been multiplied by 4. ;; the index has already been multiplied by 4.
,@(let ((adj (- 2 shift))) ,@(let ((adj (- 2 shift)))
(unless (zerop adj) (unless (zerop adj)
`((inst sr temp ,adj)))) `((inst sr base ,adj))))
(inst cas base temp object) (inst cas base base object)
(let ((offset 0)) (let ((offset 0))
,set-form) ,set-form)
(move result data)))))) (move result data))))))
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment