platform/upstream/libgc.git
12 years agoRecognize GC_DONT_GC macro in gc.h (causes GC_INIT to turn off GC)
Ivan Maidanski [Sat, 9 Jun 2012 18:13:53 +0000 (22:13 +0400)]
Recognize GC_DONT_GC macro in gc.h (causes GC_INIT to turn off GC)

* include/gc.h (GC_INIT_CONF_MAX_RETRIES): Recognize GC_DONT_GC
(set GC_dont_gc to 1 in that case) to turn off GC at start-up (for
a debugging purpose).

12 years agoUpdate ChangeLog file
Ivan Maidanski [Fri, 8 Jun 2012 17:27:06 +0000 (21:27 +0400)]
Update ChangeLog file

12 years agoAdd comment in GC_memalign
Ivan Maidanski [Fri, 8 Jun 2012 17:13:14 +0000 (21:13 +0400)]
Add comment in GC_memalign

* mallocx.c (GC_memalign): Add comment for GC_malloc invocation result.

12 years agoFix CORD_cat_char_star to prevent SEGV in case of out-of-memory
Ivan Maidanski [Fri, 8 Jun 2012 17:10:17 +0000 (21:10 +0400)]
Fix CORD_cat_char_star to prevent SEGV in case of out-of-memory

* cordbscs.c (CORD_cat_char_star): Check GC_MALLOC_ATOMIC result for
NULL (do OUT_OF_MEMORY in such case) to prevent SEGV.

12 years agoUpdate ChangeLog file
Ivan Maidanski [Thu, 7 Jun 2012 19:02:55 +0000 (23:02 +0400)]
Update ChangeLog file

12 years agoFix GC_scratch_alloc and GC_get_maps invocations to prevent SEGV
Ivan Maidanski [Thu, 7 Jun 2012 18:00:37 +0000 (22:00 +0400)]
Fix GC_scratch_alloc and GC_get_maps invocations to prevent SEGV
(if out of memory)

* dyn_load.c (GC_register_dynamic_libraries): If GC_scratch_alloc
fails (returns null) then abort (with the appropriate message) instead
of causing SEGV.
* os_dep.c (GC_dirty_init): Likewise.
* headers.c (GC_init_headers): Report error and exit if
GC_scratch_alloc fails.
* include/private/gc_priv.h (GC_scratch_alloc): Improve comment.
* os_dep.c (GC_print_address_map): If GC_get_maps return null then
print the appropriate message (instead of passing null to GC_err_puts
thus causing SEGV).

12 years agoUpdate ChangeLog file
Ivan Maidanski [Sun, 3 Jun 2012 13:55:00 +0000 (17:55 +0400)]
Update ChangeLog file

12 years agoAdd public setter and getter for GC_push_other_roots
Ivan Maidanski [Sat, 2 Jun 2012 16:21:18 +0000 (20:21 +0400)]
Add public setter and getter for GC_push_other_roots

* include/gc_mark.h (GC_push_other_roots_proc): New type.
* include/gc_mark.h (GC_set_push_other_roots,
GC_get_push_other_roots): New API function (unsynchronized).
* os_dep.c (GC_set_push_other_roots, GC_get_push_other_roots):
Likewise.
* include/private/gc_priv.h (GC_push_other_roots): Declare using
GC_push_other_roots_proc type .
* os_dep.c (GC_push_other_roots): Likewise.
* os_dep.c (GC_default_push_other_roots): Use GC_CALLBACK calling
convention.

12 years agoAdd GC_push_all/conditional() to GC public API
Ivan Maidanski [Sat, 2 Jun 2012 15:27:57 +0000 (19:27 +0400)]
Add GC_push_all/conditional() to GC public API

* include/gc_mark.h (GC_push_all, GC_push_conditional): Expose
function as a part of public API (use GC_API and GC_CALL); replace
internal ptr_t and GC_bool type to char* and int, respectively; add
comment.
* mark.c (GC_push_all, GC_push_conditional): Likewise.
* include/private/gc_priv.h (GC_push_all, GC_push_conditional): Remove
function declaration.
* include/private/gc_priv.h (GC_PUSH_CONDITIONAL): New macro used
internally instead of GC_push_conditional (defined depending on
GC_DISABLE_INCREMENTAL).
* include/private/gc_priv.h (GC_PUSH_CONDITIONAL, GC_push_all_stack):
Update comment.
* mark.c (GC_push_conditional): Define for GC_DISABLE_INCREMENTAL case
(rediect to GC_push_all).
* mark_rts.c (GC_push_conditional_with_exclusions): Use
GC_PUSH_CONDITIONAL() instead of GC_push_conditional().
* mark_rts.c (GC_push_roots): Reformat the comment.

12 years agoFix visibility of GC_push_all/conditional, GC_push_other_roots symbols
Ivan Maidanski [Sat, 2 Jun 2012 08:33:03 +0000 (12:33 +0400)]
Fix visibility of GC_push_all/conditional, GC_push_other_roots symbols

* include/private/gc_priv.h (GC_push_all, GC_push_other_roots):
Declare as GC_API_PRIV (instead of GC_INNER) to make the symbol
externally visible to some well-known 3rd-party software (e.g., ECL).
* include/private/gc_priv.h (GC_push_conditional): Declare as
GC_API_PRIV (only if GC_DISABLE_INCREMENTAL is undefined).
* mark.c (GC_push_all, GC_push_conditional): Remove GC_INNER (to match
the declaration).
* os_dep.c (GC_push_other_roots): Likewise.

