From: Bruce O'N. <ec...@pc...> - 2008-12-29 11:59:58
|
Hi, Um, I think this change has to be undone for Sparc. Both Linux Sparc and NetBSD sparc won't build a running sbcl with the below. Sparcs are very picky about unaligned memory access, perfering to bus error rather than doing the unaligned access slowly. If one undoes this change than 1.0.23.70 builds and runs seemingly just fine. cheers bruce On Tue, Dec 23, 2008 at 02:10:25PM +0000, Thiemo Seufer wrote: > Update of /cvsroot/sbcl/sbcl/src/compiler/sparc > In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv25684/src/compiler/sparc > > Modified Files: > array.lisp > Log Message: > 1.0.23.66: Calculate array sizes in a more reliable way. > > * The old implementation depended on the array header size being > an even number of words. > > * Also, another micro-optimization for MIPS. > > > Index: array.lisp > =================================================================== > RCS file: /cvsroot/sbcl/sbcl/src/compiler/sparc/array.lisp,v > retrieving revision 1.12 > retrieving revision 1.13 > diff -u -d -r1.12 -r1.13 > --- array.lisp 4 Jun 2006 14:25:07 -0000 1.12 > +++ array.lisp 23 Dec 2008 14:10:23 -0000 1.13 > @@ -24,7 +24,8 @@ > (:generator 0 > (pseudo-atomic () > (inst or header alloc-tn other-pointer-lowtag) > - (inst add ndescr rank (* (1+ array-dimensions-offset) n-word-bytes)) > + (inst add ndescr rank (+ (* (1+ array-dimensions-offset) n-word-bytes) > + lowtag-mask)) > (inst andn ndescr 4) > (inst add alloc-tn ndescr) > (inst add ndescr rank (fixnumize (1- array-dimensions-offset))) > @@ -641,4 +642,4 @@ > (:arg-types * tagged-num unsigned-num) > (:results (result :scs (unsigned-reg))) > (:result-types unsigned-num) > - (:variant vector-data-offset other-pointer-lowtag)) > \ No newline at end of file > + (:variant vector-data-offset other-pointer-lowtag)) > > > ------------------------------------------------------------------------------ > _______________________________________________ > Sbcl-commits mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-commits |
From: Juho S. <js...@ik...> - 2008-12-29 12:20:32
|
"Bruce O'Neel" <ec...@pc...> writes: > Hi, > Um, I think this change has to be undone for Sparc. > > Both Linux Sparc and NetBSD sparc won't build a running > sbcl with the below. Sparcs are very picky about unaligned > memory access, perfering to bus error rather than doing the > unaligned access slowly. > > If one undoes this change than 1.0.23.70 builds and runs seemingly > just fine. Instead of reverting, does it help to use the patch as-is but change: > > (inst andn ndescr 4) to: (inst andn ndescr lowtag-mask) -- Juho Snellman |
From: Bruce O'N. <ec...@pc...> - 2008-12-30 06:51:14
Attachments:
patch.array.sparc
|
Hi, Thanks! It builds and runs tests on sparc linux, and builds on sparc netbsd. The patch is attached. cheers bruce On Mon, Dec 29, 2008 at 02:20:11PM +0200, Juho Snellman wrote: > "Bruce O'Neel" <ec...@pc...> writes: > > Hi, > > Um, I think this change has to be undone for Sparc. > > > > Both Linux Sparc and NetBSD sparc won't build a running > > sbcl with the below. Sparcs are very picky about unaligned > > memory access, perfering to bus error rather than doing the > > unaligned access slowly. > > > > If one undoes this change than 1.0.23.70 builds and runs seemingly > > just fine. > > Instead of reverting, does it help to use the patch as-is but change: > > > > (inst andn ndescr 4) > > to: > > (inst andn ndescr lowtag-mask) > > -- > Juho Snellman > |