diff --git a/compiler/sparc/alloc.lisp b/compiler/sparc/alloc.lisp index 92f160b981b3122d8f3478273a93f9f2796ee286..c70a768c065acfd3fedf01de5367c93bb79eefdd 100644 --- a/compiler/sparc/alloc.lisp +++ b/compiler/sparc/alloc.lisp @@ -7,7 +7,7 @@ ;;; Scott Fahlman or slisp-group@cs.cmu.edu. ;;; (ext:file-comment - "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/alloc.lisp,v 1.6 1992/12/13 15:23:45 wlott Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/sparc/alloc.lisp,v 1.7 1992/12/16 18:21:42 wlott Exp $") ;;; ;;; ********************************************************************** ;;; @@ -27,7 +27,6 @@ (:temporary (:scs (descriptor-reg)) temp) (:temporary (:scs (descriptor-reg) :type list :to (:result 0) :target result) res) - (:temporary (:scs (non-descriptor-reg)) ndescr) (:info num) (:results (result :scs (descriptor-reg))) (:variant-vars star) @@ -172,14 +171,13 @@ (:info name words type lowtag) (:ignore name) (:results (result :scs (descriptor-reg))) - (:temporary (:scs (any-reg)) temp1 temp2) + (:temporary (:scs (any-reg)) bytes header) (:generator 6 - (pseudo-atomic (pa-flag) + (inst add bytes extra (* (1+ words) word-bytes)) + (inst sll header bytes (- type-bits 2)) + (inst add header header (+ (ash -2 type-bits) type)) + (inst and bytes (lognot lowtag-mask)) + (pseudo-atomic () (inst or result alloc-tn lowtag) - (inst add temp1 extra (fixnum (1- words))) - (inst sll temp2 temp2 (- type-bits 2)) - (inst or temp2 temp2 type) - (storew temp2 result 0 lowtag) - (inst li temp2 (lognot lowtag-mask)) - (inst and temp1 temp1 temp2) - (inst add alloc-tn alloc-tn temp1)))) + (storew header result 0 lowtag) + (inst add alloc-tn alloc-tn bytes))))