12 years agoUpdate AUTHORS file
Ivan Maidanski [Sat, 2 Jun 2012 09:21:08 +0000 (13:21 +0400)]
Update AUTHORS file

12 years agoFix GC_FirstDLOpenedLinkMap() for NetBSD 6 release
Tsugutomo Enami [Sat, 2 Jun 2012 09:31:43 +0000 (13:31 +0400)]
Fix GC_FirstDLOpenedLinkMap() for NetBSD 6 release
(this empty commit contains only the fixed message for the previous commit)

* dyn_load.c: Include sys/param.h and dlfcn.h on NetBSD.
* dyn_load.c (GC_FirstDLOpenedLinkMap): Obtain link map using dlinfo()
on NetBSD if RTLD_DI_LINKMAP feature present (defined).

12 years agoFix GC_FirstDLOpenedLinkMap() for FreeBSD 9 release
Tsugutomo Enami [Thu, 31 May 2012 23:12:24 +0000 (03:12 +0400)]
Fix GC_FirstDLOpenedLinkMap() for FreeBSD 9 release

* dyn_load.c: Include sys/param.h and dlfcn.h on FreeBSD.
* dyn_load.c (GC_FirstDLOpenedLinkMap): Obtain link map using dlinfo()
on FreeBSD if RTLD_DI_LINKMAP feature present (defined).

12 years agoUpdate ChangeLog file
Ivan Maidanski [Fri, 25 May 2012 04:46:56 +0000 (08:46 +0400)]
Update ChangeLog file

12 years agoFix assertion in GC_malloc_[atomic_]uncollectable (THREADS case only)
Ivan Maidanski [Wed, 16 May 2012 04:34:10 +0000 (08:34 +0400)]
Fix assertion in GC_malloc_[atomic_]uncollectable (THREADS case only)

* malloc.c (GC_malloc_uncollectable): Do not check assertion on
hb_n_marks to be zero if multi-threaded; add comment.
* mallocx.c (GC_malloc_atomic_uncollectable): Likewise.

12 years agoBump libgc version
Ivan Maidanski [Tue, 15 May 2012 07:42:52 +0000 (11:42 +0400)]
Bump libgc version

* README: Bump version to 7.3alpha3.
* configure.ac: Likewise.
* include/gc_version.h (GC_TMP_ALPHA_VERSION): Likewise.

12 years agoBump libgc version to 7.3alpha2 gc7_3alpha2
Ivan Maidanski [Fri, 11 May 2012 17:44:19 +0000 (21:44 +0400)]
Bump libgc version to 7.3alpha2

* ChangeLog: Set release dates.
* README: Bump version.
* configure.ac: Likewise.
* include/gc_version.h (GC_TMP_ALPHA_VERSION): Likewise.

12 years agoUpdate ChangeLog file
Ivan Maidanski [Tue, 1 May 2012 15:10:09 +0000 (19:10 +0400)]
Update ChangeLog file

12 years agoSet GC_GRANULE_BYTES/GC_GRANULE_WORDS for x32
H.J. Lu [Mon, 16 Apr 2012 16:27:45 +0000 (09:27 -0700)]
Set GC_GRANULE_BYTES/GC_GRANULE_WORDS for x32

* include/gc_tiny_fl.h (GC_GRANULE_BYTES): Set to 8 for x32.
(GC_GRANULE_WORDS): Set to 2 for x32.

12 years agoDefine ALIGNMENT and CPP_WORDSZ for x32
H.J. Lu [Mon, 16 Apr 2012 16:26:07 +0000 (09:26 -0700)]
Define ALIGNMENT and CPP_WORDSZ for x32

* include/private/gcconfig.h: (ALIGNMENT): Set to 4 for x32.
(CPP_WORDSZ): Set to 32 for x32.

12 years agoMerge commit 'paurkedal/fix-freelist-check-and-specific'
Ivan Maidanski [Mon, 30 Apr 2012 15:38:31 +0000 (19:38 +0400)]
Merge commit 'paurkedal/fix-freelist-check-and-specific'

12 years agoUpdate ChangeLog file
Ivan Maidanski [Sun, 29 Apr 2012 14:19:02 +0000 (18:19 +0400)]
Update ChangeLog file

12 years agoMerge branch 'freebsd-use-pthread-specific'
Ivan Maidanski [Sun, 29 Apr 2012 13:40:06 +0000 (17:40 +0400)]
Merge branch 'freebsd-use-pthread-specific'

12 years agoMerge branch 'fix-freelist-check-and-specific'
Ivan Maidanski [Sun, 29 Apr 2012 13:39:20 +0000 (17:39 +0400)]
Merge branch 'fix-freelist-check-and-specific'

12 years agoAdd two missing GC_start_debugging() calls.
Petter Urkedal [Sun, 29 Apr 2012 11:30:39 +0000 (13:30 +0200)]
Add two missing GC_start_debugging() calls.

* dbg_mlc.c (GC_debug_generic_malloc_inner): Add GC_start_debugging() if not
done.  This fixes the missing registration of the debug header displacement.
* dbg_mlc.c (GC_debug_generic_malloc_inner_ignore_off_page): Ditto.

