platform/upstream/libgc.git
11 years agoMerge (dummy) remote-tracking branch 'paurkedal/remove-disclaim-cd'
Ivan Maidanski [Sat, 14 Sep 2013 09:54:05 +0000 (13:54 +0400)]
Merge (dummy) remote-tracking branch 'paurkedal/remove-disclaim-cd'

Conflicts:
    include/private/gc_priv.h

11 years agoMerge (dummy) remote-tracking branch 'paurkedal/finalizer-at-end'
Ivan Maidanski [Sat, 14 Sep 2013 09:23:22 +0000 (13:23 +0400)]
Merge (dummy) remote-tracking branch 'paurkedal/finalizer-at-end'

Conflicts:
    fnlz_mlc.c
    tests/disclaim_test.c

11 years agoDetect dladdr() presence by configure
Ivan Maidanski [Sat, 14 Sep 2013 08:20:17 +0000 (12:20 +0400)]
Detect dladdr() presence by configure

* configure.ac (have_dladdr): Add check for "dladdr" presence.
* configure.ac (HAVE_DLADDR): New AC define based on have_dladdr.

11 years agoExplicitly specify that Darwin, Linux and Solaris platforms have dladdr()
Ivan Maidanski [Fri, 13 Sep 2013 19:33:32 +0000 (23:33 +0400)]
Explicitly specify that Darwin, Linux and Solaris platforms have dladdr()

* include/private/gcconfig.h (HAVE_DLADDR): Define also for DARWIN
(conditionally), LINUX and SOLARIS (conditionally).

11 years agoFix collection of objects referenced only from GC_mark_stack_X variables
Ivan Maidanski [Fri, 6 Sep 2013 19:36:39 +0000 (23:36 +0400)]
Fix collection of objects referenced only from GC_mark_stack_X variables
(Apply commit a7a5666 from 'release-7_2' branch.)

* include/private/gc_pmark.h (mse): Move to gc_priv.h (as used by
GC_mark_stack_limit, GC_mark_stack_top, GC_mark_stack).
* include/private/gc_pmark.h (GC_mark_stack_limit, GC_mark_stack_top,
GC_mark_stack): Remove variable declaration.
* include/private/gc_priv.h (_GC_arrays): Add _mark_stack,
_mark_stack_limit, _mark_stack_top fields.
* include/private/gc_priv.h (GC_mark_stack_limit, GC_mark_stack_top,
GC_mark_stack): Define macro (redirecting to the corresponding field
of GC_arrays).
* mark.c (GC_mark_stack, GC_mark_stack_limit, GC_mark_stack_top):
Remove variable; move comment to gc_priv.h.
* mark.c (GC_push_marked1, GC_push_marked2, GC_push_marked4): Undefine
GC_mark_stack_top and GC_mark_stack_limit macros (before redefining
them to local variables) at function start, redefine them back to the
corresponding field of GC_arrays at function exit.

Conflicts:

    include/private/gc_pmark.h

11 years agoMerge branch 'freebsd-ports-devel-boehm-gc-integrate'
Ivan Maidanski [Tue, 3 Sep 2013 20:32:48 +0000 (00:32 +0400)]
Merge branch 'freebsd-ports-devel-boehm-gc-integrate'

11 years ago.gitignore: Ignore *.log, *.trs files produced by 'make check' (Autoconf)
Ivan Maidanski [Mon, 2 Sep 2013 09:42:10 +0000 (13:42 +0400)]
.gitignore: Ignore *.log, *.trs files produced by 'make check' (Autoconf)

11 years agoRename subthread_create to subthreadcreate_test (Makefile)
Ivan Maidanski [Mon, 2 Sep 2013 09:11:02 +0000 (13:11 +0400)]
Rename subthread_create to subthreadcreate_test (Makefile)

* tests/tests.am (TESTS, check_PROGRAMS, subthreadcreate_SOURCES,
subthreadcreate_test_LDADD): Rename "subthread_create" to
"subthreadcreate_test" (except for .c file).
* .gitignore: Likewise.

11 years agotests: Append _test suffix to 'initsecondarythread' binary file names
Ivan Maidanski [Mon, 2 Sep 2013 08:55:47 +0000 (12:55 +0400)]
tests: Append _test suffix to 'initsecondarythread' binary file names

* tests/tests.am (TESTS, check_PROGRAMS, initsecondarythread_SOURCES,
initsecondarythread_LDADD): Rename initsecondarythread to
initsecondarythread_test (except for .c file).
* .gitignore: Likewise.

11 years agoPrevent misleading AC_MSG_ERROR/AS_IF errors reported in configure.ac
Ivan Maidanski [Sun, 1 Sep 2013 16:06:38 +0000 (20:06 +0400)]
Prevent misleading AC_MSG_ERROR/AS_IF errors reported in configure.ac

* configure.ac (PKG_CHECK_MODULES): Move AS_IF and AC_MSG_ERROR out of
ACTION-IF-NOT-FOUND argument (setting "missing_libatomic_ops" variable
instead) to prevent misleading
"possibly undefined macro: AC_MSG_ERROR, AS_IF" error reported by
Autoconf (pointing to code lines where these macros first occur) in
case of PKG_CHECK_MODULES is not defined in aclocal.m4; add comment
about missing Autotools pkg.m4 file.

11 years agoReplace deprecated [CXX]INCLUDES to AM_C[PP]FLAGS in configure.ac
Ivan Maidanski [Sun, 1 Sep 2013 10:00:08 +0000 (14:00 +0400)]
Replace deprecated [CXX]INCLUDES to AM_C[PP]FLAGS in configure.ac

* configure.ac (INCLUDES): Replace with AM_CFLAGS (as the former is
deprecated in Automake 1.13.4).
* configure.ac (CXXINCLUDES): Replace with AM_CPPFLAGS.

11 years agoRemove configure.ac outdated revision number
Ivan Maidanski [Sun, 1 Sep 2013 08:53:25 +0000 (12:53 +0400)]
Remove configure.ac outdated revision number

* configure.ac (AC_REVISION): Remove item (outdated).

11 years agoSpecify LT_INIT in configure.ac
Ivan Maidanski [Sun, 1 Sep 2013 07:28:51 +0000 (11:28 +0400)]
Specify LT_INIT in configure.ac

* configure.ac (LT_INIT): Specify (otherwise Automake 1.13.4 reports
error at "check_LTLIBRARIES" item in Makefile.am); add comment about
"LIBTOOL is undefined" error.

11 years ago.gitignore: Ignore test-driver (generated by autoreconf)
Ivan Maidanski [Sat, 31 Aug 2013 14:42:24 +0000 (18:42 +0400)]
.gitignore: Ignore test-driver (generated by autoreconf)

11 years agoRemove changes in Makefile.in and doc/gc.man specific to FreeBSD ports
Ivan Maidanski [Sun, 25 Aug 2013 08:37:19 +0000 (12:37 +0400)]
Remove changes in Makefile.in and doc/gc.man specific to FreeBSD ports
(Revert part of commit 8666ba2 from 'freebsd-ports-devel-boehm-gc' branch.)
(Apply commit 8f8d395 from 'release-7_2' branch.)

* doc/gc.man: Remove "PORT INFORMATION".

Conflicts:

    Makefile.in

