From: Ivan Maidanski Date: Wed, 17 Jul 2013 06:07:19 +0000 (+0400) Subject: Fix assertion violation in GC_mark_from prefetch loop X-Git-Tag: gc7_4_0~40 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8b7bd3c3ccf0f2b6d2f4c62371f0c49d87239779;p=gc Fix assertion violation in GC_mark_from prefetch loop * mark.c (GC_mark_from): If "descr" is less than size of word then skip prefetching and PUSH_CONTENTS of the current entry (thus, eliminate assertion violation in the prefetch loop) if SMALL_CONFIG is not defined. --- diff --git a/mark.c b/mark.c index 53925b13..16ea2366 100644 --- a/mark.c +++ b/mark.c @@ -778,6 +778,10 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack, } } else /* Small object with length descriptor */ { mark_stack_top--; +# ifndef SMALL_CONFIG + if (descr < sizeof(word)) + continue; +# endif limit = current_p + (word)descr; } # ifdef ENABLE_TRACE