12 years agoFix USE_CUSTOM_SPECIFIC mode (if manually enabled) for Win32
Ivan Maidanski [Sat, 21 Apr 2012 16:18:55 +0000 (20:18 +0400)]
Fix USE_CUSTOM_SPECIFIC mode (if manually enabled) for Win32

* win32_threads.c (GC_unregister_my_thread,
GC_remove_all_threads_but_me, GC_thread_exit_proc): Invoke
GC_remove_specific (if THREAD_LOCAL_ALLOC) after destroying
thread-local list (same as in pthread_support.c).

12 years agoUpdate ChangeLog file
Ivan Maidanski [Sun, 22 Apr 2012 11:52:18 +0000 (15:52 +0400)]
Update ChangeLog file

12 years agoUpdate TODO file (add FIXME item)
Ivan Maidanski [Sun, 22 Apr 2012 07:47:10 +0000 (11:47 +0400)]
Update TODO file (add FIXME item)

12 years agoUse USE_COMPILER_TLS on Cygwin
Ivan Maidanski [Sun, 22 Apr 2012 07:32:08 +0000 (11:32 +0400)]
Use USE_COMPILER_TLS on Cygwin

* include/private/thread_local_alloc.h (USE_COMPILER_TLS): Define for
Cygwin by default (only starting from GCC v4).

12 years agoUse pthread_key for thread-local storage on FreeBSD
Ivan Maidanski [Sun, 22 Apr 2012 06:14:15 +0000 (10:14 +0400)]
Use pthread_key for thread-local storage on FreeBSD

* include/private/thread_local_alloc.h (USE_PTHREAD_SPECIFIC): Define
for FreeBSD by default (instead of USE_CUSTOM_SPECIFIC).

12 years agoAdd assertion in GC_getspecific on qtid
Ivan Maidanski [Sat, 21 Apr 2012 19:51:41 +0000 (23:51 +0400)]
Add assertion in GC_getspecific on qtid

* include/private/specific.h (GC_getspecific): Add assertion on "qtid"
value.

12 years agoCode refactoring of specific.c and specific.h;
Ivan Maidanski [Sat, 21 Apr 2012 19:44:19 +0000 (23:44 +0400)]
Code refactoring of specific.c and specific.h;
cast pointers to word instead of unsigned long

* include/private/specific.h (CACHE_HASH, HASH): Add parentheses
around the argument.
* include/private/specific.h (CACHE_HASH): Remove unnecessary cast to
long.
* include/private/specific.h (HASH): Rename "n" argument to "p";
cast "p" to word instead of long; cast result to unsigned.
* include/private/specific.h (quick_thread_id, INVALID_QTID): Cast to
word instead of unsigned long.
* specific.c (GC_key_create_inner): Cast invalid_tse.next (pointer) to
word instead of unsigned long.
* include/private/specific.h (GC_slow_getspecific, GC_getspecific):
Change type of "qtid" from unsigned long to word.
* specific.c (GC_slow_getspecific): Likewise.
* include/private/specific.h (GC_getspecific): Remove "hash_val"
local variable.
* specific.c: Do not include gc_priv.h as included from
thread_local_alloc.h; do not include atomic_ops.h as included from
specific.h file.

12 years agoFix USE_CUSTOM_SPECIFIC mode (if manually enabled) for Win32
Ivan Maidanski [Sat, 21 Apr 2012 16:18:55 +0000 (20:18 +0400)]
Fix USE_CUSTOM_SPECIFIC mode (if manually enabled) for Win32

* win32_threads.c (GC_unregister_my_thread,
GC_remove_all_threads_but_me, GC_thread_exit_proc): Invoke
GC_remove_specific (if THREAD_LOCAL_ALLOC) after destroying
thread-local list (same as in pthread_support.c).

12 years agoFix GC_remove_all_threads_but_me to cleanup thread-specific data storage
Ivan Maidanski [Sat, 21 Apr 2012 15:57:25 +0000 (19:57 +0400)]
Fix GC_remove_all_threads_but_me to cleanup thread-specific data storage

* pthread_support.c (GC_remove_all_threads_but_me): Call
GC_remove_specific after destroying thread-local list.

12 years agoFix GC_setspecific to prevent garbage collection inside
Ivan Maidanski [Sat, 21 Apr 2012 10:31:26 +0000 (14:31 +0400)]
Fix GC_setspecific to prevent garbage collection inside

* specific.c (GC_setspecific): Call MALLOC_CLEAR with GC temporarily
disabled; add comment about lock.

12 years agoInclude atomic_ops.h if THREAD_LOCAL_ALLOC to enable GC_check_fl_marks
Ivan Maidanski [Sat, 21 Apr 2012 09:45:49 +0000 (13:45 +0400)]
Include atomic_ops.h if THREAD_LOCAL_ALLOC to enable GC_check_fl_marks

* include/private/gc_priv.h: Include atomic_ops.h if GC_ASSERTIONS
and THREAD_LOCAL_ALLOC to make AO_load available to GC_check_fl_marks.

12 years agoDummy merge branch 'paurkedal/fix-freelist-checks'
Ivan Maidanski [Sat, 21 Apr 2012 09:31:38 +0000 (13:31 +0400)]
Dummy merge branch 'paurkedal/fix-freelist-checks'

