From: Patrik N. <pat...@po...> - 2003-10-26 10:19:58
Attachments:
page_bytes.diff
mcrxr.diff
|
I have two patches that I would like to solicit comments on. One, page_bytes.diff, replaces all occurences of literal 4096 in the gencgc code with the constant PAGE_BYTES. I think this is correct, as there doesn't seem to be anything that uses 4096 that isn't dealing in page sizes, but I may have missed something. Also there are two gencgc header files, gencgc.h and gencgc-internal.h, which are duplicating declarations. Is there a reason for this that I just don't see, or should the common declarations be moved into a common header files (or maybe one of the files should just go?? Second, mcrxr.diff, is a patch that replaces all use of the mcrxr instruction in the PPC backend with mtxer. The reason to do this is that mcrxr is very, very slow on the PPC970/G5. The change seems to be working for me, but testing by others would be good, especially on G5s to see if this actually turns out to be faster. |
From: Daniel B. <da...@te...> - 2003-10-27 06:16:52
|
Patrik Nordebo <pat...@po...> writes: > One, page_bytes.diff, replaces all occurences of literal 4096 in the > gencgc code with the constant PAGE_BYTES. I think this is correct, as > there doesn't seem to be anything that uses 4096 that isn't dealing in > page sizes, but I may have missed something. I mentioned this on IRC, but for the record, there are a couple of references to 0xfff that also need changing: /* quick check 2: Check the offset within the page. * * FIXME: The mask should have a symbolic name, and ideally should * be derived from page size instead of hardwired to 0xfff. * (Also fix other uses of 0xfff, elsewhere.) */ if (((unsigned)addr & 0xfff) > page_table[addr_page_index].bytes_used) return; and /* If a large object has shrunk then addr may now point to a * free area in which case it's ignored here. Note it gets * through the valid pointer test above because the tail looks * like conses. */ if ((page_table[addr_page_index].allocated =3D=3D FREE_PAGE) || (page_table[addr_page_index].bytes_used =3D=3D 0) /* Check the offset within the page. */ || (((unsigned)addr & 0xfff) > page_table[addr_page_index].bytes_used)) { > Also there are two gencgc header files, gencgc.h and > gencgc-internal.h, which are duplicating declarations. Is there a > reason for this that I just don't see, or should the common > declarations be moved into a common header files (or maybe one of the > files should just go?? Again, we talked about this on irc, but for the record, gencgc.h is used by only one file, which doesn't appear to need it. Feel required to verify this before doing anything, but I think it can go. =2Ddan =2D-=20 http://web.metacircles.com/cirCLe_CD - Free Software Lisp/Linux distro |
From: Patrik N. <pat...@po...> - 2003-10-29 15:25:40
|
On Sun, Oct 26, 2003 at 11:17:02AM +0100, Patrik Nordebo wrote: > Second, mcrxr.diff, is a patch that replaces all use of the mcrxr > instruction in the PPC backend with mtxer. The reason to do this is > that mcrxr is very, very slow on the PPC970/G5. The change seems to be > working for me, but testing by others would be good, especially on G5s > to see if this actually turns out to be faster. For those not following the commits list, I have committed this patch to 0.8.5.13, so SBCL should now be considerably faster on G5s. |