X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=libgc%2Fmisc.c;h=4744faa405e9305b2ecbd0f1b05631cc2aa07762;hb=c9ed8b45ec296b041abfc1365dd6220ebbfa3345;hp=5b10feeb961faa9badb793eae3b4659ed24cab5c;hpb=3cca3c82b8e7554f4f5c13a34e4e42949c9053da;p=mono.git diff --git a/libgc/misc.c b/libgc/misc.c index 5b10feeb961..4744faa405e 100644 --- a/libgc/misc.c +++ b/libgc/misc.c @@ -81,6 +81,8 @@ /* dyn_load.c isn't linked in. */ #ifdef DYNAMIC_LOADING # define GC_REGISTER_MAIN_STATIC_DATA() GC_register_main_static_data() +#elif defined(GC_DONT_REGISTER_MAIN_STATIC_DATA) +# define GC_REGISTER_MAIN_STATIC_DATA() FALSE #else # define GC_REGISTER_MAIN_STATIC_DATA() TRUE #endif @@ -246,7 +248,7 @@ void *arg2; byte_sz = WORDS_TO_BYTES(word_sz); if (GC_all_interior_pointers) { /* We need one extra byte; don't fill in GC_size_map[byte_sz] */ - byte_sz--; + byte_sz -= EXTRA_BYTES; } for (j = low_limit; j <= byte_sz; j++) GC_size_map[j] = word_sz; @@ -477,9 +479,9 @@ void GC_init() #if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS) if (!GC_is_initialized) { BOOL (WINAPI *pfn) (LPCRITICAL_SECTION, DWORD) = NULL; - HMODULE hK32 = GetModuleHandle("kernel32.dll"); + HMODULE hK32 = GetModuleHandle(_T("kernel32.dll")); if (hK32) - (FARPROC) pfn = GetProcAddress(hK32, + pfn = GetProcAddress(hK32, "InitializeCriticalSectionAndSpinCount"); if (pfn) pfn(&GC_allocate_ml, 4000); @@ -804,7 +806,10 @@ void GC_init_inner() void GC_enable_incremental GC_PROTO(()) { -# if !defined(SMALL_CONFIG) +# if !defined(SMALL_CONFIG) && !defined(KEEP_BACK_PTRS) + /* If we are keeping back pointers, the GC itself dirties all */ + /* pages on which objects have been marked, making */ + /* incremental GC pointless. */ if (!GC_find_leak) { DCL_LOCK_STATE;