12 years agoFix GC_check_fl_marks regarding concurrent access
Petter Urkedal [Sat, 21 Apr 2012 09:28:12 +0000 (13:28 +0400)]
Fix GC_check_fl_marks regarding concurrent access

* alloc.c (GC_check_fl_marks): Re-read each pointer atomically before
following the pointed-to link and bail out if the result is different
(this can happen if the thread has popped the object off the
free-list); the function is a no-op if AO_load is unavailable.

12 years agoCode refactoring of GC_check_tls_for/GC_check_fl_marks
Ivan Maidanski [Fri, 20 Apr 2012 05:12:47 +0000 (09:12 +0400)]
Code refactoring of GC_check_tls_for/GC_check_fl_marks

* alloc.c (GC_check_fl_marks): Change prototype (pass pointer to
"freelist" element instead of value); do not define the function if
THREAD_LOCAL_ALLOC undefined.
* include/private/gc_priv.h (GC_check_fl_marks): Likewise.
* alloc.c (GC_check_fl_marks): Skip check if the argument points to
a special (non-pointer) value; update comment; rename "q" local
variable to "list".
* thread_local_alloc.c (GC_check_tls_for): Update code according to
GC_check_fl_marks functionality change (remove checks for special
value).

12 years agoCode refactoring of GC_generic_malloc_inner (eliminate recursion)
Ivan Maidanski [Fri, 20 Apr 2012 04:53:46 +0000 (08:53 +0400)]
Code refactoring of GC_generic_malloc_inner (eliminate recursion)

* malloc.c (GC_generic_malloc_inner): Update "lg" value after GC_init
and GC_extend_size_map calls; add assertion on "lg" value after
GC_extend_size_map call; update "opp" and "op" values and retry
allocation instead of recursive call; replace "goto" with return
(remove "out" label).

12 years agoFix checks of thread-local free-lists.
Petter Urkedal [Fri, 20 Apr 2012 08:03:28 +0000 (10:03 +0200)]
Fix checks of thread-local free-lists.

* include/private/gc_priv.h, alloc.c (GC_check_fl_marks): Re-read each
pointer before following the pointed-to link, and bail out if the result is
different.  This can happen if the thread has popped the object off the
free-list.  The prototype is changed to allow re-reading the pointers.
* thread_local_alloc.c (GC_check_tls_for): Adjust the calls accordingly.

12 years agoUpdate AUTHORS file
Ivan Maidanski [Tue, 17 Apr 2012 04:04:47 +0000 (08:04 +0400)]
Update AUTHORS file

12 years agoMinor code refactoring regarding HAVE_BUILTIN_UNWIND_INIT
Ivan Maidanski [Tue, 17 Apr 2012 03:52:08 +0000 (07:52 +0400)]
Minor code refactoring regarding HAVE_BUILTIN_UNWIND_INIT

* include/private/gcconfig.h (HAVE_BUILTIN_UNWIND_INIT): Do not define
for Darwin/ppc and RTEMS.
* mach_dep.c (GC_with_callee_saves_pushed): Remove target-specific
checks for Darwin/ppc and RTEMS as HAVE_BUILTIN_UNWIND_INIT is not
defined in that case.

12 years agoFix GC_with_callee_saves_pushed for clang (disable __builtin_unwind_init)
Niklas Therning [Tue, 17 Apr 2012 11:38:29 +0000 (15:38 +0400)]
Fix GC_with_callee_saves_pushed for clang (disable __builtin_unwind_init)

* include/private/gcconfig.h (HAVE_BUILTIN_UNWIND_INIT): Do not define
for clang (as __builtin_unwind_init seems to be a no-op in the latest
clang release).

12 years agotests: Fix subthread_create to have PARALLEL_MARK as requested
Ivan Maidanski [Thu, 12 Apr 2012 20:02:47 +0000 (00:02 +0400)]
tests: Fix subthread_create to have PARALLEL_MARK as requested

* tests/subthread_create.c: Include config.h if HAVE_CONFIG_H (to have
PARALLEL_MARK defined if configured so).

12 years agoFix disclaim_test to get GC_PTHREADS macro defined if multi-threaded
Ivan Maidanski [Thu, 12 Apr 2012 19:53:50 +0000 (23:53 +0400)]
Fix disclaim_test to get GC_PTHREADS macro defined if multi-threaded

* tests/disclaim_test.c: Include config.h if HAVE_CONFIG_H to define
GC_PTHREADS (indirectly) if multi-threading is on.

12 years agoRemove redundant check for GC_RTEMS_PTHREADS in gc_config_macros.h
Ivan Maidanski [Thu, 12 Apr 2012 19:49:30 +0000 (23:49 +0400)]
Remove redundant check for GC_RTEMS_PTHREADS in gc_config_macros.h

* include/gc_config_macros.h (GC_PTHREADS): Do not test
GC_RTEMS_PTHREADS macro in case of GC_WIN32_THREADS defined.

12 years agoRemove code duplication in gc_locks.h regarding USE_PTHREAD_LOCKS
Ivan Maidanski [Thu, 12 Apr 2012 19:44:00 +0000 (23:44 +0400)]
Remove code duplication in gc_locks.h regarding USE_PTHREAD_LOCKS