11 years agoUse __builtin_extract_return_addr in GC_RETURN_ADDR_PARENT (gcc/x86)
Ivan Maidanski [Sun, 25 Aug 2013 05:59:42 +0000 (09:59 +0400)]
Use __builtin_extract_return_addr in GC_RETURN_ADDR_PARENT (gcc/x86)

* include/gc_config_macros.h (GC_RETURN_ADDR_PARENT): Use
__builtin_extract_return_addr (since the address passed to dladdr);
do not define the macro for GCC pre-v4.

11 years agoPrevent use of unsupported __builtin_return_address(1) in GC_DBG_EXTRAS
Ivan Maidanski [Sat, 24 Aug 2013 16:32:11 +0000 (20:32 +0400)]
Prevent use of unsupported __builtin_return_address(1) in GC_DBG_EXTRAS

* include/gc_config_macros.h (GC_CAN_SAVE_CALL_STACKS): Define also
for __amd64__ (synonym for __x86_64__).
* include/gc_config_macros.h (GC_RETURN_ADDR_PARENT): Define only for
x86 and x86_64 (which have frame-pointer register, for other targets
GCC might report "unsupported argument to __builtin_return_address"
warning).

11 years agoDefine GC_caller_func_offset only if HAVE_DLADDR and GC_RETURN_ADDR_PARENT
Ivan Maidanski [Sat, 24 Aug 2013 14:43:29 +0000 (18:43 +0400)]
Define GC_caller_func_offset only if HAVE_DLADDR and GC_RETURN_ADDR_PARENT
(Apply commit 5d94f18 from 'release-7_2' branch.)

* dbg_mlc.c (GC_caller_func_offset): Do not define (and do not include
dlfcn.h) unless GC_ADD_CALLER; test HAVE_DLADDR (and
GC_RETURN_ADDR_PARENT) instead of FREEBSD macro.
* dbg_mlc.c (GC_caller_func_offset): Use STATIC; replace the K&R-style
function definition with the ANSI C one; remove unnecessary "const" in
type casts; do not call dladdr() if address is 0.
* dbg_mlc.c (GC_debug_malloc, GC_debug_realloc): Move assignment of
"s" argument to "unknown" to GC_caller_func_offset (if GC_ADD_CALLER).
* dbg_mlc.c (GC_debug_realloc): Do not call GC_caller_func_offset if
"p" argument is NULL (i.e., if redirected to GC_debug_malloc)..
* include/private/gcconfig.h (HAVE_DLADDR): Define for FREEBSD.

Conflicts:

    dbg_mlc.c

11 years agoReplace GC_DBG_RA with GC_DBG_EXTRAS macro
Ivan Maidanski [Fri, 23 Aug 2013 19:42:26 +0000 (23:42 +0400)]
Replace GC_DBG_RA with GC_DBG_EXTRAS macro

* dbg_mlc.c (GC_debug_malloc_replacement,
GC_debug_realloc_replacement): Use GC_DBG_EXTRAS (instead of
"GC_DBG_RA NULL, 0").
* malloc.c (GC_debug_malloc_replacement): Likewise.
* mallocx.c (GC_debug_realloc_replacement): Likewise.
* include/private/gc_priv.h (GC_DBG_EXTRAS): New macro (similar to
GC_EXTRAS but pass NULL/0 instead of __FILE__and __LINE__);
pass "unknown" instead of NULL unless GC_ADD_CALLER.
* include/private/gc_priv.h (GC_DBG_RA): Remove.

11 years agoAdjust GC_debug_malloc/realloc_replacement macro to match the API function
Ivan Maidanski [Fri, 23 Aug 2013 18:51:07 +0000 (22:51 +0400)]
Adjust GC_debug_malloc/realloc_replacement macro to match the API function

* malloc.c (GC_debug_malloc_replacement): Pass NULL (instead of
"unknown") to "s" argument of GC_debug_malloc to match that
replacement definition in dbg_mlc.c.
* mallocx.c (GC_debug_realloc_replacement): Likewise.

11 years agoFix old_segv/bus_act variables initialization for FreeBSD
Ivan Maidanski [Thu, 22 Aug 2013 06:58:58 +0000 (10:58 +0400)]
Fix old_segv/bus_act variables initialization for FreeBSD

* os_dep.c (old_segv_act): Define static variable for FREEBSD (same as
for NETBSD).
* os_dep.c (GC_set_and_save_fault_handler): Reformat code (related to
FreeBSD).
* os_dep.c (GC_reset_fault_handler): Initialize old_segv_act (and
old_bus_act) for FREEBSD (same as for NETBSD).

11 years agoReformat gcconfig.h (related to FreeBSD/arm)
Ivan Maidanski [Thu, 22 Aug 2013 06:24:39 +0000 (10:24 +0400)]
Reformat gcconfig.h (related to FreeBSD/arm)

* include/private/gcconfig.h (ALIGNMENT, OS_TYPE, DYNAMIC_LOADING,
HEURISTIC2, etext, SEARCH_FOR_DATA_START): Reformat (adjust
indentation) for FreeBSD/arm.

11 years agoAdjust configure.ac to match configure regarding FreeBSD/sparc64
Ivan Maidanski [Sun, 21 Jul 2013 15:34:37 +0000 (19:34 +0400)]
Adjust configure.ac to match configure regarding FreeBSD/sparc64
(Apply commit 41a99fb from 'release-7_2' branch.)

* configure.ac (Configuration of machine-dependent code): Handle
sparc64-*-freebsd* case.

11 years agoFix GC_caller_func_offset and GC_DBG_RA names
Ivan Maidanski [Sun, 21 Jul 2013 14:27:07 +0000 (18:27 +0400)]
Fix GC_caller_func_offset and GC_DBG_RA names
(Apply commit 28e6e4f from 'release-7_2' branch.)

* dbg_mlc.c (GC_caller_func_offset): Test FREEBSD macro instead of
__FreeBSD__ (since the former is always defined in gcconfig.h included
from this file indirectly).
* dyn_load.c (ElfW): Likewise.
* dbg_mlc.c (GC_caller_func): Fix name to GC_caller_func_offset.
* dbg_mlc.c (GC_debug_realloc): Invoke GC_caller_func_offset if
GC_ADD_CALLER (same as in GC_debug_malloc and commit 2cdf7ec).
* include/private/gc_priv.h (RA): Fix name to GC_DBG_RA.
* include/private/gcconfig.h (X86_64): Test __x86_64__ in addition to
__amd64__ for FreeBSD (proposed in commit b54833a).

Conflicts:

    include/private/gcconfig.h

11 years agoFreeBSD New ports collection for boehm-gc v7.2d
Vitaly Magerya [Sun, 21 Jul 2013 12:53:31 +0000 (16:53 +0400)]
FreeBSD New ports collection for boehm-gc v7.2d
(Apply commit 8666ba2 from 'release-7_2' branch.)

* include/private/gc_priv.h (RA): Define to "GC_RETURN_ADDR_PARENT,"
if GC_RETURN_ADDR_PARENT defined.
* include/private/gcconfig.h (FREEBSD): Group rules.

Conflicts:

    Makefile.in
    configure
    dbg_mlc.c
    include/private/gc_priv.h
    include/private/gcconfig.h
    os_dep.c

