summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIvan Maidanski <ivmai@mail.ru>2013-07-17 08:07:19 +0200
committerIvan Maidanski <ivmai@mail.ru>2013-07-17 08:07:19 +0200
commit8b7bd3c3ccf0f2b6d2f4c62371f0c49d87239779 (patch)
tree69a021dfc411c87963b88166d53c80bd40e60c4c
parent036c30a2300197415717efcf4b2b8daffe65162d (diff)
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.
-rw-r--r--mark.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/mark.c b/mark.c
index 53925b1..16ea236 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