* include/private/gc_locks.h (USE_PTHREAD_LOCKS): Remove code
duplication.

12 years agoFix a typo in comment in pthread_support.h
Ivan Maidanski [Wed, 11 Apr 2012 20:01:55 +0000 (00:01 +0400)]
Fix a typo in comment in pthread_support.h

* include/private/pthread_support.h (DETACHED): Fix a typo in comment.

12 years agoMerge branch 'disclaim-test-add'
Ivan Maidanski [Wed, 11 Apr 2012 19:59:33 +0000 (23:59 +0400)]
Merge branch 'disclaim-test-add'

12 years agoFix a typo in comment inside GC_finalized_malloc
Ivan Maidanski [Wed, 11 Apr 2012 19:56:06 +0000 (23:56 +0400)]
Fix a typo in comment inside GC_finalized_malloc

12 years agoFix bug in finalized allocation.
Petter Urkedal [Wed, 11 Apr 2012 19:11:03 +0000 (21:11 +0200)]
Fix bug in finalized allocation.

* fnlz_mlc.c (GC_register_disclaim_proc): Make sure to re-read our
GC_size_map entry after calling GC_generic_malloc, in case it had to be
extended.

12 years agoImprove disclaim_test to detect bug in fnlz_mlc
Ivan Maidanski [Tue, 10 Apr 2012 04:38:22 +0000 (08:38 +0400)]
Improve disclaim_test to detect bug in fnlz_mlc

* tests/disclaim_test.c (misc_sizes_dct): Add "log_size" local
variable (used for "size" evaluation); add assertion on "log_size"
value.

12 years agoUpdate ChangeLog
Ivan Maidanski [Mon, 9 Apr 2012 04:15:01 +0000 (08:15 +0400)]
Update ChangeLog

12 years agoDo not compile backgraph.c unless configure '--enable-gc-debug'
Ivan Maidanski [Mon, 9 Apr 2012 04:02:42 +0000 (08:02 +0400)]
Do not compile backgraph.c unless configure '--enable-gc-debug'

* Makefile.am (libgc_la_SOURCES): Exclude "backgraph" entry from
unconditional list; add this entry only if MAKE_BACK_GRAPH.
* configure.ac (MAKE_BACK_GRAPH): New AM conditional (defined only if
enable_gc_debug explicitly set to yes).

12 years agoUpdate ChangeLog
Ivan Maidanski [Tue, 3 Apr 2012 04:50:23 +0000 (08:50 +0400)]
Update ChangeLog

12 years agoUpdate TODO file
Ivan Maidanski [Mon, 2 Apr 2012 18:45:21 +0000 (22:45 +0400)]
Update TODO file

12 years agoFIX: Disable incremental mode on Darwin if fork handling requested
Ivan Maidanski [Mon, 2 Apr 2012 18:31:22 +0000 (22:31 +0400)]
FIX: Disable incremental mode on Darwin if fork handling requested

* doc/README.macros (NO_HANDLE_FORK): Replace back with HANDLE_FORK
and update.
* include/private/gcconfig.h (CAN_HANDLE_FORK): Define also for Darwin
in case of MPROTECT_VDB.
* misc.c (GC_set_handle_fork): Handle Darwin properly; add comment.
* os_dep.c (GC_dirty_init): Do not turn on GC_dirty_maintained for
Darwin if GC_handle_fork is on; add comment; remove FIXME.
* pthread_support.c (GC_fork_prepare_proc): Remove WARN for Darwin
(since GC_dirty_maintained is off in that case).
* pthread_support.c (GC_fork_child_proc): Remove comment (for Darwin).

12 years agoAdd public GC_set_handle_fork to control forked child handling support
Ivan Maidanski [Mon, 2 Apr 2012 16:18:12 +0000 (20:18 +0400)]
Add public GC_set_handle_fork to control forked child handling support

* include/gc.h (GC_set_handle_fork): New API function.
* misc.c (GC_set_handle_fork): Likewise.
* include/private/gc_priv.h (GC_handle_fork): New internal variable
declaration (only if CAN_HANDLE_FORK).
* misc.c (GC_handle_fork): New internal variable (defined only if
CAN_HANDLE_FORK); initialize to TRUE if HANDLE_FORK.
* include/private/gcconfig.h (HANDLE_FORK): Replace with
CAN_HANDLE_FORK.
* pthread_support.c (HANDLE_FORK): Likewise.
* win32_threads.c (HANDLE_FORK): Likewise.
* include/private/gcconfig.h (CAN_HANDLE_FORK): Always define macro if
HANDLE_FORK.
* pthread_support.c (GC_thr_init): Replace HANDLE_FORK with
CAN_HANDLE_FORK; call pthread_atfork only if GC_handle_fork; update
the comment.
* win32_threads.c (GC_thr_init): Likewise.
* tests/test.c (NO_TEST_HANDLE_FORK): Define new macro if fork
handling is not supported (or is a no-op) on the target.
* tests/test.c (INIT_FORK_SUPPORT): New macro (invoke
GC_set_handle_fork unless NO_TEST_HANDLE_FORK).
* tests/test.c (GC_OPT_INIT): New macro (defined to GC_INIT or empty).
* tests/test.c (GC_COND_INIT): Use INIT_FORK_SUPPORT and GC_OPT_INIT.
* tests/test.c (run_one_test): Test NO_TEST_HANDLE_FORK (instead of
target-specific macros).
* win32_threads.c (GC_remove_all_threads_but_me, GC_fork_prepare_proc,
GC_fork_parent_proc, GC_fork_child_proc): Do not test GC_PTHREADS.
* configure.ac (HANDLE_FORK, NO_HANDLE_FORK): Update message.