11 years agoFreeBSD New ports collection for boehm-gc v7.1
Mike McGaughey [Sun, 21 Jul 2013 11:47:53 +0000 (15:47 +0400)]
FreeBSD New ports collection for boehm-gc v7.1
(Imported from freebsd-ports/devel/boehm-gc)
(Apply commit 2cdf7ec from 'release-7_2' branch.)

* dbg_mlc.c (GC_caller_func_offset): New function (empty unless
FreeBSD).
* dbg_mlc.c (GC_debug_malloc, GC_debug_realloc): Invoke
GC_caller_func_offset if GC_ADD_CALLER.
* include/private/gc_priv.h (GC_DBG_RA): Define to GC_RETURN_ADDR_PARENT
(if the latter is defined).
* dbg_mlc.c (GC_debug_malloc_replacement,
GC_debug_realloc_replacement): Pass NULL (instead of "unknown") to
GC_debug_malloc/realloc.
* doc/gc.man: Add "PORT INFORMATION".
* dyn_load.c (ElfW): Define for FreeBSD.
* include/private/gcconfig.h (X86_64, IA64, POWERPC, ARM32,
mach_type_known, ALIGNMENT, OS_TYPE, DYNAMIC_LOADING, HEURISTIC2,
etext, SEARCH_FOR_DATA_START): Likewise.
* os_dep.c (old_bus_act): Likewise.
* include/gc.h (GC_RETURN_ADDR_PARENT): New macro.
* os_dep.c (GC_set_and_save_fault_handler): Invoke sigaction(SIGBUS)
for FreeBSD.
* os_dep.c (AIM): Define before include machine/trap.h if FreeBSD/ppc.
* os_dep.c (CODE_OK): Define to test "code" against EXC_DSI (instead
of BUS_PAGE_FAULT) if FreeBSD/ppc.

Conflicts:

    Makefile.in
    configure
    dbg_mlc.c
    include/gc.h
    include/private/gcconfig.h
    os_dep.c

11 years agoFix GC_INLINE definition to comply with ISO C90 standard (GCC)
Ivan Maidanski [Thu, 15 Aug 2013 05:03:16 +0000 (09:03 +0400)]
Fix GC_INLINE definition to comply with ISO C90 standard (GCC)

* include/private/gc_priv.h (GC_INLINE): Define as "static __inline"
for GCC if "strict ISO/ANSI C90" mode is enforced.

11 years agoDefine GC_VSNPRINTF internal macro in misc.c (code refactoring)
Ivan Maidanski [Thu, 15 Aug 2013 04:53:11 +0000 (08:53 +0400)]
Define GC_VSNPRINTF internal macro in misc.c (code refactoring)

* misc.c (GC_VSNPRINTF): New macro (defined to vsnprintf by default
and used by GC_PRINTF_FILLBUF).

11 years agoUpdate AUTHORS file
Ivan Maidanski [Thu, 1 Aug 2013 05:36:59 +0000 (09:36 +0400)]
Update AUTHORS file

11 years agoFix more typos in comments
Ondrej Bilka [Tue, 30 Jul 2013 22:23:14 +0000 (02:23 +0400)]
Fix more typos in comments

