diff --git a/compiler/ppc/alloc.lisp b/compiler/ppc/alloc.lisp index 5dddf30c2e4557020db35ec454fb8e551e51f91c..6ef84115443d577da5d52ba23cbe72fefc617574 100644 --- a/compiler/ppc/alloc.lisp +++ b/compiler/ppc/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/ppc/alloc.lisp,v 1.6 2004/08/08 11:15:11 rtoy Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/alloc.lisp,v 1.7 2004/08/09 01:36:47 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -145,9 +145,9 @@ (:ignore dynamic-extent) (:generator 10 (let ((size (+ length closure-info-offset))) - (pseudo-atomic (pa-flag :extra (pad-data-block size)) - (inst clrrwi. result alloc-tn lowtag-bits) - (inst ori result result function-pointer-type) + (pseudo-atomic (pa-flag) + + (allocation result (pad-data-block size) function-pointer-type :temp-tn temp) (inst lr temp (logior (ash (1- size) type-bits) closure-header-type)) (storew temp result 0 function-pointer-type))) #+PPC-FUN-HACK @@ -186,12 +186,9 @@ (:temporary (:scs (non-descriptor-reg)) temp) (:temporary (:sc non-descriptor-reg :offset nl3-offset) pa-flag) (:generator 4 - (pseudo-atomic (pa-flag :extra (pad-data-block words)) - (cond ((logbitp 2 lowtag) - (inst ori result alloc-tn lowtag)) - (t - (inst clrrwi result alloc-tn lowtag-bits) - (inst ori result result lowtag))) + ;; Could this be replaced with with-fixed-allocation? + (pseudo-atomic (pa-flag) + (allocation result (pad-data-block words) lowtag :temp-tn temp) (when type (inst lr temp (logior (ash (1- words) type-bits) type)) (storew temp result 0 lowtag))))) @@ -210,10 +207,5 @@ (inst addi header header (+ (ash -2 type-bits) type)) (inst clrrwi bytes bytes lowtag-bits) (pseudo-atomic (pa-flag) - (cond ((logbitp 2 lowtag) - (inst ori result alloc-tn lowtag)) - (t - (inst clrrwi result alloc-tn lowtag-bits) - (inst ori result result lowtag))) - (storew header result 0 lowtag) - (inst add alloc-tn alloc-tn bytes)))) + (allocation result bytes lowtag :temp-tn temp) + (storew header result 0 lowtag)))) diff --git a/compiler/ppc/call.lisp b/compiler/ppc/call.lisp index e99502e5a10c574ef823b784ae78d5f9450f39b4..bc8faaa52f6b09e1b1806e15c3de46f759a7e573 100644 --- a/compiler/ppc/call.lisp +++ b/compiler/ppc/call.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/ppc/call.lisp,v 1.5 2004/07/25 18:15:52 pmai Exp $") + "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/compiler/ppc/call.lisp,v 1.6 2004/08/09 01:36:47 rtoy Exp $") ;;; ;;; ********************************************************************** ;;; @@ -1198,11 +1198,9 @@ default-value-8 (pseudo-atomic (pa-flag) (assemble () ;; Allocate a cons (2 words) for each item. - (inst clrrwi result alloc-tn lowtag-bits) - (inst ori result result list-pointer-type) - (move dst result) (inst slwi temp count 1) - (inst add alloc-tn alloc-tn temp) + (allocation result temp list-pointer-type :temp-tn dst) + (move dst result) (inst b enter) ;; Compute the next cons and store it in the current one.