12 years agoRemove redundant public GC_HAVE_GET_HEAP_USAGE_SAFE macro
Ivan Maidanski [Fri, 30 Mar 2012 03:53:06 +0000 (07:53 +0400)]
Remove redundant public GC_HAVE_GET_HEAP_USAGE_SAFE macro

* include/gc.h (GC_HAVE_GET_HEAP_USAGE_SAFE): Remove public HAVE_
macro (since function availability could be determined by autotools);
update the comment.

12 years agoconfigure: add --enable-handle-fork option
Andy Wingo [Tue, 27 Mar 2012 11:20:37 +0000 (13:20 +0200)]
configure: add --enable-handle-fork option

* configure.ac: Add --enable-handle-fork option; if explicitly passed,
enables or disables the pthread_atfork support; if not passed, the
default, as determined by gcconfig.h, is to enable HANDLE_FORK if it
is supported on the target platform.

12 years agodoc: Update README for Solaris regarding multi-threading support
Ivan Maidanski [Wed, 28 Mar 2012 16:17:33 +0000 (20:17 +0400)]
doc: Update README for Solaris regarding multi-threading support

* doc/README.solaris2 (SOLARIS THREADS): Update.
* doc/overview.html: Remove information about Solaris old-style
threads support.

12 years agoFix autogen.sh to prevent reporting success if autoreconf failed
Ivan Maidanski [Wed, 28 Mar 2012 15:16:07 +0000 (19:16 +0400)]
Fix autogen.sh to prevent reporting success if autoreconf failed

* autogen.sh: Add "set -e" command to abort script execution on
autoreconf failure (thus not printing "ready" in that case).

12 years agoFix ChangeLog (regarding autoconf)
Ivan Maidanski [Wed, 28 Mar 2012 04:52:13 +0000 (08:52 +0400)]
Fix ChangeLog (regarding autoconf)

12 years agoFix a typo and improve comment in dyn_load.c (Android)
Ivan Maidanski [Mon, 26 Mar 2012 03:30:07 +0000 (07:30 +0400)]
Fix a typo and improve comment in dyn_load.c (Android)

12 years agoUpdate ChangeLog
Ivan Maidanski [Sun, 25 Mar 2012 08:11:59 +0000 (12:11 +0400)]
Update ChangeLog

12 years agoFix GC_clear_stack declaration and make it public
Ivan Maidanski [Sat, 24 Mar 2012 10:24:27 +0000 (14:24 +0400)]
Fix GC_clear_stack declaration and make it public
(Includes reverting part of commit b2345fb)

* include/gc_mark.h (GC_clear_stack): New API function.
* include/private/gc_priv.h (GC_clear_stack): Remove declaration.
* misc.c (GC_clear_stack): Replace GC_INNER with GC_API; add GC_CALL
calling conventions modifier.

12 years agoReplace GC_ms_entry declaration with opaque definition for public API
Ivan Maidanski [Sun, 25 Mar 2012 07:07:25 +0000 (11:07 +0400)]
Replace GC_ms_entry declaration with opaque definition for public API

* include/gc_mark.h (GC_ms_entry): Define structure as opaque unless
GC_BUILD (otherwise remains as declaration which is defined in
private/gc_pmark.h).

12 years agoFix visibility of some GC internal symbols used by GCJ
Ivan Maidanski [Sun, 25 Mar 2012 06:32:05 +0000 (10:32 +0400)]
Fix visibility of some GC internal symbols used by GCJ
(Includes reverting part of commits 68b9f27, 91d5df5, b2345fb)

* allchblk.c (GC_hblkfreelist, GC_free_bytes): Do not define array as
STATIC again but only if GC_GCJ_SUPPORT (for GNU GCJ client).
* blacklst.c (GC_is_black_listed): Do not define as GC_INNER again
(for GNU GCJ client).
* include/private/gc_priv.h (GC_is_black_listed): Likewise.
* include/private/gc_priv.h (GC_hblkfreelist): Restore removed
declaration (but only if GC_GCJ_SUPPORT).
* reclaim.c (GC_n_set_marks): Do not define as STATIC again (for GCJ);
update the comment.

12 years agoFix HIDE_POINTER definition in gc.h
Ivan Maidanski [Sat, 24 Mar 2012 08:08:45 +0000 (12:08 +0400)]
Fix HIDE_POINTER definition in gc.h
(Revert part of commit 14d2724)

* include/gc.h (HIDE_POINTER): Test GC_I_HIDE_POINTERS macro (as
a synonym to I_HIDE_POINTERS) again (remains for backward
compatibility only).

12 years agoFix gc.h compatibility regression by adding GC_PTR
Ivan Maidanski [Sat, 24 Mar 2012 06:01:22 +0000 (10:01 +0400)]
Fix gc.h compatibility regression by adding GC_PTR
(Revert part of commit e35a417)