* darwin_stop_world.c (GC_use_threads_discovery): Fix a typo in
comment ("stopped").
* doc/porting.html: Fix typos in comment ("defining", "support").
* include/gc.h (GC_get_prof_stats): Fix a typo in comment ("entries").
* include/private/gc_priv.h (GC_have_errors): Fix a typo in comment
("OK").
* include/private/gcconfig.h: Fix a typo in comment ("SPARC).
* ChangeLog: Likewise.
* os_dep.c (GC_linux_main_stack_base): Likewise.
* include/private/gcconfig.h: Fix a typo in comment ("release").
* mallocx.c (GC_generic_malloc_many): Fix a typo in comment
("reacquiring").
* mallocx.c (GC_memalign): Fix a typo in comment ("OK").
* os_dep.c (GC_win32_free_heap): Likewise.
* pthread_support.c (GC_remove_all_threads_but_me): Likewise.
* win32_threads.c (GC_remove_all_threads_but_me): Likewise.
* doc/README.Mac: Likewise.
* mark.c (GC_push_unconditionally): Fix a typo in comment ("pointers").
* pthread_support.c: Fix a typo in comment ("which").
* win32_threads.c: Fix a typo in comment ("losing").

11 years agoUpdate AUTHORS file
Ivan Maidanski [Sun, 21 Jul 2013 15:39:37 +0000 (19:39 +0400)]
Update AUTHORS file

11 years agoFix 'stack section' pointer passed to push_all_stack_sections (Pthreads)
Ivan Maidanski [Sat, 20 Jul 2013 13:01:01 +0000 (17:01 +0400)]
Fix 'stack section' pointer passed to push_all_stack_sections (Pthreads)

* pthread_stop_world.c (GC_push_all_stacks): Use
traced_stack_sect->prev instead of traced_stack_sect if saved_stack_ptr
(of traced_stack_sect) is the same as stop_info.stack_ptr of the
examined thread (thus preventing assertion violation in
GC_push_all_stack_sections invoked during incremental collection).

11 years agoFix stackbottom/stack_end assignment in GC_call_with_gc_active
Ivan Maidanski [Sat, 20 Jul 2013 11:21:37 +0000 (15:21 +0400)]
Fix stackbottom/stack_end assignment in GC_call_with_gc_active

* misc.c (GC_call_with_gc_active): Add GC_noop1 call between "fn" call
and "return" statement to discourage the compiler from treating the
function call as a tail one (thus ensuring "stackbottom" COOLER_THAN
any stack pointer value obtained inside "fn").
* pthread_support.c (GC_call_with_gc_active): Likewise.
* win32_threads.c (GC_call_with_gc_active): Likewise.

11 years agoTODO file: Add pending TODO/FIXME items
Ivan Maidanski [Sat, 20 Jul 2013 10:57:58 +0000 (14:57 +0400)]
TODO file: Add pending TODO/FIXME items

11 years agoFix assertion violation in GC_mark_from prefetch loop
Ivan Maidanski [Wed, 17 Jul 2013 06:07:19 +0000 (10:07 +0400)]
Fix assertion violation in GC_mark_from prefetch loop

* mark.c (GC_mark_from): If "descr" is less than size of word then
skip prefetching and PUSH_CONTENTS of the current entry (thus,
eliminate assertion violation in the prefetch loop) if SMALL_CONFIG is
not defined.

11 years agoEliminate GC_first_nonempty atomic value reload in GC_mark_local assertion
Ivan Maidanski [Tue, 16 Jul 2013 14:54:54 +0000 (18:54 +0400)]
Eliminate GC_first_nonempty atomic value reload in GC_mark_local assertion

* mark.c (GC_mark_from, GC_mark_local, GC_do_parallel_mark): Reformat
code partially.
* mark.c (GC_mark_local): Use "my_first_nonempty" in assertion
instead of reloading value of GC_first_nonempty twice.

11 years agoFix typo in comment of GC_mark_from
Ivan Maidanski [Tue, 16 Jul 2013 12:58:28 +0000 (16:58 +0400)]
Fix typo in comment of GC_mark_from

* mark.c (GC_mark_from): Fix typo (capitalization) in comment ("ASAP").

11 years agoAllow to compile GC_inner_start_routine aside from extra/gc.c
Ivan Maidanski [Tue, 16 Jul 2013 12:19:12 +0000 (16:19 +0400)]
Allow to compile GC_inner_start_routine aside from extra/gc.c
(for proper exceptions support on Linux)

* extra/gc.c: Do not include pthread_start.c if
GC_PTHREAD_START_STANDALONE defined (thus pthread_start.c could go to
a standalone compilation unit).
* include/private/pthread_support.h (GC_INNER_PTHRSTART): New macro
(defined to either empty or GC_INNER depending on
GC_PTHREAD_START_STANDALONE).
* include/private/pthread_support.h (GC_start_rtn_prepare_thread,
GC_thread_exit_proc): Replace GC_INNER to GC_INNER_PTHRSTART.
* pthread_support.c (GC_thread_exit_proc,
GC_start_rtn_prepare_thread): Likewise.
* pthread_start.c (GC_inner_start_routine): Define as
GC_INNER_PTHRSTART; do not call GC_log_printf if
GC_PTHREAD_START_STANDALONE (since the function might be visible only
within extra/gc.c compilation unit).
* pthread_support.c (GC_inner_start_routine): Declare as
GC_INNER_PTHRSTART.

11 years agoTest NO_WRAP_MARK_SOME macro to suppress WRAP_MARK_SOME-specific code
Ivan Maidanski [Mon, 15 Jul 2013 14:08:01 +0000 (18:08 +0400)]
Test NO_WRAP_MARK_SOME macro to suppress WRAP_MARK_SOME-specific code

* mark.c (WRAP_MARK_SOME): Do not define if NO_WRAP_MARK_SOME defined.

11 years agoDefine [UN]SET_LOCK_HOLDER and I_[DONT_]HOLD_LOCK macros only if used
Ivan Maidanski [Mon, 15 Jul 2013 13:34:54 +0000 (17:34 +0400)]
Define [UN]SET_LOCK_HOLDER and I_[DONT_]HOLD_LOCK macros only if used
(code refactoring)

* include/private/gc_locks.h (SET_LOCK_HOLDER, UNSET_LOCK_HOLDER,
I_HOLD_LOCK, I_DONT_HOLD_LOCK): Do not define unless GC_ASSERTIONS.
* include/private/gc_locks.h (SET_LOCK_HOLDER, UNSET_LOCK_HOLDER):
Do not define unless THREADS.

11 years agoDo not set GC_lock_holder by call_with_alloc_lock if assertions disabled
Ivan Maidanski [Mon, 15 Jul 2013 13:18:12 +0000 (17:18 +0400)]
Do not set GC_lock_holder by call_with_alloc_lock if assertions disabled

* include/private/gc_locks.h (GC_lock_holder): Do not declare unless
GC_ASSERTIONS (the variable is not longer used to prevent recursive
reentry in the system call wrapper).
* misc.c (GC_call_with_alloc_lock): Remove [UN]SET_LOCK_HOLDER
explicit calls since GC_lock_holder is set properly by [UN]LOCK()
(in case of GC_ASSERTIONS).
* pthread_support.c (GC_lock_holder): Do not define unless
GC_ASSERTIONS; adjust comment.
* win32_threads.c (GC_lock_holder): Likewise.

11 years agoDefine SET/UNSET_MARK_LOCK_HOLDER macros to set/check GC_acquire_mark_lock
Ivan Maidanski [Mon, 15 Jul 2013 12:45:52 +0000 (16:45 +0400)]
Define SET/UNSET_MARK_LOCK_HOLDER macros to set/check GC_acquire_mark_lock
(refactoring)

* pthread_support.c (SET_MARK_LOCK_HOLDER, UNSET_MARK_LOCK_HOLDER):
New macro (defined to no action unless GC_ASSERTIONS).
* win32_threads.c (SET_MARK_LOCK_HOLDER, UNSET_MARK_LOCK_HOLDER):
Likewise.
* pthread_support.c (GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_builder, GC_wait_marker): Use [UN]SET_MARK_LOCK_HOLDER
(instead of GC_mark_lock_holder setters and checkers).
* win32_threads.c (GC_acquire_mark_lock, GC_release_mark_lock,
GC_wait_builder, GC_wait_marker): Likewise.
* win32_threads.c (GC_mark_lock_holder): Change type to DWORD unless
GC_PTHREADS_PARAMARK defined.
* win32_threads.c (GC_acquire_mark_lock, GC_notify_all_builder):
Remove unnecessary cast of GetCurrentThreadId() result.

11 years agoAdd double-lock assertion to GC_acquire_mark_lock
Ivan Maidanski [Mon, 15 Jul 2013 12:02:36 +0000 (16:02 +0400)]
Add double-lock assertion to GC_acquire_mark_lock

* pthread_support.c (GC_acquire_mark_lock): Add assertion that
GC_mark_lock_holder is not set to the current thread on the function
entry (i.e., assertion against double lock).
* win32_threads.c (GC_acquire_mark_lock): Likewise.

11 years agoMark GC_started_thread_while_stopped() as GC_INNER
Ivan Maidanski [Mon, 15 Jul 2013 11:48:44 +0000 (15:48 +0400)]
Mark GC_started_thread_while_stopped() as GC_INNER

* mark.c (GC_started_thread_while_stopped): Declare as GC_INNER
(declared only if GC_WIN32_THREADS).
* win32_threads.c (GC_started_thread_while_stopped): Define as GC_INNER.

11 years agoMake GC_mark_lock_holder variable static
Ivan Maidanski [Mon, 15 Jul 2013 11:40:49 +0000 (15:40 +0400)]
Make GC_mark_lock_holder variable static

* include/private/gc_locks.h (GC_mark_lock_holder): Remove declaration.
* pthread_support.c (GC_mark_lock_holder): Change from GC_INNER to
STATIC (defined only if GC_ASSERTIONS).
* win32_threads.c (GC_mark_lock_holder): Likewise.

11 years agoAdd assertion to LOCK definition that lock is not already held
Ivan Maidanski [Mon, 15 Jul 2013 11:08:45 +0000 (15:08 +0400)]
Add assertion to LOCK definition that lock is not already held

* include/private/gc_locks.h (UNCOND_LOCK): Add assertion that
I_DONT_HOLD_LOCK (lock is not held precondition).

11 years agoFix GC_PTHREAD_PTRVAL definition for GC_PTHREADS_PARAMARK (Win32)
Ivan Maidanski [Mon, 15 Jul 2013 09:33:12 +0000 (13:33 +0400)]
Fix GC_PTHREAD_PTRVAL definition for GC_PTHREADS_PARAMARK (Win32)

* win32_threads.c (GC_PTHREAD_PTRVAL): Define also if
GC_PTHREADS_PARAMARK (even w/o GC_WIN32_PTHREADS).

11 years agoEnable thread-local allocation support for Clang on Cygwin
Ivan Maidanski [Thu, 11 Jul 2013 12:34:00 +0000 (16:34 +0400)]
Enable thread-local allocation support for Clang on Cygwin

* include/private/thread_local_alloc.h (USE_PTHREAD_SPECIFIC): Use
(instead of USE_COMPILER_TLS) for clang3.1/x86 cygwin to workaround
"thread-local storage is unsupported for the current target" error.

11 years agoFix more typos in comments and documentation
Ivan Maidanski [Thu, 11 Jul 2013 08:44:35 +0000 (12:44 +0400)]
Fix more typos in comments and documentation

* alloc.c: Fix typo ("overflow").
* configure.ac: Fix typo ("optimization").
* doc/README.amiga: Fix typos ("also", "specific", "unnecessary").
* doc/README.cords: Fix typos ("descendants", "highlighted").
* ChangeLog: Fix typos ("[un]collectible").
* README.md: Likewise.
* dbg_mlc.c: Likewise.
* doc/README.hp: Likewise.
* doc/README.linux: Likewise.
* doc/gcdescr.html: Likewise.
* doc/gcinterface.html: Likewise.
* include/gc_mark.h: Likewise.
* include/gc_pthread_redirects.h: Likewise.
* include/new_gc_alloc.h: Likewise.
* include/private/dbg_mlc.h: Likewise.
* include/private/gc_pmark.h: Likewise.
* include/private/gc_priv.h: Likewise.
* new_hblk.c: Likewise.
* ChangeLog: Fix typo ("multi-threaded").
* cord/cordxtra.c: Likewise.
* doc/debugging.html: Likewise.
* doc/gcinterface.html: Likewise.
* doc/leak.html: Likewise.
* doc/overview.html: Likewise.
* doc/simple_example.html: Likewise.
* include/gc_mark.h: Likewise.
* include/private/gc_priv.h: Likewise.
* os_dep.c: Likewise.
* ptr_chck.c: Likewise.
* README.md: Fix typo ("pointer-free").
* allchblk.c: Likewise.
* doc/debugging.html: Likewise.
* doc/gcdescr.html: Likewise.

11 years agoUpdate AUTHORS file
Ivan Maidanski [Thu, 11 Jul 2013 08:03:08 +0000 (12:03 +0400)]
Update AUTHORS file

11 years agoFix typos in comments
Ondrej Bilka [Thu, 11 Jul 2013 07:57:32 +0000 (11:57 +0400)]
Fix typos in comments

* blacklst.c: Fix typo ("even though").
* cord/cordbscs.c: Fix typo ("exponentially").
* cord/cordxtra.c: Fix typo ("represented").
* dyn_load.c: Fix typos ("uncollectible", "occurred").
* extra/AmigaOS: Fix typos ("specific", "necessary", "always",
"effectiveness").
* finalize.c: Fix typo ("descendants").
* include/cord.h: Fix typo ("idiosyncrasies").
* include/gc.h: Fix typo ("collectible").
* include/gc_allocator.h: Fix typos ("allocator", "[un]collectible").
* mach_dep.c: Fix typo ("erroneously").
* malloc.c: Fix typos ("[un]collectible", "pointer-free",
"initialization").
* mallocx.c: Fix typos ("largely", "pointer-free", "uncollectible").
* mark.c: Fix typos ("[un]collectible", "even though").
* misc.c: Fix typo ("erroneously").
* os_dep.c: Fix typos ("non-addressable", "happening", "pointer-free").
* tests/test.c: Fix typos ("uncollectible", "reversed").
* tests/test_cpp.cc: Fix typos ("[un]collectible").
* typd_mlc.c: Fix typo ("copyright").
* win32_threads.c: Fix typos ("optimization", "uncollectible").

11 years agoExpand tabs to spaces in rarely used (ancient) files
Ivan Maidanski [Wed, 10 Jul 2013 11:35:23 +0000 (15:35 +0400)]
Expand tabs to spaces in rarely used (ancient) files

* extra/AmigaOS.c: Expand tabs to spaces.
* extra/MacOS.c: Likewise.
* extra/Mac_files/dataend.c: Likewise.
* extra/Mac_files/datastart.c: Likewise.
* extra/symbian.cpp: Likewise.
* cord/cordxtra.c: Likewise.

11 years agoFix missing tabs in SMakefile.amiga
Ivan Maidanski [Wed, 10 Jul 2013 11:16:04 +0000 (15:16 +0400)]
Fix missing tabs in SMakefile.amiga

* SMakefile.amiga (clean, test, gctest, setjmp_t, gc*.lib, setjmp_t):
Fix indentation (replace spaces with tabs).

11 years agoCheck that SIG_SUSPEND and SIG_THR_RESTART are different (Pthreads)
Ivan Maidanski [Wed, 10 Jul 2013 08:19:09 +0000 (12:19 +0400)]
Check that SIG_SUSPEND and SIG_THR_RESTART are different (Pthreads)

* pthread_stop_world.c (GC_stop_init): Add a check that GC_sig_suspend
value differs from that of GC_sig_thr_restart (abort otherwise).

11 years agoImprove debug-only messages of add/remove_roots and init_linux_data_start
Ivan Maidanski [Wed, 12 Jun 2013 05:50:04 +0000 (09:50 +0400)]
Improve debug-only messages of add/remove_roots and init_linux_data_start

* mark_rts.c (GC_add_roots_inner, GC_remove_root_at_pos): Log r_tmp
value (only if DEBUG_ADD_DEL_ROOTS).
* os_dep.c (GC_init_linux_data_start): Log unresolved [__]data_start
symbol (only if DEBUG_ADD_DEL_ROOTS and LINUX).

11 years agoFix typo in comment of signalObjectAndWait_func (Win32)
Ivan Maidanski [Wed, 12 Jun 2013 05:20:45 +0000 (09:20 +0400)]
Fix typo in comment of signalObjectAndWait_func (Win32)

* win32_threads.c (signalObjectAndWait_func): Fix a typo in comment.

11 years agoUse compiler TLS for Android NDK gcc/arm
Ivan Maidanski [Mon, 10 Jun 2013 20:02:34 +0000 (00:02 +0400)]
Use compiler TLS for Android NDK gcc/arm

* include/private/thread_local_alloc.h (USE_COMPILER_TLS): Define for
Android NDK gcc/arm v4.6 or higher.

11 years agoWorkaround 'unresolved __tls_get_addr' error for Android NDK Clang/x86
Ivan Maidanski [Mon, 10 Jun 2013 18:39:08 +0000 (22:39 +0400)]
Workaround 'unresolved __tls_get_addr' error for Android NDK Clang/x86

* include/private/thread_local_alloc.h (USE_COMPILER_TLS): Do not use
for Android NDK Clang (to workaround "unresolved __tls_get_addr" linker
error reported both by clang/x86 and clang/mips).

11 years agoTag GC malloc routines with alloc_size attribute for Clang 3.2+
Ivan Maidanski [Mon, 10 Jun 2013 17:03:33 +0000 (21:03 +0400)]
Tag GC malloc routines with alloc_size attribute for Clang 3.2+

* include/gc_config_macros.h (GC_ATTR_ALLOC_SIZE): Define as alloc_size
attribute for Clang 3.2+ as well.

11 years agoWorkaround 'unresolved __tls_get_addr' error for Android NDK clang/mips
Ivan Maidanski [Sun, 9 Jun 2013 15:34:43 +0000 (19:34 +0400)]
Workaround 'unresolved __tls_get_addr' error for Android NDK clang/mips

* include/private/thread_local_alloc.h (USE_COMPILER_TLS): Do not use
for Android NDK Clang/mips (to workaround "unresolved __tls_get_addr"
linker error).

11 years agoUse pthread API to operate thread-local data on Linux if no compiler TLS
Ivan Maidanski [Sun, 9 Jun 2013 14:47:44 +0000 (18:47 +0400)]
Use pthread API to operate thread-local data on Linux if no compiler TLS

* include/private/thread_local_alloc.h (USE_PTHREAD_SPECIFIC): Define
for GC_LINUX_THREADS (instead of default USE_CUSTOM_SPECIFIC) if
compiler TLS is unavailable (e.g., for linux/arm).

11 years agoMove GC_OPENBSD_UTHREADS definition to private/gcconfig.h (OpenBSD)
Ivan Maidanski [Sat, 8 Jun 2013 13:37:03 +0000 (17:37 +0400)]
Move GC_OPENBSD_UTHREADS definition to private/gcconfig.h (OpenBSD)

* include/gc_config_macros.h (GC_OPENBSD_UTHREADS): Move definition
to gcconfig.h (i.e., do not export to client code).

11 years agoSuppress 'GC_dont_gc deprecated' warning in gc.h if GC_DONT_GC
Ivan Maidanski [Sat, 8 Jun 2013 13:16:19 +0000 (17:16 +0400)]
Suppress 'GC_dont_gc deprecated' warning in gc.h if GC_DONT_GC

* include/gc.h (GC_dont_gc): Do not specify GC_ATTR_DEPRECATED if
GC_DONT_GC defined (to avoid deprecated warning in
GC_INIT_CONF_MAX_RETRIES which assigns GC_dont_gc directly).

11 years agoSupport rthreads introduced in OpenBSD 5.2+
Kurt Miller [Sat, 8 Jun 2013 12:45:23 +0000 (16:45 +0400)]
Support rthreads introduced in OpenBSD 5.2+

* include/gc_config_macros.h (GC_OPENBSD_UTHREADS): New macro (defined
only if OpenBSD prior to 5.2 release and threads).
* include/private/gc_priv.h (SIG_SUSPEND): Define for OpenBSD (unless
GC_OPENBSD_UTHREADS).
* include/private/pthread_stop_world.h (thread_stop_info): Test
GC_OPENBSD_UTHREADS macro instead of GC_OPENBSD_THREADS.
* misc.c (GC_set_suspend_signal, GC_set_thr_restart_signal,
GC_get_suspend_signal, GC_get_thr_restart_signal): Likewise.
* os_dep.c (GC_dirty_init): Likewise.
* pthread_stop_world.c: Likewise.
* tests/initsecondarythread.c (main): Likewise.

11 years agoRemove unused UTHREAD_SP_OFFSET macro (OpenBSD)
Ivan Maidanski [Sat, 8 Jun 2013 07:52:02 +0000 (11:52 +0400)]
Remove unused UTHREAD_SP_OFFSET macro (OpenBSD)

* include/private/gcconfig.h (UTHREAD_SP_OFFSET): Do not define (since
no longer used for OpenBSD because pthread_stackseg_np is used to get
thread stack pointer).

11 years agoUpdate AUTHORS file
Ivan Maidanski [Sun, 2 Jun 2013 14:26:39 +0000 (18:26 +0400)]
Update AUTHORS file

11 years agoRegister dynamic libraries via dl_iterate_phdr on OpenBSD
Kurt Miller [Sun, 2 Jun 2013 14:24:36 +0000 (18:24 +0400)]
Register dynamic libraries via dl_iterate_phdr on OpenBSD

* dyn_load.c (HAVE_DL_ITERATE_PHDR): Define for OpenBSD (with release
date 2005.19 or later).

11 years agoRegister dynamic libraries via dl_iterate_phdr on Android if possible
Ivan Maidanski [Sat, 1 Jun 2013 10:33:33 +0000 (14:33 +0400)]
Register dynamic libraries via dl_iterate_phdr on Android if possible

* dyn_load.c (HAVE_DL_ITERATE_PHDR): Define also for Android.
* dyn_load.c (dl_iterate_phdr): Declare explicitly for Android (since
no prototype in NDK link.h for ARM).

11 years agoFix GC_INIT_CONF_ROOTS in gc.h for Android (define __data_start as weak)
Ivan Maidanski [Sat, 1 Jun 2013 10:21:09 +0000 (14:21 +0400)]
Fix GC_INIT_CONF_ROOTS in gc.h for Android (define __data_start as weak)

* include/gc.h (GC_INIT_CONF_ROOTS): Define __data_start as weak
symbol for Android (including x86 and MIPS targets); do not call
GC_add_roots if __data_start symbol is unresolved.

11 years agoDefault to use libc_stack_end in single-threaded GC on glibc targets
Ludovic Courtes [Wed, 22 May 2013 21:16:46 +0000 (01:16 +0400)]
Default to use libc_stack_end in single-threaded GC on glibc targets

* include/private/gcconfig.h (USE_LIBC_PRIVATES): Define for glibc
(unless DONT_USE_LIBC_PRIVATES is defined).

11 years agoAdjust README.md title and references to doc .html files in it
Ivan Maidanski [Sat, 18 May 2013 19:36:28 +0000 (23:36 +0400)]
Adjust README.md title and references to doc .html files in it

11 years agoAdjust README filename in README.QUICK
Ivan Maidanski [Sat, 18 May 2013 19:24:00 +0000 (23:24 +0400)]
Adjust README filename in README.QUICK

11 years agoConvert readme to markdown.
David Terei [Fri, 10 May 2013 19:54:10 +0000 (12:54 -0700)]
Convert readme to markdown.

11 years agoAdjust build scripts to enable additional test library in staticrootstest
Ivan Maidanski [Sun, 5 May 2013 20:02:40 +0000 (00:02 +0400)]
Adjust build scripts to enable additional test library in staticrootstest
(The 2nd test library contains global data too but has no GC_INIT call.)

* tests/tests.am (staticrootstest_CFLAGS,
libstaticrootslib2_test_la_CFLAGS): New definition (to test with
libsrl_getpelem2() enabled).
* tests/tests.am (staticrootstest_LDADD, check_LTLIBRARIES): Add
libstaticrootslib2_test.la.
* tests/tests.am (libstaticrootslib2_test_la_SOURCES,
libstaticrootslib2_test_la_LIBADD,
libstaticrootslib2_test_la_LDFLAGS): New definition (similar to that
of libstaticrootslib_test_la_X).

11 years agoImprove staticrootstest: add global data to library, add lib w/o GC_INIT
Ivan Maidanski [Sun, 5 May 2013 13:13:54 +0000 (17:13 +0400)]
Improve staticrootstest: add global data to library, add lib w/o GC_INIT

* tests/staticrootslib.c: Do not include stdio.h (not needed).
* tests/staticrootslib.c (root, root_nz): New static variables.
* tests/staticrootstest.c (root_nz): Likewise.
* tests/staticrootslib.c (libsrl_getpelem): New exported function
(exported as "libsrl_getpelem2" if STATICROOTSLIB2).
* tests/staticrootslib.c (libsrl_mktree, libsrl_init): Do not define
if STATICROOTSLIB2.
* tests/staticrootslib.c (libsrl_init): Do not call GC_INIT if
STATICROOTSLIB_INIT_IN_MAIN defined.
* tests/staticrootstest.c (libsrl_getpelem, libsrl_getpelem2): Declare
imported function.
* tests/staticrootstest.c (main): Call GC_INIT if
STATICROOTSLIB_INIT_IN_MAIN defined; set *libsrl_getpelem2() (only if
STATICROOTSLIB2 defined), *libsrl_getpelem() and root_nz[] elements
(similar to that of root[]).

11 years agoEnable staticrootstest for the case of GC shared library build
Ivan Maidanski [Sat, 4 May 2013 09:56:34 +0000 (13:56 +0400)]
Enable staticrootstest for the case of GC shared library build

* tests/staticrootslib.c (GC_TEST_EXPORT_API): New macro (defined to
set GCC default visibility attribute if GC_VISIBILITY_HIDDEN_SET
unless Win32).
* tests/staticrootslib.c (root): Remove unused global variable.
* tests/staticrootslib.c (libsrl_mktree, libsrl_init): Decorate with
GC_TEST_EXPORT_API.
* tests/staticrootstest.c (GC_VISIBILITY_HIDDEN_SET): Do not check (do
not skip the test).
* tests/staticrootstest.c (GC_TEST_IMPORT_API): New macro.
* tests/staticrootstest.c (root): Explicitly specify zero initializer.
* tests/staticrootstest.c (libsrl_mktree, libsrl_init): Decorate with
GC_TEST_IMPORT_API.
* tests/staticrootstest.c (mktree, main): Remove commented out code.
* tests/staticrootstest.c (main): Avoid code duplication.
* tests/tests.am (staticrootstest_LDADD, check_LTLIBRARIES,
libstaticrootslib_la): Rename libstaticrootslib to
libstaticrootslib_test.

11 years agoRemove GC_BUILD definition from build scripts
Ivan Maidanski [Sat, 4 May 2013 07:23:44 +0000 (11:23 +0400)]
Remove GC_BUILD definition from build scripts

* CMakeLists.txt (ADD_DEFINITIONS): Remove -D GC_BUILD (not
needed since it is defined in gc_priv.h, gc_pmark.h and
gc_cpp.cc).
* WCC_MAKEFILE (CFLAGS): Likewise.
* build/s60v3/libgc.mmp: Likewise.
* digimars.mak (DEFINES, tests/test.obj): Likewise.
* windows-untested/vc60/gc.dsp (ADD CPP): Likewise.
* windows-untested/vc60/libgc.dsp (ADD CPP): Likewise.
* windows-untested/vc60/libgcmt.dsp (ADD CPP): Likewise.
* windows-untested/vc70/gc.vcproj (PreprocessorDefinitions): Likewise.
* windows-untested/vc70/libgc.vcproj (PreprocessorDefinitions):
Likewise.
* windows-untested/vc70/libgcmt.vcproj (PreprocessorDefinitions):
Likewise.
* windows-untested/vc71/gc.vcproj (PreprocessorDefinitions): Likewise.
* windows-untested/vc71/libgc.vcproj (PreprocessorDefinitions):
Likewise.
* windows-untested/vc71/libgcmt.vcproj (PreprocessorDefinitions):
Likewise.
* extra/MacOS.c: Define GC_BUILD (before include of gc.h).
* extra/msvc_dbg.c: Likewise.
* windows-untested/vc60/gc.dsp (MESSAGE, ENDIF): Remove trailing
spaces at EOLn.
* windows-untested/vc60/libgc.dsp (MESSAGE, ENDIF): Likewise.
* windows-untested/vc60/libgcmt.dsp (MESSAGE, ENDIF): Likewise.

11 years agoFix triple-letter typos in comments and documentation
Ivan Maidanski [Fri, 3 May 2013 20:21:20 +0000 (00:21 +0400)]
Fix triple-letter typos in comments and documentation

* ChangeLog: Fix triple-letter typos.
* doc/overview.html: Likewise.
* mark.c (GC_push_marked1): Fix a triple-letter typo in a comment.
* os_dep.c (GC_register_data_segments): Likewise.

11 years agoFix AM_CONFIG_HEADER in configure for autoconf-2.69-1
Manuel Serrano [Wed, 3 Apr 2013 03:54:47 +0000 (07:54 +0400)]
Fix AM_CONFIG_HEADER in configure for autoconf-2.69-1

* configure.ac (AM_CONFIG_HEADER): Replace obsolete macro with with
AC_CONFIG_HEADERS one.

11 years agoFix GC_INIT_CONF_ROOTS in gc.h for Android/x86 and Android/mips
Ivan Maidanski [Thu, 14 Mar 2013 17:31:05 +0000 (21:31 +0400)]
Fix GC_INIT_CONF_ROOTS in gc.h for Android/x86 and Android/mips

* include/gc.h (GC_INIT_CONF_ROOTS): Do not define to register static
data root in range from __data_start to _end on non-ARM Android
(because __data_start symbol does not exist for x86 and mips); refine
the comment.

11 years agoFix make disclaim_test to link with new GNU ld linking rules
Ivan Maidanski [Thu, 28 Feb 2013 03:48:05 +0000 (07:48 +0400)]
Fix make disclaim_test to link with new GNU ld linking rules

* tests/tests.am (disclaim_test_LDADD): Link to pthreads (or appropriate
threading libraries) as needed.

11 years agoFix tests makefile to link with new GNU ld linking rules
Andy Wingo [Wed, 13 Feb 2013 14:45:33 +0000 (15:45 +0100)]
Fix tests makefile to link with new GNU ld linking rules

* tests/tests.am (gctest_LDADD, threadleaktest_LDADD,
threadkey_test_LDADD, subthread_create_LDADD,
initsecondarythread_LDADD): Link to pthreads (or appropriate
threading libraries) as needed; fixes failure to link with new GNU ld
linking rules.

11 years agoWorkaround 'ELF_DATA/EM_ALPHA redefined' warning in Android linker.h
Ivan Maidanski [Fri, 22 Feb 2013 04:25:27 +0000 (08:25 +0400)]
Workaround 'ELF_DATA/EM_ALPHA redefined' warning in Android linker.h

* dyn_load.c: Include asm/elf.h and linux/elf-em.h explicitly, and
undefine ELF_DATA and EM_ALPHA (if PLATFORM_ANDROID and
BIONIC_ELFDATA_REDEF_BUG are defined) to workaround a bug (avoiding
"macro redefined" warnings) in Android 4.1 (and 4.2) Bionic which has
the mismatching macro definitions in headers included from linker.h.

11 years agoAdd assertion on number_of_objs to GC_extend_size_map
Ivan Maidanski [Sat, 16 Feb 2013 19:42:24 +0000 (23:42 +0400)]
Add assertion on number_of_objs to GC_extend_size_map

* misc.c (GC_extend_size_map): Add assertion for number_of_objs (result
of integer division) to be non-zero (this assertion violation is
observed in some Android emulators when gcc -march value does not match
target CPU).

11 years agoAllow not to rely on __data_start value (Linux)
Ivan Maidanski [Wed, 13 Feb 2013 20:47:30 +0000 (00:47 +0400)]
Allow not to rely on __data_start value (Linux)

* os_dep.c (GC_init_linux_data_start): Skip use of [__]data_start if
IGNORE_PROG_DATA_START (useful if give wrong value).
* os_dep.c (GC_init_linux_data_start): Add assertion checks for
[__]data_start to be not greater than _end.

11 years agoAllow to omit libc atexit() call
Ivan Maidanski [Wed, 13 Feb 2013 20:29:44 +0000 (00:29 +0400)]
Allow to omit libc atexit() call

* misc.c (GC_exit_check): Do not define if DONT_USE_ATEXIT (since
unused in this case).
* misc.c (GC_init): Do not call atexit if DONT_USE_ATEXIT (useful if
atexit is missing in libc, e.g., to workaround linkage problems in
Android NDK).

11 years ago.gitignore: Ignore .gch files
Ivan Maidanski [Sun, 27 Jan 2013 10:33:59 +0000 (14:33 +0400)]
.gitignore: Ignore .gch files

11 years agoAdjust punctuation in comments and documentation
Ivan Maidanski [Wed, 23 Jan 2013 19:59:19 +0000 (23:59 +0400)]
Adjust punctuation in comments and documentation

* win32_threads.c (GC_pthread_join): Add a space character after comma
in comment.
* include/private/gcconfig.h: Likewise.
* doc/README.Mac: Likewise.
* doc/porting.html: Likewise.
* ptr_chck.c (GC_same_obj): Remove redundant comma in comment.

11 years agoUpdate AUTHORS file
Ivan Maidanski [Wed, 23 Jan 2013 19:20:50 +0000 (23:20 +0400)]
Update AUTHORS file

11 years agoAdd AArch64 (64-bit ARM) target support
Yvan Roux [Wed, 23 Jan 2013 19:15:57 +0000 (23:15 +0400)]
Add AArch64 (64-bit ARM) target support

* include/private/gcconfig.h (AARCH64): New macro (defined only if
__aarch64__).
* include/private/gcconfig.h (mach_type_known): Update comment adding
ARM AArch64 target.
* include/private/gcconfig.h (NOSYS, mach_type_known, CPP_WORDSZ,
MACH_TYPE, ALIGNMENT, HBLKSIZE, OS_TYPE, LINUX_STACKBOTTOM,
DYNAMIC_LOADING, DATASTART, DATAEND, STACKBOTTOM): Define for AArch64.

11 years agoDo not include sigcontext.h if NO_SIGCONTEXT_H (Linux)
Ivan Maidanski [Sun, 6 Jan 2013 09:32:09 +0000 (13:32 +0400)]
Do not include sigcontext.h if NO_SIGCONTEXT_H (Linux)

* os_dep.c: Do not include [asm/]sigcontext.h (and linux/version.h)
if NO_SIGCONTEXT_H is defined (only if LINUX and not POWERPC).

11 years agoDo not use pthread_getattr_np if NO_PTHREAD_GETATTR_NP specified
Ivan Maidanski [Sun, 6 Jan 2013 09:05:24 +0000 (13:05 +0400)]
Do not use pthread_getattr_np if NO_PTHREAD_GETATTR_NP specified

* include/private/gcconfig.h (NO_PTHREAD_GETATTR_NP): Define new macro
for NaCl.
* os_dep.c (GC_get_main_stack_base, GC_get_stack_base): Test
NO_PTHREAD_GETATTR_NP instead of NACL (i.e., do not use
pthread_getattr_np if NO_PTHREAD_GETATTR_NP).

11 years agoFix reference to debugging-related README file in README and Makefile.dj
Ivan Maidanski [Fri, 28 Dec 2012 03:22:06 +0000 (07:22 +0400)]
Fix reference to debugging-related README file in README and Makefile.dj

* README: Change README.debugging to debugging.html.
* Makefile.dj (OTHER_FILES): Likewise.

11 years agoFix GC_win32_free_heap compilation error for Cygwin
Ivan Maidanski [Sun, 23 Dec 2012 12:03:36 +0000 (16:03 +0400)]
Fix GC_win32_free_heap compilation error for Cygwin
(fix commit 'caa5af9')

* os_dep.c (GC_win32_free_heap): Do not invoke virtual free for
Cygwin, remove "else" branch  (only if MSWIN32 but not CYGWIN32).

11 years agoFix: VirtualAlloc leaks when freeing the heap on win32
Max Mouratov [Sun, 21 Oct 2012 14:39:17 +0000 (20:39 +0600)]
Fix: VirtualAlloc leaks when freeing the heap on win32

11 years agoFix GC_win32_free_heap to prevent memory leak if USE_GLOBAL_ALLOC
Ivan Maidanski [Sun, 23 Dec 2012 14:52:10 +0000 (18:52 +0400)]
Fix GC_win32_free_heap to prevent memory leak if USE_GLOBAL_ALLOC

* os_dep.c (GC_win32_free_heap): Test GLOBAL_ALLOC_TEST instead of
GC_no_win32_dlls to determine whether the memory is allocated using
GlobalAlloc (only if MSWIN32).

11 years agoFix dwSize argument of VirtualFree call in detect_GetWriteWatch (Win32)
Ivan Maidanski [Sun, 23 Dec 2012 12:13:45 +0000 (16:13 +0400)]
Fix dwSize argument of VirtualFree call in detect_GetWriteWatch (Win32)

* os_dep.c (detect_GetWriteWatch): Pass 0 (instead of GC_page_size)
to Win32 VirtualFree if GWW_VDB (dwSize must be 0 if MEM_RELEASE
according to MSDN).

11 years agoAdd assertion to LONG_MULT and remove useless assert in PUSH_CONTENTS_HDR
Ivan Maidanski [Sun, 23 Dec 2012 10:47:09 +0000 (14:47 +0400)]
Add assertion to LONG_MULT and remove useless assert in PUSH_CONTENTS_HDR

* include/private/gc_pmark.h (LONG_MULT): Add static assertion that
the size of variable is large enough to hold multiplication result.
* include/private/gc_pmark.h (PUSH_CONTENTS_HDR): Remove useless
assertion check for a unsigned "high_prod" value to be non-negative
(only if MARK_BIT_PER_OBJ).

11 years agoMake GC_print_trace always thread-safe and remove 'lock' argument
Ivan Maidanski [Sun, 23 Dec 2012 10:23:50 +0000 (14:23 +0400)]
Make GC_print_trace always thread-safe and remove 'lock' argument

* mark.c (GC_print_trace): Remove "lock" argument assuming always true
(GC_print_trace is used for debugging purposes only and not exported
publicly).

11 years agoMove GC_print_trace code inside LOCK/UNLOCK to GC_print_trace_inner
Ivan Maidanski [Sun, 23 Dec 2012 09:25:59 +0000 (13:25 +0400)]
Move GC_print_trace code inside LOCK/UNLOCK to GC_print_trace_inner
(code refactoring)

* mark.c (GC_print_trace_inner): New function (only if TRACE_BUF).
* mark.c (GC_print_trace): Move code to GC_print_trace_inner (except
for LOCK/UNLOCK); invoke GC_print_trace_inner (either with lock held
or not depending on "lock" variable value).