diff options
Diffstat (limited to '')
-rw-r--r-- | gc/mark.c | 21 |
1 files changed, 7 insertions, 14 deletions
@@ -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 */ |