diff options
Diffstat (limited to 'mark.c')
-rw-r--r-- | mark.c | 20 |
1 files changed, 13 insertions, 7 deletions
@@ -1261,12 +1261,12 @@ GC_INNER void GC_mark_init(void) * Should only be used if there is no possibility of mark stack * overflow. */ -void GC_push_all(ptr_t bottom, ptr_t top) +GC_API void GC_CALL GC_push_all(char *bottom, char *top) { register word length; - bottom = (ptr_t)(((word) bottom + ALIGNMENT-1) & ~(ALIGNMENT-1)); - top = (ptr_t)(((word) top) & ~(ALIGNMENT-1)); + bottom = (char *)(((word) bottom + ALIGNMENT-1) & ~(ALIGNMENT-1)); + top = (char *)(((word) top) & ~(ALIGNMENT-1)); if ((word)bottom >= (word)top) return; GC_mark_stack_top++; @@ -1334,15 +1334,15 @@ void GC_push_all(ptr_t bottom, ptr_t top) } } - void GC_push_conditional(ptr_t bottom, ptr_t top, GC_bool all) + GC_API void GC_CALL GC_push_conditional(char *bottom, char *top, int all) { if (!all) { - GC_push_selected(bottom, top, GC_page_was_dirty); + GC_push_selected((ptr_t)bottom, (ptr_t)top, GC_page_was_dirty); } else { # ifdef PROC_VDB if (GC_dirty_maintained) { /* Pages that were never dirtied cannot contain pointers. */ - GC_push_selected(bottom, top, GC_page_was_ever_dirty); + GC_push_selected((ptr_t)bottom, (ptr_t)top, GC_page_was_ever_dirty); } else # endif /* else */ { @@ -1350,7 +1350,13 @@ void GC_push_all(ptr_t bottom, ptr_t top) } } } -#endif /* !GC_DISABLE_INCREMENTAL */ +#else + GC_API void GC_CALL GC_push_conditional(char *bottom, char *top, + int all GC_ATTR_UNUSED) + { + GC_push_all(bottom, top); + } +#endif /* GC_DISABLE_INCREMENTAL */ #if defined(MSWIN32) || defined(MSWINCE) void __cdecl GC_push_one(word p) |