On Tue, Oct 13, 2009 at 9:14 PM, Matthew Fluet <span dir="ltr"><<a href="mailto:mtf@cs.rit.edu">mtf@cs.rit.edu</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
All of heap.size, cardMapSize, and crossMapSize are aligned according to the system page size (s->sysvals.pagesize).</blockquote><div><br>Ok, but it is definitely updateCrossMap that is doing the unaligned accesses. The moment the GC switches to generational behaviour, the performance of the system dies. I'm trying to narrow the problem down further, but it's painful... 30 minutes per binary search step. :p<br>
</div></div><br>gdb says the address of the trap is...<br>(gdb) break *(void*)0x0000000120d843ac<br>Breakpoint 1 at 0x120d843ac: file gc/generational.c, line 373.<br>=> s->generationalMaps.crossMap[cardIndex] = (GC_crossMapElem)offset;<br>
... but we all know how reliable gcc is in this regard.. o.O<br><br>