* include/gc.h (GC_PTR): Add typedef again (for source-level backward
compatibility useful for clients currently using gcc_boehmgc or
mono_libgc).

12 years agoMove Symbian data-roots-related files to 'extra/symbian' folder
Ivan Maidanski [Wed, 21 Mar 2012 20:48:31 +0000 (00:48 +0400)]
Move Symbian data-roots-related files to 'extra/symbian' folder

* extra/init_global_static_roots.cpp: Move to "extra/symbian" folder.
* extra/global_start.cpp: Likewise.
* extra/global_end.cpp: Likewise.
* Makefile.am (EXTRA_DIST): Update references to moved Symbian files.
* Makefile.direct (OTHER_MAKEFILES): Likewise.

12 years agoMove 'Mac_files' folder to 'extra' one
Ivan Maidanski [Wed, 21 Mar 2012 20:24:02 +0000 (00:24 +0400)]
Move 'Mac_files' folder to 'extra' one

* Mac_files: Move to "extra" folder.
* Makefile.am (EXTRA_DIST): Update references to Mac_files.
* Makefile.direct (OTHER_MAKEFILES): Likewise.
* Makefile.dj (OTHER_MAKEFILES): Likewise.
* doc/README.Mac: Update reference to MacOS_config.h file.

12 years agoUpdate TODO file
Ivan Maidanski [Wed, 21 Mar 2012 15:37:14 +0000 (19:37 +0400)]
Update TODO file

12 years agoMakefile: add Symbian build script files to package
Ivan Maidanski [Wed, 21 Mar 2012 15:36:39 +0000 (19:36 +0400)]
Makefile: add Symbian build script files to package

* Makefile.am (EXTRA_DIST): Add Symbian build/s60v3 script files.
* Makefile.direct (OTHER_FILES): Likewise.

12 years agoMakefile: Add fnlz_mlc.c and gcj_mlc.c to source files list (Symbian)
Ivan Maidanski [Wed, 21 Mar 2012 15:25:12 +0000 (19:25 +0400)]
Makefile: Add fnlz_mlc.c and gcj_mlc.c to source files list (Symbian)

* build/s60v3/libgc.mmp (SOURCE): Add fnlz_mlc.c and gcj_mlc.c files.

12 years agoDummy merge branch 'iphone_libgc_6x'
Ivan Maidanski [Tue, 20 Mar 2012 19:00:57 +0000 (23:00 +0400)]
Dummy merge branch 'iphone_libgc_6x'

12 years agoUpdate ChangeLog and AUTHORS files
Ivan Maidanski [Tue, 20 Mar 2012 18:59:19 +0000 (22:59 +0400)]
Update ChangeLog and AUTHORS files

12 years agoMerge branch 'symbian-port'
Ivan Maidanski [Tue, 20 Mar 2012 18:42:40 +0000 (22:42 +0400)]
Merge branch 'symbian-port'

12 years agoSelect GC_REGISTER_MAIN_STATIC_DATA behavior in build script (Symbian)
Ivan Maidanski [Tue, 20 Mar 2012 18:35:51 +0000 (22:35 +0400)]
Select GC_REGISTER_MAIN_STATIC_DATA behavior in build script (Symbian)

* build/s60v3/libgc.mmp (GC_DONT_REGISTER_MAIN_STATIC_DATA): Define
macro.
* misc.c (GC_REGISTER_MAIN_STATIC_DATA): Do not define specially for
SYMBIAN.

12 years agoMakefile: add Symbian-specific source and README files
Ivan Maidanski [Mon, 19 Mar 2012 17:18:28 +0000 (21:18 +0400)]
Makefile: add Symbian-specific source and README files

* Makefile.am (EXTRA_DIST): Add Symbian C++ files from "extra" folder.
* Makefile.direct (OTHER_MAKEFILES): Likewise.
* Makefile.direct (DOC_FILES): Add Symbian README file.
* doc/doc.am (dist_pkgdata_DATA): Likewise.

12 years agoFix GC_ALPHA_VERSION comparison in gctest and tools files
Ivan Maidanski [Fri, 16 Mar 2012 15:11:08 +0000 (19:11 +0400)]
Fix GC_ALPHA_VERSION comparison in gctest and tools files

* tests/test.c (GC_ALPHA_VERSION): Define to GC_TMP_ALPHA_VERSION if
not defined by gc_version.h.
* tools/add_gc_prefix.c (GC_ALPHA_VERSION): Likewise.
* tools/gcname.c (GC_ALPHA_VERSION): Likewise.

12 years agoMove Symbian cpp files to 'extra' folder;
Ivan Maidanski [Sun, 18 Mar 2012 13:50:45 +0000 (17:50 +0400)]
Move Symbian cpp files to 'extra' folder;
add GC prefix to init_global_static_roots Symbian-special API function.

12 years agoMerge with symbian_libgc_7x branch
Ivan Maidanski [Sun, 18 Mar 2012 12:04:58 +0000 (16:04 +0400)]
Merge with symbian_libgc_7x branch

12 years agomark.c: Replace C++ style comments with C ones in GC_is_marked
Ivan Maidanski [Sun, 18 Mar 2012 08:59:47 +0000 (12:59 +0400)]
mark.c: Replace C++ style comments with C ones in GC_is_marked

