| version 1.1.1.1, 1999/11/27 10:58:32 | version 1.1.1.2, 2000/04/14 11:07:59 | 
|  |  | 
| # if defined(__STDC__) || defined(__cplusplus) | # if defined(__STDC__) || defined(__cplusplus) | 
| #   define GC_PROTO(args) args | #   define GC_PROTO(args) args | 
| typedef void * GC_PTR; | typedef void * GC_PTR; | 
|  | #   define GC_CONST const | 
| # else | # else | 
| #   define GC_PROTO(args) () | #   define GC_PROTO(args) () | 
| typedef char * GC_PTR; | typedef char * GC_PTR; | 
|  | #   define GC_CONST | 
| #  endif | #  endif | 
|  |  | 
| # ifdef __cplusplus | # ifdef __cplusplus | 
| 
| Line 96  GC_API GC_PTR (*GC_oom_fn) GC_PROTO((size_t bytes_requ |  | 
| Line 98  GC_API GC_PTR (*GC_oom_fn) GC_PROTO((size_t bytes_requ |  | 
| /* pointer to a previously allocated heap       */ | /* pointer to a previously allocated heap       */ | 
| /* object.                                      */ | /* object.                                      */ | 
|  |  | 
|  | GC_API int GC_find_leak; | 
|  | /* Do not actually garbage collect, but simply  */ | 
|  | /* report inaccessible memory that was not      */ | 
|  | /* deallocated with GC_free.  Initial value     */ | 
|  | /* is determined by FIND_LEAK macro.            */ | 
|  |  | 
| GC_API int GC_quiet;    /* Disable statistics output.  Only matters if  */ | GC_API int GC_quiet;    /* Disable statistics output.  Only matters if  */ | 
| /* collector has been compiled with statistics  */ | /* collector has been compiled with statistics  */ | 
| /* enabled.  This involves a performance cost,  */ | /* enabled.  This involves a performance cost,  */ | 
| /* and is thus not the default.                 */ | /* and is thus not the default.                 */ | 
|  |  | 
|  | GC_API int GC_finalize_on_demand; | 
|  | /* If nonzero, finalizers will only be run in   */ | 
|  | /* response to an eplit GC_invoke_finalizers    */ | 
|  | /* call.  The default is determined by whether  */ | 
|  | /* the FINALIZE_ON_DEMAND macro is defined      */ | 
|  | /* when the collector is built.                 */ | 
|  |  | 
|  | GC_API int GC_java_finalization; | 
|  | /* Mark objects reachable from finalizable      */ | 
|  | /* objects in a separate postpass.  This makes  */ | 
|  | /* it a bit safer to use non-topologically-     */ | 
|  | /* ordered finalization.  Default value is      */ | 
|  | /* determined by JAVA_FINALIZATION macro.       */ | 
|  |  | 
| GC_API int GC_dont_gc;  /* Dont collect unless explicitly requested, e.g. */ | GC_API int GC_dont_gc;  /* Dont collect unless explicitly requested, e.g. */ | 
| /* because it's not safe.                         */ | /* because it's not safe.                         */ | 
|  |  | 
| 
| Line 111  GC_API int GC_dont_expand; |  | 
| Line 133  GC_API int GC_dont_expand; |  | 
| GC_API int GC_full_freq;    /* Number of partial collections between    */ | GC_API int GC_full_freq;    /* Number of partial collections between    */ | 
| /* full collections.  Matters only if       */ | /* full collections.  Matters only if       */ | 
| /* GC_incremental is set.                   */ | /* GC_incremental is set.                   */ | 
|  | /* Full collections are also triggered if   */ | 
|  | /* the collector detects a substantial      */ | 
|  | /* increase in the number of in-use heap    */ | 
|  | /* blocks.  Values in the tens are now      */ | 
|  | /* perfectly reasonable, unlike for         */ | 
|  | /* earlier GC versions.                     */ | 
|  |  | 
| GC_API GC_word GC_non_gc_bytes; | GC_API GC_word GC_non_gc_bytes; | 
| /* Bytes not considered candidates for collection. */ | /* Bytes not considered candidates for collection. */ | 
| 
| Line 277  GC_API int GC_try_to_collect GC_PROTO((GC_stop_func st |  | 
| Line 305  GC_API int GC_try_to_collect GC_PROTO((GC_stop_func st |  | 
| /* Includes some pages that were allocated but never written.           */ | /* Includes some pages that were allocated but never written.           */ | 
| GC_API size_t GC_get_heap_size GC_PROTO((void)); | GC_API size_t GC_get_heap_size GC_PROTO((void)); | 
|  |  | 
|  | /* Return a lower bound on the number of free bytes in the heap.        */ | 
|  | GC_API size_t GC_get_free_bytes GC_PROTO((void)); | 
|  |  | 
| /* Return the number of bytes allocated since the last collection.      */ | /* Return the number of bytes allocated since the last collection.      */ | 
| GC_API size_t GC_get_bytes_since_gc GC_PROTO((void)); | GC_API size_t GC_get_bytes_since_gc GC_PROTO((void)); | 
|  |  | 
| 
| Line 321  GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROT |  | 
| Line 352  GC_API GC_PTR GC_malloc_atomic_ignore_off_page GC_PROT |  | 
|  |  | 
| #ifdef GC_ADD_CALLER | #ifdef GC_ADD_CALLER | 
| #  define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__ | #  define GC_EXTRAS GC_RETURN_ADDR, __FILE__, __LINE__ | 
| #  define GC_EXTRA_PARAMS GC_word ra, char * descr_string, int descr_int | #  define GC_EXTRA_PARAMS GC_word ra, GC_CONST char * descr_string, | 
|  | int descr_int | 
| #else | #else | 
| #  define GC_EXTRAS __FILE__, __LINE__ | #  define GC_EXTRAS __FILE__, __LINE__ | 
| #  define GC_EXTRA_PARAMS char * descr_string, int descr_int | #  define GC_EXTRA_PARAMS GC_CONST char * descr_string, int descr_int | 
| #endif | #endif | 
|  |  | 
| /* Debugging (annotated) allocation.  GC_gcollect will check            */ | /* Debugging (annotated) allocation.  GC_gcollect will check            */ | 
| 
| Line 510  GC_API int GC_invoke_finalizers GC_PROTO((void)); |  | 
| Line 542  GC_API int GC_invoke_finalizers GC_PROTO((void)); |  | 
| /* be finalized.  Return the number of finalizers       */ | /* be finalized.  Return the number of finalizers       */ | 
| /* that were run.  Normally this is also called         */ | /* that were run.  Normally this is also called         */ | 
| /* implicitly during some allocations.  If              */ | /* implicitly during some allocations.  If              */ | 
| /* FINALIZE_ON_DEMAND is defined, it must be called     */ | /* GC-finalize_on_demand is nonzero, it must be called  */ | 
| /* explicitly.                                          */ | /* explicitly.                                          */ | 
|  |  | 
| /* GC_set_warn_proc can be used to redirect or filter warning messages. */ | /* GC_set_warn_proc can be used to redirect or filter warning messages. */ | 
| 
| Line 668  GC_API void (*GC_is_visible_print_proc) |  | 
| Line 700  GC_API void (*GC_is_visible_print_proc) |  | 
| # endif /* SOLARIS_THREADS */ | # endif /* SOLARIS_THREADS */ | 
|  |  | 
|  |  | 
| #if defined(IRIX_THREADS) || defined(LINUX_THREADS) | #if defined(IRIX_THREADS) || defined(LINUX_THREADS) || defined(HPUX_THREADS) | 
| /* We treat these similarly. */ | /* We treat these similarly. */ | 
| # include <pthread.h> | # include <pthread.h> | 
| # include <signal.h> | # include <signal.h> | 
| 
| Line 687  GC_API void (*GC_is_visible_print_proc) |  | 
| Line 719  GC_API void (*GC_is_visible_print_proc) |  | 
|  |  | 
| # if defined(PCR) || defined(SOLARIS_THREADS) || defined(WIN32_THREADS) || \ | # if defined(PCR) || defined(SOLARIS_THREADS) || defined(WIN32_THREADS) || \ | 
| defined(IRIX_THREADS) || defined(LINUX_THREADS) || \ | defined(IRIX_THREADS) || defined(LINUX_THREADS) || \ | 
| defined(IRIX_JDK_THREADS) | defined(IRIX_JDK_THREADS) || defined(HPUX_THREADS) | 
| /* Any flavor of threads except SRC_M3. */ | /* Any flavor of threads except SRC_M3. */ | 
| /* This returns a list of objects, linked through their first           */ | /* This returns a list of objects, linked through their first           */ | 
| /* word.  Its use can greatly reduce lock contention problems, since    */ | /* word.  Its use can greatly reduce lock contention problems, since    */ | 
| /* the allocation lock can be acquired and released many fewer times.   */ | /* the allocation lock can be acquired and released many fewer times.   */ | 
|  | /* lb must be large enough to hold the pointer field.                   */ | 
| GC_PTR GC_malloc_many(size_t lb); | GC_PTR GC_malloc_many(size_t lb); | 
| #define GC_NEXT(p) (*(GC_PTR *)(p))     /* Retrieve the next element    */ | #define GC_NEXT(p) (*(GC_PTR *)(p))     /* Retrieve the next element    */ | 
| /* in returned list.            */ | /* in returned list.            */ |