On Tue, Oct 13, 2009 at 9:14 PM, Matthew Fluet <span dir="ltr">&lt;<a href="mailto:mtf@cs.rit.edu">mtf@cs.rit.edu</a>&gt;</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-&gt;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&#39;m trying to narrow the problem down further, but it&#39;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>=&gt; s-&gt;generationalMaps.crossMap[cardIndex] = (GC_crossMapElem)offset;<br>
... but we all know how reliable gcc is in this regard.. o.O<br><br>