12 years agoSpeedup calloc size overflow check by preventing division if small values
Hans Boehm [Thu, 15 Mar 2012 17:09:05 +0000 (21:09 +0400)]
Speedup calloc size overflow check by preventing division if small values

* malloc.c (GC_SQRT_SIZE_MAX): New macro.
* malloc.c (calloc): Add fast initial size overflow check to avoid
integer division for reasonably small values passed.

12 years agoFix calloc-related code to prevent SIZE_MAX redefinition in sys headers
Ivan Maidanski [Thu, 15 Mar 2012 16:30:11 +0000 (20:30 +0400)]
Fix calloc-related code to prevent SIZE_MAX redefinition in sys headers

* malloc.c: Include limits.h for SIZE_MAX.
* malloc.c (SIZE_MAX, calloc): Define GC_SIZE_MAX instead of SIZE_MAX.

12 years agoUpdate AUTHORS and ChangeLog files
Ivan Maidanski [Thu, 15 Mar 2012 15:57:45 +0000 (19:57 +0400)]
Update AUTHORS and ChangeLog files

12 years agoFix allocation size overflows due to rounding.
Xi Wang [Wed, 14 Mar 2012 20:55:08 +0000 (04:55 +0800)]
Fix allocation size overflows due to rounding.

* malloc.c (GC_generic_malloc): Check if the allocation size is
rounded to a smaller value.
* mallocx.c (GC_generic_malloc_ignore_off_page): Likewise.

12 years agoFix calloc() overflow
Xi Wang [Wed, 14 Mar 2012 20:46:49 +0000 (04:46 +0800)]
Fix calloc() overflow

* malloc.c (calloc): Check multiplication overflow in calloc(),
assuming REDIRECT_MALLOC.

12 years agoUpdate ChangeLog
Ivan Maidanski [Thu, 8 Mar 2012 07:10:28 +0000 (11:10 +0400)]
Update ChangeLog

12 years agoFix configure enabling 'make check' with C++ support for Cygwin/MinGW
Ivan Maidanski [Tue, 6 Mar 2012 19:33:39 +0000 (23:33 +0400)]
Fix configure enabling 'make check' with C++ support for Cygwin/MinGW

* configure.ac (CXXLIBS): New variable; set it to "-lsupc++" for
Cygwin and MinGW if enable_cplusplus and the library is available.
* tests/tests.am (test_cpp_LDADD): Use "CXXLIBS" variable.

12 years agoUpdate ChangeLog
Ivan Maidanski [Tue, 6 Mar 2012 18:19:41 +0000 (22:19 +0400)]
Update ChangeLog

12 years agoDefine GC_DLL if DLL_EXPORT at GC build
Kai Tietz [Fri, 10 Feb 2012 16:30:47 +0000 (16:30 +0000)]
Define GC_DLL if DLL_EXPORT at GC build
(Apply part of commit 6488760 from 'gcc_boehmgc' branch.)

* include/gc_config_macros.h (GC_DLL): Define if we are actually in GC
build and DLL_EXPORT is defined (unless prohibited by GC_NOT_DLL)
preventing GC internal symbols exporting on Cygwin and MinGW.

12 years agoFix gctest (for Win32) to avoid GC_print_stats internal variable usage
Ivan Maidanski [Tue, 6 Mar 2012 16:26:24 +0000 (20:26 +0400)]
Fix gctest (for Win32) to avoid GC_print_stats internal variable usage

* include/private/gc_priv.h (GC_print_stats): Update the comment.
* tests/test.c (GC_print_stats, run_one_test, check_heap_stats):
Rename GC_print_stats to print_stats (since the former is used
internally by GC and not exported).
* tests/test.c (print_stats): Always define (either as a macro or
a static int variable) regardless of GC_DLL and SMALL_CONFIG.
* tests/test.c (INIT_PRINT_STATS): New macro (used to initialize
print_stats if needed); GETENV is used if needed and available.
* tests/test.c (GC_COND_INIT): Invoke INIT_PRINT_STATS.

12 years agoFix GC_READ_ENV_FILE code for Cygwin
Ivan Maidanski [Tue, 6 Mar 2012 16:10:11 +0000 (20:10 +0400)]
Fix GC_READ_ENV_FILE code for Cygwin

* misc.c: Include windows.h for Cygwin if GC_READ_ENV_FILE (required
for GC_envfile_init).
* misc.c (_MAX_PATH): Move definition to the place before the first
use (only Win32).

12 years agoUpdate ChangeLog
Ivan Maidanski [Mon, 5 Mar 2012 18:11:20 +0000 (22:11 +0400)]
Update ChangeLog

12 years agoconfigure: Require automake 2.61 instead of 2.63
Ivan Maidanski [Mon, 5 Mar 2012 17:16:21 +0000 (21:16 +0400)]
configure: Require automake 2.61 instead of 2.63

* configure.ac (AC_PREREQ): Use value of 2.63 (relax requirement to
enable autoreconf on current Mac OS X).

12 years agoUpdate AUTHORS file
Ivan Maidanski [Mon, 5 Mar 2012 15:57:35 +0000 (19:57 +0400)]
Update AUTHORS file

12 years agoupdate ChangeLog
Ivan Maidanski [Mon, 5 Mar 2012 04:19:05 +0000 (08:19 +0400)]
update ChangeLog