aboutsummaryrefslogtreecommitdiffstats
path: root/gc/mark.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc/mark.c')
-rw-r--r--gc/mark.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/gc/mark.c b/gc/mark.c
index 70ba135..993c8d6 100644
--- a/gc/mark.c
+++ b/gc/mark.c
@@ -264,7 +264,7 @@ static void alloc_mark_stack();
GC_bool GC_mark_some(cold_gc_frame)
ptr_t cold_gc_frame;
{
-#ifdef MSWIN32
+#if defined(MSWIN32) && !defined(__GNUC__)
/* Windows 98 appears to asynchronously create and remove writable */
/* memory mappings, for reasons we haven't yet understood. Since */
/* we look for writable regions to determine the root set, we may */
@@ -274,7 +274,7 @@ ptr_t cold_gc_frame;
/* Note that this code should never generate an incremental GC write */
/* fault. */
__try {
-#endif
+#endif /* defined(MSWIN32) && !defined(__GNUC__) */
switch(GC_mark_state) {
case MS_NONE:
return(FALSE);
@@ -395,7 +395,7 @@ ptr_t cold_gc_frame;
ABORT("GC_mark_some: bad state");
return(FALSE);
}
-#ifdef MSWIN32
+#if defined(MSWIN32) && !defined(__GNUC__)
} __except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH) {
# ifdef CONDPRINT
@@ -410,7 +410,7 @@ ptr_t cold_gc_frame;
scan_ptr = 0;
return FALSE;
}
-#endif /* MSWIN32 */
+#endif /* defined(MSWIN32) && !defined(__GNUC__) */
}
@@ -434,13 +434,7 @@ GC_bool GC_mark_stack_empty()
/* for the large object. */
/* - just return current if it does not point to a large object. */
/*ARGSUSED*/
-# ifdef PRINT_BLACK_LIST
- ptr_t GC_find_start(current, hhdr, new_hdr_p, source)
- ptr_t source;
-# else
- ptr_t GC_find_start(current, hhdr, new_hdr_p)
-# define source 0
-# endif
+ptr_t GC_find_start(current, hhdr, new_hdr_p)
register ptr_t current;
register hdr *hhdr, **new_hdr_p;
{
@@ -468,7 +462,6 @@ register hdr *hhdr, **new_hdr_p;
} else {
return(current);
}
-# undef source
}
void GC_invalidate_mark_state()
@@ -546,13 +539,13 @@ mse * mark_stack_limit;
/* Large length. */
/* Process part of the range to avoid pushing too much on the */
/* stack. */
+ GC_ASSERT(descr < GC_greatest_plausible_heap_addr
+ - GC_least_plausible_heap_addr);
# ifdef PARALLEL_MARK
# define SHARE_BYTES 2048
if (descr > SHARE_BYTES && GC_parallel
&& mark_stack_top < mark_stack_limit - 1) {
int new_size = (descr/2) & ~(sizeof(word)-1);
- GC_ASSERT(descr < GC_greatest_plausible_heap_addr
- - GC_least_plausible_heap_addr);
mark_stack_top -> mse_start = current_p;
mark_stack_top -> mse_descr = new_size + sizeof(word);
/* makes sure we handle */