Han-Wen, This patch:
82ae1b8eb3413e6be6bd2aa032986fc7782e85ac Garbage collection cleanup. Makefile.am | 8 gc-card.c | 109 ++++++---- gc-freelist.c | 150 +++++++------- gc-malloc.c | 24 +- gc-mark.c | 8 gc-segment-table.c | 293 ++++++++++++++++++++++++++++ gc-segment.c | 545 ++++++++++++----------------------------------------- gc.c | 261 ++++++++++--------------- gc.h | 2 inline.h | 10 private-gc.h | 92 +++----- 11 files changed, 733 insertions(+), 769 deletions(-) is kind of hard to review in a glimpse. Does it just randomly "clean things up" (whatever that means---it does not follow the GCS, for instance), or does it fix anything? It's hard to tell. Can you reproduce the heap usage graphs referred earlier in this thread? Do you have any evidence of improved behavior? Is it this patch that triggers the assertion failure you referred to in your first message? Which assertion is it that fails? I'm in favor or reverting it, possibly by changing the tip of the affected branches so that the history remains clearer (sigh...). When that is done, can you eventually resubmit it as a series of small patches (like the ones you pushed), making it easier to identify the fix, if there is one? Thanks, Ludovic.