summaryrefslogtreecommitdiff
path: root/mark.c
diff options
context:
space:
mode:
Diffstat (limited to 'mark.c')
-rw-r--r--mark.c20
1 files changed, 13 insertions, 7 deletions
diff --git a/mark.c b/mark.c
index 1c6996d7..29ee3f01 100644
--- a/mark.c
+++ b/mark.c
@@ -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)