version 1.1.1.2, 2000/04/14 11:07:57 |
version 1.1.1.3, 2000/12/01 14:48:23 |
|
|
# ifdef WIN32_THREADS |
# ifdef WIN32_THREADS |
GC_API CRITICAL_SECTION GC_allocate_ml; |
GC_API CRITICAL_SECTION GC_allocate_ml; |
# else |
# else |
# if defined(IRIX_THREADS) || defined(LINUX_THREADS) \ |
# if defined(IRIX_THREADS) || defined(IRIX_JDK_THREADS) \ |
|| defined(IRIX_JDK_THREADS) |
|| (defined(LINUX_THREADS) && defined(USE_SPIN_LOCK)) |
pthread_t GC_lock_holder = NO_THREAD; |
pthread_t GC_lock_holder = NO_THREAD; |
# else |
# else |
# if defined(HPUX_THREADS) |
# if defined(HPUX_THREADS) \ |
|
|| defined(LINUX_THREADS) && !defined(USE_SPIN_LOCK) |
pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER; |
pthread_mutex_t GC_allocate_ml = PTHREAD_MUTEX_INITIALIZER; |
# else |
# else |
--> declare allocator lock here |
--> declare allocator lock here |
Line 119 extern signed_word GC_mem_found; |
|
Line 120 extern signed_word GC_mem_found; |
|
for (i = 8*sizeof(word) + 1; i <= 16 * sizeof(word); i++) { |
for (i = 8*sizeof(word) + 1; i <= 16 * sizeof(word); i++) { |
GC_size_map[i] = (ROUNDED_UP_WORDS(i) + 1) & (~1); |
GC_size_map[i] = (ROUNDED_UP_WORDS(i) + 1) & (~1); |
} |
} |
|
# ifdef GC_GCJ_SUPPORT |
|
/* Make all sizes up to 32 words predictable, so that a */ |
|
/* compiler can statically perform the same computation, */ |
|
/* or at least a computation that results in similar size */ |
|
/* classes. */ |
|
for (i = 16*sizeof(word) + 1; i <= 32 * sizeof(word); i++) { |
|
GC_size_map[i] = (ROUNDED_UP_WORDS(i) + 3) & (~3); |
|
} |
|
# endif |
/* We leave the rest of the array to be filled in on demand. */ |
/* We leave the rest of the array to be filled in on demand. */ |
} |
} |
|
|
Line 439 void GC_init_inner() |
|
Line 449 void GC_init_inner() |
|
# ifdef MSWIN32 |
# ifdef MSWIN32 |
GC_init_win32(); |
GC_init_win32(); |
# endif |
# endif |
# if defined(LINUX) && \ |
# if defined(SEARCH_FOR_DATA_START) |
(defined(POWERPC) || defined(ALPHA) || defined(SPARC) || defined(IA64)) |
/* This doesn't really work if the collector is in a shared library. */ |
GC_init_linux_data_start(); |
GC_init_linux_data_start(); |
# endif |
# endif |
# ifdef SOLARIS_THREADS |
# ifdef SOLARIS_THREADS |
Line 807 struct callinfo info[NFRAMES]; |
|
Line 817 struct callinfo info[NFRAMES]; |
|
|
|
#endif /* SAVE_CALL_CHAIN */ |
#endif /* SAVE_CALL_CHAIN */ |
|
|
# ifdef SRC_M3 |
/* Needed by SRC_M3, gcj, and should perhaps be the official interface */ |
|
/* to GC_dont_gc. */ |
void GC_enable() |
void GC_enable() |
{ |
{ |
GC_dont_gc--; |
GC_dont_gc--; |
Line 817 void GC_disable() |
|
Line 828 void GC_disable() |
|
{ |
{ |
GC_dont_gc++; |
GC_dont_gc++; |
} |
} |
# endif |
|
|
|
#if !defined(NO_DEBUGGING) |
#if !defined(NO_DEBUGGING) |
|
|