platform/upstream/libgc.git
12 years ago2011-05-11 Ivan Maidanski <ivmai@mail.ru> (mostly really Ludovic Courtes)
ivmai [Wed, 11 May 2011 07:41:49 +0000 (07:41 +0000)]
2011-05-11  Ivan Maidanski  <ivmai@mail.ru> (mostly really Ludovic Courtes)

* tests/threadkey_test.c: New file.
* .cvsignore (threadkey_test): Add.
* tests/tests.am (TESTS, check_PROGRAMS): Add 'threadkey_test'.
* tests/tests.am (threadkey_test_SOURCES, threadkey_test_LDADD):
New variable.
* Makefile.in: Regenerate.

12 years ago2011-05-11 Ivan Maidanski <ivmai@mail.ru>
ivmai [Wed, 11 May 2011 07:19:46 +0000 (07:19 +0000)]
2011-05-11  Ivan Maidanski  <ivmai@mail.ru>

* pthread_support.c (GC_unregister_my_thread_inner): Don't call
GC_remove_specific.
* include/private/thread_local_alloc.h (GC_remove_specific):
Remove (since it is empty for all targets).
* pthread_support.c (GC_record_stack_base): New inline function.
* win32_threads.c (GC_record_stack_base): Ditto.
* pthread_support.c (GC_register_my_thread_inner): Invoke
GC_record_stack_base.
* win32_threads.c (GC_register_my_thread_inner): Ditto.
* pthread_support.c (GC_register_my_thread): If thread is FINISHED
then call GC_record_stack_base, clear FINISHED, initialize
thread-local list and return success.
* win32_threads.c (GC_register_my_thread): Ditto.
* include/gc.h (GC_register_my_thread): Update documentation.
* include/private/thread_local_alloc.h (GC_thread_key): Ditto.

12 years ago2011-05-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 10 May 2011 15:39:29 +0000 (15:39 +0000)]
2011-05-10  Ivan Maidanski  <ivmai@mail.ru>

* thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Join
adjacent "#ifdef".
* thread_local_alloc.c (GC_malloc_atomic): Call
GC_core_malloc_atomic (instead of GC_core_malloc).

12 years ago2011-05-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 10 May 2011 14:15:57 +0000 (14:15 +0000)]
2011-05-10  Ivan Maidanski  <ivmai@mail.ru>

* pthread_start.c (GC_start_rtn_prepare_thread): Change return
type to GC_thread.
* pthread_start.c (GC_inner_start_routine): Pass the current
thread descriptor to pthread_cleanup_push (same as in
win32_threads.c).
* pthread_stop_world.c (GC_push_all_stacks): Rename "me" local
variable to "self".
* win32_threads.c (GC_push_all_stacks): Ditto.
* pthread_stop_world.c (GC_suspend_all, GC_start_world): Rename
"my_thread" local variable to "self".
* pthread_support.c (GC_unregister_my_thread_inner): New static
function.
* pthread_support.c (GC_unregister_my_thread,
GC_thread_exit_proc): Use GC_unregister_my_thread_inner.
* win32_threads.c (GC_register_my_thread, GC_unregister_my_thread,
GC_do_blocking_inner): Rename "t" local variable to "thread_id".
* win32_threads.c (GC_wait_marker, GC_notify_all_marker): Rename
"id" local variable to "thread_id".

12 years ago2011-05-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 10 May 2011 12:53:40 +0000 (12:53 +0000)]
2011-05-10  Ivan Maidanski  <ivmai@mail.ru>

* pthread_support.c (GC_unregister_my_thread): Call pthread_self
only once.
* win32_threads.c (GC_pthread_start_inner): Ditto.
* pthread_support.c (GC_unregister_my_thread): Add debug output.
* win32_threads.c (GC_unregister_my_thread): Ditto.
* pthread_support.c (GC_register_my_thread,
GC_start_rtn_prepare_thread): Rename "my_pthread" local variable
to "self".

12 years ago2011-05-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 10 May 2011 11:07:12 +0000 (11:07 +0000)]
2011-05-10  Ivan Maidanski  <ivmai@mail.ru>

* include/gc.h (GC_HIDE_POINTER, GC_REVEAL_POINTER): Define
unconditionally (do not test GC_I_HIDE_POINTERS); update the
comment.
* include/gc.h (HIDE_POINTER, REVEAL_POINTER): Define as alias to
GC_HIDE/REVEAL_POINTER, respectively.
* include/private/gc_pmark.h (GC_I_HIDE_POINTERS): Do not define.
* include/private/gc_priv.h (GC_I_HIDE_POINTERS): Ditto.

12 years ago2011-05-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 10 May 2011 09:58:23 +0000 (09:58 +0000)]
2011-05-10  Ivan Maidanski  <ivmai@mail.ru>

* include/gc.h (GC_register_my_thread): Refine the comment.

12 years ago2011-05-08 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 8 May 2011 21:21:44 +0000 (21:21 +0000)]
2011-05-08  Ivan Maidanski  <ivmai@mail.ru>

* include/gc_inline.h (GC_MALLOC_WORDS, GC_CONS): Add missing
parentheses.
* include/gc_typed.h (GC_get_bit, GC_set_bit,
GC_CALLOC_EXPLICITLY_TYPED): Ditto.

12 years ago2011-05-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 7 May 2011 19:15:21 +0000 (19:15 +0000)]
2011-05-07  Ivan Maidanski  <ivmai@mail.ru>

* include/private/gcconfig.h (NO_GETCONTEXT): Add missing ')'.

12 years ago2011-05-07 Ivan Maidanski <ivmai@mail.ru> (really Thorsten Glaser)
ivmai [Sat, 7 May 2011 19:10:05 +0000 (19:10 +0000)]
2011-05-07  Ivan Maidanski  <ivmai@mail.ru> (really Thorsten Glaser)

* include/private/gcconfig.h (NO_GETCONTEXT): Do not use
getcontext(2) on m68k because it is not implemented there.

12 years ago2011-05-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 7 May 2011 19:04:25 +0000 (19:04 +0000)]
2011-05-07  Ivan Maidanski  <ivmai@mail.ru>

* alloc.c (GC_clear_a_few_frames): Use BZERO().
* mark_rts.c (GC_clear_roots, GC_rebuild_root_index): Ditto.
* reclaim.c (GC_start_reclaim): Ditto.
* blacklst.c (total_stack_black_listed): Remove "len" local
variable.
* dbg_mlc.c (GC_generate_random_valid_address): Replace "for"
statement with "do-while" one.
* dyn_load.c (GC_register_dynamic_libraries,
GC_register_dynlib_callback): Remove redundant parentheses.

12 years ago2011-05-06 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 6 May 2011 07:46:34 +0000 (07:46 +0000)]
2011-05-06  Ivan Maidanski  <ivmai@mail.ru>

* cord/cordxtra.c (CORD_from_file_lazy_inner): Suppress
"unused result" compiler warning for fread().
* cord/cordxtra.c: Expand all tabs to spaces.

12 years ago2011-05-06 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 6 May 2011 05:35:44 +0000 (05:35 +0000)]
2011-05-06  Ivan Maidanski  <ivmai@mail.ru>

* os_dep.c (GC_write_fault_handler): Break when in_allocd_block
is set to true.

12 years ago2011-05-06 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 6 May 2011 04:43:49 +0000 (04:43 +0000)]
2011-05-06  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_has_other_debug_info): Change return type to int;
return -1 if the object has (or had) debugging info but was
marked deallocated.
* include/private/dbg_mlc.h (GC_has_other_debug_info): Ditto.
* dbg_mlc.c (GC_has_other_debug_info): Update documentation;
remove "ohdr" local variable.
* dbg_mlc.c (GC_debug_free): Don't call GC_free if the object has
probably been deallocated.
* dbg_mlc.c (GC_debug_free): Don't actually free the object even
in the leak-finding mode if GC_findleak_delay_free.
* dbg_mlc.c (GC_print_all_smashed_proc): Print a trailing blank
line.
* dbg_mlc.c (GC_check_leaked): New function (only unless
SHORT_DBG_HDRS).
* doc/README.environment (GC_FINDLEAK_DELAY_FREE): Document.
* doc/README.macros (GC_FINDLEAK_DELAY_FREE): Ditto.
* include/private/dbg_mlc.h (START_FLAG, END_FLAG): Use GC_WORD_C
on 64-bit architectures.
* include/private/dbg_mlc.h (NOT_MARKED): Remove redundant
parentheses.
* include/private/dbg_mlc.h (GC_HAS_DEBUG_INFO): Update (due to
GC_has_other_debug_info change).
* include/private/gc_priv.h (GC_findleak_delay_free): New global
variable declaration (unless SHORT_DBG_HDRS).
* misc.c (GC_findleak_delay_free): New global variable; recognize
GC_FINDLEAK_DELAY_FREE.
* misc.c (GC_init): Recognize GC_FINDLEAK_DELAY_FREE environment
variable (unless SHORT_DBG_HDRS).
* reclaim.c (GC_check_leaked): Declare (unless SHORT_DBG_HDRS).
* reclaim.c (GC_add_leaked): Don't add the object to leaked list
if marked as deallocated.

12 years ago2011-05-05 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 5 May 2011 05:24:48 +0000 (05:24 +0000)]
2011-05-05  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_has_other_debug_info): Fix punctuation in the
comment.
* dbg_mlc.c (GC_FREED_MEM_MARKER): New macro.
* dbg_mlc.c (GC_debug_free): Use GC_FREED_MEM_MARKER.
* dbg_mlc.c (GC_smashed): Refine documentation.
* mark.c (GC_push_selected): Change dirty_fn return type to
GC_bool.
* os_dep.c (GC_page_was_ever_dirty): Make GC_INNER.
* reclaim.c (GC_reclaim_small_nonempty_block): Remove "kind"
local  variable.
* reclaim.c (GC_reclaim_block): Pass true constant to
GC_reclaim_small_nonempty_block (instead of report_if_found).
* doc/README.autoconf: Update; fix a typo.
* include/private/gcconfig.h (GC_WORD_C): New macro.

12 years ago2011-05-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 3 May 2011 10:33:59 +0000 (10:33 +0000)]
2011-05-03  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_store_debug_info_inner): Cast "linenum".
* dbg_mlc.c (GC_check_annotated_obj): Fix punctuation in the
comment.
* dbg_mlc.c (GC_print_smashed_obj): Add (and print) "msg"
argument.
* dbg_mlc.c (GC_debug_free, GC_print_all_smashed_proc): Pass
message to GC_print_smashed_obj.
* dbg_mlc.c (GC_debug_free): Call GC_size once.
* dbg_mlc.c (GC_debug_realloc): Calculate old_sz only if
allocation succeeded; remove unnecessary check for object is
smashed (since this is done in GC_debug_free); remove "clobbered"
local variable.

12 years ago2011-05-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 3 May 2011 07:21:16 +0000 (07:21 +0000)]
2011-05-03  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_store_debug_info_inner, GC_store_debug_info):
Rename "integer" argument to "linenum"; change the type of the
argument to int.
* gcj_mlc.c (GC_store_debug_info): Ditto.
* dbg_mlc.c (GET_OH_LINENUM): New macro.
* dbg_mlc.c (GC_print_obj, GC_print_smashed_obj): Use
GET_OH_LINENUM; adjust print format specifier.
* dbg_mlc.c (GC_debug_malloc, GC_debug_malloc_ignore_off_page,
GC_debug_malloc_atomic_ignore_off_page,
GC_debug_generic_malloc_inner,
GC_debug_generic_malloc_inner_ignore_off_page,
GC_debug_malloc_stubborn, GC_debug_malloc_atomic,
GC_debug_malloc_uncollectable,
GC_debug_malloc_atomic_uncollectable): Remove unnecessary cast of
"i".
* gcj_mlc.c (GC_debug_gcj_malloc): Ditto.

12 years ago2011-04-26 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 26 Apr 2011 21:09:41 +0000 (21:09 +0000)]
2011-04-26  Ivan Maidanski  <ivmai@mail.ru>

* .cvsignore (initsecondarythread, test_cpp): Add.
* os_dep.c (GC_linux_stack_base): Rename to
GC_linux_main_stack_base.
* os_dep.c (GC_freebsd_stack_base): Rename to
GC_freebsd_main_stack_base; adjust error message.
* pthread_stop_world.c (GC_stop_init): Use GC_SEM_INIT_PSHARED
as an argument for sem_init().
* pthread_support.c (pthread_create): Ditto.
* pthread_support.c (pthread_create): Abort in case sem_init()
fails.
* include/private/gc_priv.h (GC_SEM_INIT_PSHARED): Define.
* tests/initsecondarythread.c: Include gcconfig.h; call GC_INIT
from main() if it should be done from the primordial thread only.

12 years ago2011-04-26 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 26 Apr 2011 10:47:02 +0000 (10:47 +0000)]
2011-04-26  Ivan Maidanski  <ivmai@mail.ru>

* alloc.c: Don't include sys/types.h for ArmCC.
* dyn_load.c: Ditto.
* os_dep.c: Ditto.
* mach_dep.c (_setjmp, _longjmp): Redirect to setjmp/longjmp for
ArmCC.
* mark.c (GC_noop): Define specially for ArmCC.
* include/private/gc_priv.h (GC_noop): Ditto.
* misc.c (GC_init): Don't test pointers comparison for ArmCC.
* misc.c: Don't include unistd.h for ArmCC.
* os_dep.c (pages_executable): Rename to GC_pages_executable;
make STATIC.
* os_dep.c (GC_unix_mmap_get_mem): Don't define for ArmCC.
* ptr_chck.c (GC_is_visible): Explicitly cast
(GC_DS_PER_OBJECT-GC_INDIR_PER_OBJ_BIAS) to word (to suppress
a compiler warning).
* include/private/gcconfig.h: Recognize __arm.
* include/private/gcconfig.h (HBLKPTR): Define for ArmCC.
* include/private/gcconfig.h (HBLKPTR): Add parentheses for
"bytes" argument.

12 years ago2011-04-24 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 24 Apr 2011 13:09:21 +0000 (13:09 +0000)]
2011-04-24  Ivan Maidanski  <ivmai@mail.ru>

* pthread_support.c (GC_get_nprocs): Don't define for Android.
* pthread_support.c (GC_dummy_thread_local): Don't test
GC_LINUX_THREADS.
* include/gc_config_macros.h (GC_ADD_CALLER, GC_RETURN_ADDR):
Define for Android.

12 years ago2011-04-24 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 24 Apr 2011 06:37:23 +0000 (06:37 +0000)]
2011-04-24  Ivan Maidanski  <ivmai@mail.ru>

* mach_dep.c (NO_GETCONTEXT): Move to gcconfig.h.
* os_dep.c (GC_write_fault_handler): Don't include ucontext.h if
NO_GETCONTEXT.
* include/private/gcconfig.h (GETPAGESIZE): Define as a sysconf
call for Android.

12 years ago2011-04-23 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 23 Apr 2011 10:03:58 +0000 (10:03 +0000)]
2011-04-23  Ivan Maidanski  <ivmai@mail.ru>

* include/private/gc_locks.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
Define before including windows.h.
* include/private/gc_priv.h (WIN32_LEAN_AND_MEAN, NOSERVICE):
Ditto.
* include/private/thread_local_alloc.h (WIN32_LEAN_AND_MEAN,
NOSERVICE): Ditto.
* include/private/gc_priv.h (CLOCKS_PER_SEC): Reformat the
comment.
* include/private/gc_priv.h (MS_TIME_DIFF): Avoid floating-point
arithmetics; add a comment.

12 years ago2011-04-23 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 23 Apr 2011 08:51:53 +0000 (08:51 +0000)]
2011-04-23  Ivan Maidanski  <ivmai@mail.ru>

* mark.c (GC_clear_hdr_marks): Don't test USE_MARK_BYTES.
* extra/setjmp_t.c (main): Don't test USE_MARK_BITS.
* include/private/gc_pmark.h (SET_MARK_BIT_EXIT_IF_SET): Ditto.
* include/private/gc_pmark.h (SET_MARK_BIT_EXIT_IF_SET): Remove
"mark_byte" local variable.
* include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET): Add a comment
about that AO_or() is not used by GC unless USE_MARK_BITS
explicitly set.
* include/private/gc_priv.h (OR_WORD): Ditto.
* include/private/gc_pmark.h (INCR_MARKS): Remove trailing ';',
add parentheses.
* include/private/gc_priv.h (ONES): Define before use by
MAKE_COOLER.
* include/private/gc_priv.h (MARK_BITS_SZ): Define where used.
* include/private/gc_priv.h (OR_WORD): Don't define if
USE_MARK_BYTES.
* include/private/gcconfig.h (USE_MARK_BYTES); Remove duplicate
definition; simplify expression.

12 years ago2011-04-22 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 22 Apr 2011 21:40:15 +0000 (21:40 +0000)]
2011-04-22  Ivan Maidanski  <ivmai@mail.ru>

* os_dep.c (GC_get_maps): Always close the file.
* pthread_support.c (GC_get_nprocs): Ditto.
* os_dep.c (READ): Define similarly across the file (without
parameters).
* pthread_support.c (GC_get_nprocs): Use signed int type for "i"
and "len" local variables (since read() may return -1).
* include/private/gc_pmark.h (LONG_MULT): Add prefix/suffix
double underscore; add "volatile" for asm.
* include/private/gc_pmark.h (LONG_MULT): Add missing
parentheses.
* include/private/gc_priv.h (OR_WORD): Ditto.
* include/private/gc_priv.h (OR_WORD): Remove unnecessary brackets
and ';' symbol.

12 years ago2011-04-22 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 22 Apr 2011 11:54:12 +0000 (11:54 +0000)]
2011-04-22  Ivan Maidanski  <ivmai@mail.ru>

* os_dep.c (GC_get_stack_base): Implement for Android (same as
for Linux).
* pthread_support.c (GC_get_nprocs): Return 1 (instead of -1) if
failed to open "stat" file (not to issue a warning twice); update
the comment.
* pthread_support.c (GC_thr_init): Call sysconf() on Android to
get the number of CPUs.

12 years ago2011-04-21 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 21 Apr 2011 15:20:00 +0000 (15:20 +0000)]
2011-04-21  Ivan Maidanski  <ivmai@mail.ru>

* include/private/gc_priv.h (_GNU_SOURCE): Revert one of the
recent patches regarding this macro as the macro should be set
(to 1) before including any other system header.

12 years ago2011-04-21 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 21 Apr 2011 07:10:16 +0000 (07:10 +0000)]
2011-04-21  Ivan Maidanski  <ivmai@mail.ru>

* doc/README.environment (GC_INITIAL_HEAP_SIZE,
GC_MAXIMUM_HEAP_SIZE): Update.

12 years ago2011-04-20 Ivan Maidanski <ivmai@mail.ru>
ivmai [Wed, 20 Apr 2011 21:25:18 +0000 (21:25 +0000)]
2011-04-20  Ivan Maidanski  <ivmai@mail.ru>

* misc.c (GC_parse_mem_size_arg): Allow 'k', 'M', 'G' suffixes in
heap size specifier; return 0 if not a valid one.
* include/gc_cpp.h: Explicitly define inline one-argument delete
operator for Cygwin (as a workaround).
* include/gc_cpp.h: Reformat the code.
* tests/test_cpp.cc: Ditto.
* tests/test_cpp.cc (main): Suppress compiler warnings about
"assigned value is unused".

12 years ago2011-04-19 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 19 Apr 2011 17:49:22 +0000 (17:49 +0000)]
2011-04-19  Ivan Maidanski  <ivmai@mail.ru>

* misc.c (GC_parse_mem_size_arg): New function.
* misc.c (GC_init): Use GC_parse_mem_size_arg().
* pthread_stop_world.c (tkill): Declare for Android.

12 years ago2011-04-19 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 19 Apr 2011 11:27:58 +0000 (11:27 +0000)]
2011-04-19  Ivan Maidanski  <ivmai@mail.ru>

* include/private/gc_priv.h (_GNU_SOURCE): Include features.h
first (except for NaCl) and then define the macro to 1 if not yet.

12 years ago2011-04-18 Ivan Maidanski <ivmai@mail.ru> (really Ludovic Courtes)
ivmai [Mon, 18 Apr 2011 22:11:59 +0000 (22:11 +0000)]
2011-04-18  Ivan Maidanski  <ivmai@mail.ru> (really Ludovic Courtes)

* tests/tests.am (TESTS, check_PROGRAMS): Add
'initsecondarythread'.
* tests/tests.am (initsecondarythread_SOURCES,
initsecondarythread_LDADD): New variable.
* Makefile.in: Regenerate.
* configure: Ditto.

12 years ago2011-04-18 Ivan Maidanski <ivmai@mail.ru>
ivmai [Mon, 18 Apr 2011 21:14:54 +0000 (21:14 +0000)]
2011-04-18  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_store_debug_info_inner): Always define; add
"const" to its string argument.
* dbg_mlc.c (GC_store_debug_info): Call GC_store_debug_info_inner.
* dbg_mlc.c (GC_debug_free): Set GC_have_errors in case of
smashed or previously deallocated found.
* dbg_mlc.c (GC_check_heap_block): Replace while loop with a for
one.
* reclaim.c (GC_reclaim_check): Ditto.
* dbg_mlc.c (GC_check_heap_proc): Remove redundant cast to word.
* os_dep.c (GC_get_stack_base): Don't initialize
stackbase_main_self/ss_sp on Solaris if thr_main() is zero (thus
calling GC_INIT() from a non-primordial thread is possible now).
* reclaim.c (GC_add_leaked): Turn into an inline one.
* reclaim.c (GC_reclaim_small_nonempty_block):
Change report_if_found type from int/word to boolean.
* include/private/gc_priv.h (GC_start_reclaim): Ditto.
* include/private/gc_priv.h (set_mark_bit_from_hdr,
clear_mark_bit_from_hdr): Place closing parenthesis properly;
reformat the code.

12 years ago2011-04-16 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 16 Apr 2011 09:32:15 +0000 (09:32 +0000)]
2011-04-16  Ivan Maidanski  <ivmai@mail.ru>

* os_dep.c (GC_get_main_stack_base): Try to use
pthread_attr_getstack first for Linux if THREADS.
* doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Adjust text
alignment.

12 years ago2011-04-13 Ivan Maidanski <ivmai@mail.ru>
ivmai [Wed, 13 Apr 2011 20:27:47 +0000 (20:27 +0000)]
2011-04-13  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_generate_random_backtrace_no_gc): Fix a message
typo.
* dbg_mlc.c (GC_debug_malloc): Add a comment (about zero size).
* dbg_mlc.c (GC_debug_generic_malloc_inner): Reformat the comment.
* dbg_mlc.c (GC_strdup): Call GC_err_printf instead of WARN (in
case of NULL argument).
* dbg_mlc.c (GC_free): In case of NULL argument, just return
(without any warning printed); eliminate "uncollectable" local
variable.

12 years ago2011-04-13 Ivan Maidanski <ivmai@mail.ru> (mostly really Rainer Orth)
ivmai [Wed, 13 Apr 2011 19:49:10 +0000 (19:49 +0000)]
2011-04-13  Ivan Maidanski  <ivmai@mail.ru> (mostly really Rainer Orth)

* configure.ac (THREADDLLIBS): Use alternate thread library on
Solaris 8.
* configure.ac (need_atomic_ops_asm): Set to true only for Sparc
Solaris.
* configure.ac: Don't use libdl on mips-sgi-irix6.
* configure: Regenerate.

12 years ago2011-04-11 Ivan Maidanski <ivmai@mail.ru> (really Jie Liu)
ivmai [Mon, 11 Apr 2011 20:20:05 +0000 (20:20 +0000)]
2011-04-11  Ivan Maidanski  <ivmai@mail.ru> (really Jie Liu)

* mach_dep.c (NO_GETCONTEXT); Define for RTEMS.
* mach_dep.c (GC_with_callee_saves_pushed): Don't call
__builtin_unwind_init() for RTEMS; use setjmp() without the
leading underscore (for RTEMS).
* tests/test.c (BIG): Use smaller value for RTEMS.
* tests/test.c (main): Customize for RTEMS.

12 years ago2011-04-11 Ivan Maidanski <ivmai@mail.ru> (mostly really Jim Meyering)
ivmai [Mon, 11 Apr 2011 19:51:54 +0000 (19:51 +0000)]
2011-04-11  Ivan Maidanski  <ivmai@mail.ru> (mostly really Jim Meyering)

* configure.host: Remove doubled words in comments.
* os_dep.c: Ditto.
* doc/README: Ditto.
* extra/setjmp_t.c: Ditto.
* tests/huge_test.c: Ditto.
* extra/setjmp_t.c (getpagesize, nested_sp, main, g): Replace the
K&R-style function definition with the ANSI C one.
* extra/setjmp_t.c: Expand all tabs to spaces.
* extra/setjmp_t.c (nested_sp): Implement in the same way as
GC_approx_sp.

12 years ago2011-04-10 Ivan Maidanski <ivmai@mail.ru> (really Iain Sandoe, Mike Stump)
ivmai [Sun, 10 Apr 2011 11:48:09 +0000 (11:48 +0000)]
2011-04-10  Ivan Maidanski  <ivmai@mail.ru> (really Iain Sandoe, Mike Stump)

* dyn_load.c (GC_dyld_sections): Add more sctions.
* dyn_load.c (GC_dyld_add_sect_fmts): New static varaible.
* dyn_load.c (L2_MAX_OFILE_ALIGNMENT): New macro.
* dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove): Improve
logging; add support for on-demand sections.
* dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove): Reformat
the code.

12 years ago2011-04-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 10 Apr 2011 09:46:46 +0000 (09:46 +0000)]
2011-04-10  Ivan Maidanski  <ivmai@mail.ru>

* gcj_mlc.c (GC_gcj_malloc_initialized): Use STATIC unless
GC_ASSERTIONS.
* include/private/gc_priv.h (GC_gcj_malloc_initialized): Don't
declare (as external) unless GC_ASSERTIONS.
* os_dep.c (GC_win32_free_heap): Clear GC_heap_bases[] also for
Cygwin; add FIXME.
* include/private/gcconfig.h: Include <sys/unistd.h> for RTEMS.
* include/private/gcconfig.h: Add "#error" for every "-->" mark.
* include/private/gcconfig.h (CLEAR_DOUBLE): Turn the code into
an expression.
* include/private/pthread_support.h (SUSPENDED_EXT): Add new flag
(which existed previously as SUSPENDED and still exists in GCJ).
* include/private/pthread_support.h (DISABLED_GC): Change the
value (as it is already used by SUSPENDED_EXT).

12 years ago2011-04-10 Ivan Maidanski <ivmai@mail.ru> (mostly really Iain Sandoe)
ivmai [Sun, 10 Apr 2011 09:13:47 +0000 (09:13 +0000)]
2011-04-10  Ivan Maidanski  <ivmai@mail.ru> (mostly really Iain Sandoe)

* tests/test.c (reverse_test):  Modify count (BIG) for
ppc64-darwin.

12 years ago2011-04-09 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 9 Apr 2011 13:42:08 +0000 (13:42 +0000)]
2011-04-09  Ivan Maidanski  <ivmai@mail.ru>

* reclaim.c (GC_print_all_errors): Recognize new GC_ABORT_ON_LEAK
macro and environment variable; abort if any error has been
printed provided the environment variable (or macro) is set.
* doc/README.environment (GC_ABORT_ON_LEAK): Document.
* doc/README.macros (GC_ABORT_ON_LEAK): Ditto.
* doc/README.macros (FIND_LEAK, SUNOS5SIGS, PCR,
USE_COMPILER_TLS): Reformat the text.

12 years ago2011-04-09 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 9 Apr 2011 11:47:01 +0000 (11:47 +0000)]
2011-04-09  Ivan Maidanski  <ivmai@mail.ru>

* os_dep.c (GC_unix_sbrk_get_mem, GC_unix_get_mem): Don't define
for RTEMS.
* include/private/gcconfig.h (RTEMS): Add support for.
* include/private/gcconfig.h (GET_MEM): Use calloc() for RTEMS.

12 years ago2011-04-09 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 9 Apr 2011 11:22:22 +0000 (11:22 +0000)]
2011-04-09  Ivan Maidanski  <ivmai@mail.ru>

* mallocx.c (GC_malloc_uncollectable): Move to malloc.c (since
it is used internally in some places).

12 years ago2011-04-09 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 9 Apr 2011 10:50:54 +0000 (10:50 +0000)]
2011-04-09  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_register_finalizer_no_order): Remove redundant
declaration.
* dbg_mlc.c (GC_debug_malloc_replacement,
GC_debug_realloc_replacement): Rename RA to GC_DBG_RA.
* malloc.c (GC_debug_malloc_replacement): Ditto.
* mallocx.c (GC_debug_realloc_replacement): Ditto.
* dbg_mlc.c (GC_store_debug_info): Move proto from dbg_mlc.h.
* malloc.c (GC_strdup, GC_strndup, GC_wcsdup): Move to mallocx.c.
* malloc.c: Include errno.h only REDIRECT_MALLOC; remove redundant
includes of string.h.
* mallocx.c: Include string.h (for GC_strdup).
* include/private/dbg_mlc.h (GC_store_debug_info): Move declaration
to dbg_mlc.c.
* include/private/gc_locks.h (UNCOND_LOCK, UNCOND_UNLOCK): Remove
redundant trailing ';'.
* include/private/gc_priv.h (START_WORLD, COND_DUMP): Ditto.
* include/private/gc_locks.h (LOCK, UNLOCK): Place opening '{'
properly.
* include/private/gc_priv.h (GC_DBG_RA): Move from dbg_mlc.c,
malloc.c, mallocx.c.

12 years ago2011-04-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 7 Apr 2011 20:35:46 +0000 (20:35 +0000)]
2011-04-07  Ivan Maidanski  <ivmai@mail.ru>

* alloc.c (GC_check_heap, GC_print_all_smashed): Move the
definition from misc.c.
* dbg_mlc.c (GC_debug_malloc_atomic_uncollectable): Define as
public.
* include/gc.h (GC_debug_malloc_atomic_uncollectable): Declare.
* include/gc.h (GC_MALLOC_ATOMIC_UNCOLLECTABLE): Define new public
macro.
* dbg_mlc.c (MAX_SMASHED): Don't define if already set.
* reclaim.c (MAX_LEAKED): Ditto.
* dbg_mlc.c (GC_add_smashed): Add FIXME about the concurrent
access to the global array.
* reclaim.c (GC_add_leaked): Ditto.
* misc.c (GC_print_back_height): Set on if GC_PRINT_BACK_HEIGHT
(new macro) is defined.
* doc/README.macros (GC_PRINT_BACK_HEIGHT): Document.
* misc.c (GC_dump_regularly, GC_init): Replace 0/1 for
GC_dump_regularly and GC_print_back_height variables with
FALSE/TRUE.
* reclaim.c (GC_print_all_errors): Refine the comment.

12 years ago2011-04-04 Ivan Maidanski <ivmai@mail.ru>
ivmai [Mon, 4 Apr 2011 19:45:06 +0000 (19:45 +0000)]
2011-04-04  Ivan Maidanski  <ivmai@mail.ru>

* tests/test.c (reverse_test_inner): Undo one of the previous
patches which shifts "c" and "d" pointers only if
ALL_INTERIOR_POINTERS (since interior pointers are always
recognized in stacks).

12 years ago2011-04-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 3 Apr 2011 19:29:08 +0000 (19:29 +0000)]
2011-04-03  Ivan Maidanski  <ivmai@mail.ru>

* misc.c (GC_stdout, GC_stderr): Move the definition to the place
where GC_log is defined (Unix only).
* misc.c (GC_init): Recognize "GC_ONLY_LOG_TO_FILE" environment
variable and the similar macro; redirect GC_stdout and GC_stderr
to GC_log if "GC_LOG_FILE" environment variable is set unless
prohibited by GC_ONLY_LOG_TO_FILE (Unix only).
* doc/README.environment (GC_ONLY_LOG_TO_FILE): Document.
* doc/README.macros (GC_ONLY_LOG_TO_FILE): Ditto.

12 years ago2011-04-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 3 Apr 2011 15:39:05 +0000 (15:39 +0000)]
2011-04-03  Ivan Maidanski  <ivmai@mail.ru>

* misc.c (GC_stdout, GC_write): Rename GC_stdout to GC_log (Win32
only).
* misc.c (GC_write): Add for MacOS (and OS/2); change WRITE()
accordingly.
* misc.c (GC_write): Reformat code (Unix only).
* misc.c (GC_printf): Check GC_quiet before va_start().

12 years ago2011-04-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 3 Apr 2011 15:29:32 +0000 (15:29 +0000)]
2011-04-03  Ivan Maidanski  <ivmai@mail.ru>

* allchblk.c (GC_freehblk): Use GC_log_printf instead of GC_printf
inside "if (GC_print_stats)" branch.
* alloc.c (GC_collect_or_expand): Ditto.
* dyn_load.c (GC_register_dynamic_libraries): Ditto.
* headers.c (GC_scratch_alloc): Ditto.
* os_dep.c (GC_get_maps, GC_remap, PROTECT,
GC_write_fault_handler, GC_dirty_init, GC_mprotect_thread): Ditto.
* alloc.c (min_bytes_allocd): Use GC_log_printf instead of
GC_printf for DEBUG_THREADS output.
* darwin_stop_world.c (GC_stack_range_for, GC_suspend_thread_list,
GC_stop_world, GC_thread_resume, GC_start_world): Ditto.
* pthread_start.c (GC_inner_start_routine): Ditto.
* pthread_stop_world.c (GC_suspend_handler, GC_restart_handler,
GC_push_all_stacks, GC_suspend_all, GC_stop_world,
GC_start_world): Ditto.
* pthread_support.c (GC_mark_thread, GC_get_nprocs,
GC_start_rtn_prepare_thread, pthread_create): Ditto.
* alloc.c (GC_adj_bytes_allocd, GC_maybe_gc, GC_stopped_mark,
GC_finish_collection): Reformat code.
* pthread_stop_world.c (GC_print_sig_mask): Ditto.
* pthread_support.c (GC_thr_init): Ditto.
* checksums.c (GC_update_check_page): Use GC_printf() instead of
GC_err_printf() for error printing.
* checksums.c (GC_check_blocks, GC_check_dirty): Use GC_log_printf
instead of GC_printf for logging purposes.
* dyn_load.c (sys_errlist, sys_nerr, errno): Move declaration of
external variable outside from GC_register_dynamic_libraries.
* dyn_load.c (GC_register_dynamic_libraries): Don't use
sys_errlist value if errno equals to sys_nerr.
* dyn_load.c (GC_register_dynamic_libraries): Use GC_log_printf
instead of GC_printf for DL_VERBOSE output.
* dyn_load.c (GC_dyld_image_add, GC_dyld_image_remove,
GC_init_dyld): Use GC_log_printf instead of GC_printf for
DARWIN_DEBUG output.
* os_dep.c (catch_exception_raise): Use GC_log_printf
instead of GC_printf for DEBUG_EXCEPTION_HANDLING output.
* reclaim.c (GC_print_free_list): Move "n" increment out of
GC_printf() call.

12 years ago2011-04-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 3 Apr 2011 14:32:12 +0000 (14:32 +0000)]
2011-04-03  Ivan Maidanski  <ivmai@mail.ru>

* win32_threads.c (DEBUG_CYGWIN_THREADS, DEBUG_WIN32_PTHREADS,
DEBUG_WIN32_THREADS): Remove.
* win32_threads.c (GC_register_my_thread_inner,
GC_win32_start_inner): Use GC_log_printf instead of GC_printf
inside "if (GC_print_stats)" branch.
* win32_threads.c (GC_PTHREAD_PTRVAL): New macro (defined only if
GC_PTHREADS).
* win32_threads.c (GC_delete_gc_thread, NUMERIC_THREAD_ID,
GC_pthread_join, GC_pthread_create): Use GC_PTHREAD_PTRVAL
macro.
* win32_threads.c (GC_push_stack_for, GC_mark_thread,
GC_CreateThread, GC_beginthreadex, GC_pthread_join,
GC_pthread_create, GC_pthread_start_inner, GC_thread_exit_proc,
GC_mark_thread_local_free_lists): Use GC_log_printf instead of
GC_printf for DEBUG_THREADS output.
* win32_threads.c (GC_win32_start_inner, GC_CreateThread,
GC_beginthreadex, GC_pthread_join, GC_pthread_create,
GC_pthread_start_inner, GC_thread_exit_proc): Cast
GetCurrentThreadId result to long; don't cast value of pthread_t
type to int; adjust printf format specifiers.
* doc/README.win32 (DEBUG_WIN32_PTHREADS): Remove obsolete
information.

12 years ago2011-04-03 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 3 Apr 2011 13:43:18 +0000 (13:43 +0000)]
2011-04-03  Ivan Maidanski  <ivmai@mail.ru>

* tests/test.c (cons, small_cons, gcj_cons, check_ints,
check_uncollectable_ints, print_int_list, check_marks_int_list,
fork_a_thread, finalizer, mktree, chktree, alloc8bytes,
alloc_small, tree_test, typed_test, check_heap_stats, WinMain,
test, main): Remove unnecessary casts of GC_printf calls to void.

12 years ago2011-04-02 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 2 Apr 2011 15:57:23 +0000 (15:57 +0000)]
2011-04-02  Ivan Maidanski  <ivmai@mail.ru>

* allchblk.c (GC_print_hblkfreelist): Adjust (make uniform across
BDWGC) printed message (adjust letters case, terminating dot and
new line symbols).
* alloc.c (GC_check_fl_marks): Ditto.
* backgraph.c (new_back_edges): Ditto.
* checksums.c (GC_check_dirty): Ditto.
* darwin_stop_world.c (GC_push_all_stacks,
GC_suspend_thread_list): Ditto.
* dbg_mlc.c (GC_print_type, GC_debug_free, GC_debug_realloc,
store_old): Ditto.
* dyn_load.c (GC_register_dynamic_libraries): Ditto.
* mark.c (GC_initiate_gc, GC_mark_some, GC_mark_from, GC_push_all,
GC_push_selected, GC_push_next_marked_dirty): Ditto.
* mark_rts.c (GC_exclude_static_roots_inner): Ditto.
* os_dep.c (GC_remap, GC_default_push_other_roots,
GC_push_thread_structures, GC_dirty_init, GC_read_dirty,
catch_exception_raise_state, catch_exception_raise_state_identity,
GC_mprotect_thread_notify, GC_mprotect_thread,
catch_exception_raise): Ditto.
* pthread_stop_world.c (GC_print_sig_mask, GC_push_all_stacks,
GC_stop_world, GC_stop_init): Ditto.
* pthread_support.c (GC_thr_init, GC_register_my_thread_inner,
GC_start_routine): Ditto.
* win32_threads.c (GC_register_my_thread_inner,
GC_push_all_stacks, GC_win32_start_inner, GC_pthread_join,
GC_pthread_start_inner): Ditto.
* alloc.c (GC_expand_hp_inner): Realign the code.
* mark.c (GC_mark_from, GC_mark_local, GC_do_parallel_mark):
Ditto.
* misc.c (GC_init): Ditto.
* os_dep.c (GC_dirty_init, GC_read_dirty): Ditto.
* include/private/gc_pmark.h (PUSH_CONTENTS_HDR): Ditto.
* tests/test.c (run_one_test): Ditto.
* misc.c (GC_err_puts): Document.
* misc.c (GC_err_write): Remove.
* os_dep.c (dump_maps): Ditto.
* include/private/gc_priv.h (GC_err_write): Ditto.
* os_dep.c (GC_print_address_map): Call GC_err_puts() instead of
dump_maps() and GC_err_write().
* os_dep.c (GC_read_dirty): Remove redundant brackets.

12 years ago2011-04-02 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 2 Apr 2011 08:15:06 +0000 (08:15 +0000)]
2011-04-02  Ivan Maidanski  <ivmai@mail.ru>

* tests/test.c (reverse_test_inner): Test interior pointer
recognition only if ALL_INTERIOR_POINTERS.
* tests/test.c (run_one_test): Replace GC_all_interior_pointers
with GC_get_all_interior_pointers(); simplify the expression.
* tests/test.c (check_heap_stats): Replace GC_bytes_allocd and
GC_bytes_allocd_before_gc with GC_get_total_bytes().
* tests/test.c (main): Replace GC_gc_no with GC_get_gc_no().

12 years ago2011-03-27 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 27 Mar 2011 20:19:47 +0000 (20:19 +0000)]
2011-03-27  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_debug_strdup, GC_debug_free): Output a portability
warning if the argument is NULL and GC is in leaks detection mode.
* dbg_mlc.c (GC_debug_strndup, GC_debug_wcsdup): New public
function definition.
* malloc.c (GC_strndup, GC_wcsdup, strndup): Ditto.
* mallocx.c (GC_posix_memalign): Ditto.
* malloc.c (strdup): Fix string size value; rename "len" to "lb".
* mallocx.c: Include errno.h unless WinCE (otherwise include
windows.h for Win32 error constants).
* win32_threads.c: Define WIN32_LEAN_AND_MEAN and NOSERVICE before
windows.h inclusion.
* misc.c (GC_init): Register at-exit callback if GC_find_leak
(even if GC_FIND_LEAK macro is unset).
* pthread_stop_world.c (NACL_STORE_REGS,
__nacl_suspend_thread_if_needed, GC_nacl_initialize_gc_thread):
Use BCOPY() instead of memcpy().
* pthread_support.c (GC_init_real_syms): Ditto.
* doc/README: Update year in copyright.
* include/gc.h: Ditto.
* doc/README.macros (GC_DEBUG_REPLACEMENT, GC_REQUIRE_WCSDUP):
Document new macro.
* doc/README.macros (REDIRECT_MALLOC): Update documentation.
* include/gc.h (GC_strndup, GC_posix_memalign, GC_debug_strndup):
New API function prototype.
* include/gc.h (GC_MALLOC, GC_REALLOC): Redirect to
GC_debug_malloc/realloc_replacement() if GC_DEBUG_REPLACEMENT.
* include/gc.h (GC_STRDUP): Remove redundant parentheses.
* include/leak_detector.h (realloc, strdup): Ditto.
* include/gc.h (GC_STRNDUP): New API macro.
* include/gc.h (GC_NEW, GC_NEW_ATOMIC, GC_NEW_STUBBORN,
GC_NEW_UNCOLLECTABLE): Add missing parentheses.
* include/gc.h (GC_wcsdup, GC_debug_wcsdup): New API function
prototype (only if GC_REQUIRE_WCSDUP).
* include/gc.h (GC_WCSDUP): New API macro (only if
GC_REQUIRE_WCSDUP).
* include/leak_detector.h: Add copyright header; add usage
comment; include stdlib.h and string.h after gc.h (unless
GC_DONT_INCLUDE_STDLIB).
* include/leak_detector.h (malloc, calloc, free, realloc):
Undefine symbol before its redefinition.
* include/leak_detector.h (strndup, memalign, posix_memalign):
Redefine to the corresponding GC function.
* include/leak_detector.h (wcsdup): Redefine to GC_WCSDUP (only
if GC_REQUIRE_WCSDUP).
* include/leak_detector.h (CHECK_LEAKS): Add comment; don't define
the macro if already defined.

12 years ago2011-03-22 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 22 Mar 2011 17:50:16 +0000 (17:50 +0000)]
2011-03-22  Ivan Maidanski  <ivmai@mail.ru>

* misc.c (GC_abort): Use _exit() (instead of DebugBreak) on Win32 when
doing code static analysis (to inform the tool that the function is
a no-return one).
* os_dep.c (GC_linux_stack_base): Remove a duplicate validation of the
length of "stat" file; use signed int type for "i", "buf_offset" and
"len" local variables (since read() may return -1).

12 years ago2011-03-20 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 20 Mar 2011 10:31:14 +0000 (10:31 +0000)]
2011-03-20  Ivan Maidanski  <ivmai@mail.ru>

* blacklst.c (GC_bl_init_no_interiors): New function (the code
moved from GC_bl_init).
* blacklst.c (GC_bl_init): Invoke GC_bl_init_no_interiors unless
GC_all_interior_pointers mode; remove unnecessarily parameter cast
for GC_scratch_alloc call.
* include/private/gc_priv.h (GC_bl_init): Move the function
declaration to misc.c file.
* misc.c (GC_bl_init_no_interiors): Add a prototype.
* misc.c (GC_set_all_interior_pointers): Allow values other than 0
and 1; allow altering GC_set_all_interior_pointers value even
after GC initialization.
* obj_map.c (GC_initialize_offsets): Clear GC_valid_offsets and
GC_modws_valid_offsets if GC_all_interior_pointers is off.
* misc.c (GC_init): Don't call GC_initialize_offsets() unless
GC_all_interior_pointers mode.

12 years ago2011-03-20 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 20 Mar 2011 09:08:55 +0000 (09:08 +0000)]
2011-03-20  Ivan Maidanski  <ivmai@mail.ru>

* alloc.c (GC_finish_collection): Remove redundant brackets;
adjust code indentation.
* blacklst.c (GC_add_to_black_list_normal): Simplify expression
(to improve code readability).
* blacklst.c (GC_is_black_listed): Join nested "if" (into a single
conditional expression); initialize "nblocks" just before the loop
beginning.
* misc.c (GC_init): Don't compute initial_heap_sz if GC is already
initialized.
* include/private/gc_priv.h (GC_initialize_offsets): Move the
function declaration to misc.c file.
* obj_map.c (GC_initialize_offsets): Remove offsets_initialized
static variable since the function is called only once.
* tests/middle.c: Include "gc.h" instead of <gc.h>; expand all
tabs to spaces; adjust code indentation; replace the K&R-style
function definition with the ANSI C one.
* tests/smash_test.c: Ditto.
* tests/middle.c (main): Use setter for GC_all_interior_pointers;
adjust printf format specifier (and cast the value passed to).

12 years ago2011-03-15 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 15 Mar 2011 16:06:57 +0000 (16:06 +0000)]
2011-03-15  Ivan Maidanski  <ivmai@mail.ru>

* doc/README.macros (SMALL_CONFIG, LARGE_CONFIG): Refine the
documentation.
* include/private/gc_hdrs.h (LOG_BOTTOM_SZ): Ignore SMALL_CONFIG
if LARGE_CONFIG is defined.
* include/private/gc_priv.h (CPP_LOG_HBLKSIZE): Ditto.

12 years ago2011-03-15 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 15 Mar 2011 13:09:15 +0000 (13:09 +0000)]
2011-03-15  Ivan Maidanski  <ivmai@mail.ru>

* alloc.c (GC_finish_collection): Replace "#else #ifdef" with
"#elif".
* include/private/gc_priv.h (CPP_LOG_HBLKSIZE, LOG_PHT_ENTRIES,
MAX_ROOT_SETS, MAX_HEAP_SECTS): Ditto.
* alloc.c (GC_expand_hp_inner): Check for GC_collect_at_heapsize
overflow even if not LARGE_CONFIG.
* dbg_mlc.c (GC_check_heap_proc): Check "oh" size even if
SMALL_CONFIG.
* finalize.c (GC_print_finalization_stats): Fix "#endif" comment.
* new_hblk.c (GC_build_fl_clear2, GC_build_fl_clear4, GC_build_fl2,
GC_build_fl4): Reformat the comment; adjust code indentation.
* new_hblk.c (GC_build_fl): Fix indentation.
* include/private/gc_hdrs.h: Ditto.
* doc/README.environment (GC_LOG_FILE, GC_PRINT_VERBOSE_STATS,
GC_FULL_FREQUENCY): Refine the documentation.

12 years ago2011-03-13 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 13 Mar 2011 19:53:03 +0000 (19:53 +0000)]
2011-03-13  Ivan Maidanski  <ivmai@mail.ru>

* extra/msvc_dbg.c: Test _MSC_VER macro; include "gc.h" (for
GC_word); reformat the code; expand all tabs to spaces.
* extra/msvc_dbg.c (ULONG_PTR): Replace with GC_ULONG_PTR; define
as word.

12 years ago2011-03-13 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 13 Mar 2011 19:37:24 +0000 (19:37 +0000)]
2011-03-13  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_get_back_ptr_info, GC_print_obj,
GC_print_smashed_obj, GC_debug_free_inner): Add a code for a
LINT-like tool to instruct it that the function is invoked only
with valid parameters (otherwise a SEGV is ok); recognize LINT2
new macro.
* misc.c (GC_abort): Instruct a LINT-like tool that the function
never returns in fact.
* os_dep.c (GC_linux_stack_base): Check for read buffer overflow;
close the file immediately after read; use STRTOULL() instead of
decoding the address number manually.
* include/private/gc_priv.h (EXPECT): Don't specify outcome for a
LINT-like tool.
* include/private/gc_priv.h (GC_all_interior_pointers): Instruct a
LINT-like tool that the value is restricted to zero and one only
(required since the variable is global and its value is used as a
part of array index expression is some places).

12 years ago2011-03-13 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 13 Mar 2011 13:08:16 +0000 (13:08 +0000)]
2011-03-13  Ivan Maidanski  <ivmai@mail.ru>

* dbg_mlc.c (GC_make_closure): Fix SEGV in case GC_malloc returns
NULL.
* dbg_mlc.c (GC_debug_register_finalizer,
GC_debug_register_finalizer_no_order,
GC_debug_register_finalizer_unreachable,
GC_debug_register_finalizer_ignore_self): Handle out of memory
case properly (similar to GC_register_finalizer_inner).
* headers.c (GC_install_header): Handle the case when alloc_hdr()
returns NULL.
* os_dep.c (GC_get_maps_len): Defend against missing "maps" file.
* pthread_support.c (GC_mark_thread): Place a dummy return
statement (which uses "id" argument) before the actual use of "id"
as an array index (to suppress a warning produced by some static
code analysis tools).
* win32_threads.c (GC_mark_thread): Ditto.
* pthread_support.c (GC_thr_init): Abort (with the appropriate
message) if out of memory.

12 years ago2011-03-13 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 13 Mar 2011 12:28:29 +0000 (12:28 +0000)]
2011-03-13  Ivan Maidanski  <ivmai@mail.ru>

* finalize.c (GC_register_finalizer_inner): Fix a typo in a
comment.
*include/private/gcconfig.h (STACKBOTTOM): Ditto.
* gcj_mlc.c (GC_core_gcj_malloc): Replace 0/1 with TRUE/FALSE in
EXPECT (the 2nd argument).
* malloc.c (GC_core_malloc_atomic, GC_core_malloc, GC_free):
Ditto.
* mark.c (GC_mark_and_push, GC_mark_and_push_stack): Ditto.
* thread_local_alloc.c (GC_malloc, GC_malloc_atomic): Ditto.
* include/private/gc_hdrs.h (HC_GET_HDR): Ditto.
* include/private/gc_priv.h (SMALL_OBJ): Ditto.
* include/private/specific.h (getspecific): Ditto.
* pthread_support.c (LOCK_STATS): Add a comment.

12 years ago2011-03-08 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 8 Mar 2011 08:45:31 +0000 (08:45 +0000)]
2011-03-08  Ivan Maidanski  <ivmai@mail.ru>

* include/gc_pthread_redirects.h (GC_NO_DLOPEN,
GC_NO_PTHREAD_SIGMASK, GC_PTHREAD_CREATE_CONST,
GC_PTHREAD_EXIT_ATTRIBUTE, GC_NO_PTHREAD_CANCEL): Move the
definition to gc_config_macros.

12 years ago2011-03-08 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 8 Mar 2011 08:13:24 +0000 (08:13 +0000)]
2011-03-08  Ivan Maidanski  <ivmai@mail.ru>

* pthread_support.c (pthread_cancel, GC_pthread_cancel_t,
GC_pthread_cancel): Test GC_NO_PTHREAD_CANCEL (instead of NACL and
GC_PTHREAD_EXIT_ATTRIBUTE).
* include/gc_pthread_redirects.h (GC_pthread_cancel,
pthread_cancel): Ditto.
* pthread_support.c (GC_pthread_create, GC_pthread_sigmask,
GC_pthread_join, GC_pthread_detach, GC_pthread_cancel): Realign
code.
* include/gc_pthread_redirects.h (GC_PTHREAD_EXIT_ATTRIBUTE):
Define as empty for NaCl.
* include/gc_pthread_redirects.h (GC_NO_PTHREAD_CANCEL): New macro
defined.

12 years ago2011-03-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Mon, 7 Mar 2011 21:43:02 +0000 (21:43 +0000)]
2011-03-07  Ivan Maidanski  <ivmai@mail.ru>

* dyn_load.c (GC_init_dyld): Do not invoke
_dyld_bind_fully_image_containing_address() if GC_no_dls (as it is
not required to register the main data segment in that case).
* include/gc.h (GC_no_dls): Adjust the comment.

12 years ago2011-03-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Mon, 7 Mar 2011 17:36:19 +0000 (17:36 +0000)]
2011-03-07  Ivan Maidanski  <ivmai@mail.ru>

* dyn_load.c (GC_MUST_RESTORE_REDEFINED_DLOPEN): Test
GC_NO_DLOPEN.
* gc_dlopen.c: Ditto.
* include/gc_pthread_redirects.h (GC_dlopen, dlopen): Ditto.
* gc_dlopen.c: Don't include dlfcn.h (as it is included in
gc_pthread_redirects.h).
* pthread_support.c (pthread_sigmask, GC_pthread_sigmask_t,
GC_pthread_sigmask): Test GC_NO_PTHREAD_SIGMASK (instead of
GC_DARWIN_THREADS, GC_OPENBSD_THREADS and NACL).
* include/gc_pthread_redirects.h (GC_pthread_sigmask,
pthread_sigmask): Ditto.
* win32_threads.c (pthread_sigmask, GC_pthread_sigmask): Test
GC_NO_PTHREAD_SIGMASK (instead of GC_WIN32_PTHREADS); reformat the
comment.
* pthread_support.c (pthread_create, GC_pthread_create_t,
GC_pthread_create): Rename GC_PTHREAD_CONST to
GC_PTHREAD_CREATE_CONST.
* win32_threads.c (GC_pthread_create): Ditto.
* include/gc_pthread_redirects.h: Ditto.
* include/gc_pthread_redirects.h (GC_NO_DLOPEN,
GC_NO_PTHREAD_SIGMASK): New macro defined.
* include/gc_pthread_redirects.h (GC_PTHREAD_CREATE_CONST): Set to
empty for NaCl.
* include/gc_pthread_redirects.h (GC_PTHREAD_EXIT_ATTRIBUTE): Do
not define for Android (as CANCEL_SAFE is not defined).

12 years ago2011-03-07 Ivan Maidanski
ivmai [Mon, 7 Mar 2011 08:49:05 +0000 (08:49 +0000)]
2011-03-07  Ivan Maidanski

* include/gc.h (GC_ADD_CALLER, GC_RETURN_ADDR,
GC_HAVE_BUILTIN_BACKTRACE, GC_CAN_SAVE_CALL_STACKS): Move
definition to gc_config_macros.h file.
* include/gc_config_macros.h: Check the file is included from gc.h
file.
* include/gc_version.h: Ditto.
* include/gc_config_macros.h: Reformat comments.
* include/gc_version.h: Reformat code.

12 years ago2011-02-20 Ivan Maidanski <ivmai@mail.ru> (mostly really Elijah Taylor)
ivmai [Sun, 20 Feb 2011 10:54:32 +0000 (10:54 +0000)]
2011-02-20  Ivan Maidanski  <ivmai@mail.ru> (mostly really Elijah Taylor)

* gc_dlopen.c: Empty unit for NaCl.
* os_dep.c: Include fcntl.h for NaCl.
* os_dep.c (GC_get_main_stack_base): Ignore
USE_GET_STACKBASE_FOR_MAIN macro for NaCl.
* os_dep.c (GC_get_stack_base): Return GC_UNIMPLEMENTED for NaCl.
* os_dep.c (GC_remap): Use mmap (instead of mprotect) for NaCl.
* pthread_start.c (GC_inner_start_routine): Don't invoke
pthread_cleanup_push/pop for NaCl.
* pthread_stop_world.c (GC_nacl_num_gc_threads,
GC_nacl_thread_idx, GC_nacl_park_threads_now,
GC_nacl_thread_parker, GC_nacl_gc_thread_self,
GC_nacl_thread_parked, GC_nacl_thread_used,
GC_nacl_thread_parking_inited, GC_nacl_thread_alloc_lock): New
variable (fo NaCl only).
* pthread_stop_world.c (GC_suspend_handler): Reformat the code.
* pthread_stop_world.c (GC_remove_allowed_signals,
suspend_handler_mask, GC_stop_count, GC_world_is_stopped,
GC_retry_signals, SIG_THR_RESTART, GC_suspend_ack_sem,
GC_restart_ack_sem, GC_suspend_handler_inner, GC_suspend_handler,
GC_restart_handler): Don't define for NaCl.
* pthread_support.c (GC_get_nprocs): Ditto.
* include/private/gc_priv.h (SIG_SUSPEND): Ditto.
* include/private/gcconfig.h (LINUX): Ditto.
* pthread_stop_world.c (GC_push_all_stacks): Push register storage
for NaCl.
* pthread_stop_world.c (GC_suspend_all, GC_stop_world,
GC_start_world): Implement for NaCl.
* pthread_stop_world.c (GC_stop_world): Don't define unused "i"
local variable for OpenBSD (and NaCl).
* pthread_stop_world.c (NACL_STORE_REGS): New macro definition for
NaCl.
* pthread_stop_world.c (nacl_pre_syscall_hook,
__nacl_suspend_thread_if_needed, nacl_post_syscall_hook,
GC_nacl_initialize_gc_thread, GC_nacl_shutdown_gc_thread): New
function (for NaCl only).
* pthread_stop_world.c (GC_stop_init): Empty for NaCl.
* pthread_support.c (pthread_cancel, pthread_sigmask): Don't
redirect for NaCl.
* include/gc_pthread_redirects.h (pthread_cancel,
pthread_sigmask): Ditto.
* pthread_support.c (GC_nacl_initialize_gc_thread,
GC_nacl_shutdown_gc_thread): New internal prototype (NaCl only).
* pthread_support.c (GC_new_thread, GC_delete_thread): Initialize
and shutdown thread for NaCl.
* pthread_support.c (GC_thr_init): Call sysconf for NaCl.
* pthread_support.c (GC_pthread_exit): Call GC_thread_exit_proc
for NaCl.
* include/gc.h: Don't include features.h for NaCl.
* include/gc_pthread_redirects.h (GC_PTHREAD_CONST): New macro.
* include/gc_pthread_redirects.h (GC_pthread_create): Use
GC_PTHREAD_CONST instead of const.
* win32_threads.c (GC_pthread_create): Ditto.
* pthread_support.c (GC_pthread_create_t, GC_pthread_create,
pthread_create): Ditto.
* include/private/gcconfig.h (NACL): Recognize NaCl.
* include/private/gcconfig.h (GC_LINUX_THREADS): Valid for NaCl.
* include/private/pthread_stop_world.h (thread_stop_info): Add
reg_storage member; define NACL_GC_REG_STORAGE_SIZE macro (for
NaCl only).
* include/private/pthread_support.h (GC_nacl_gc_thread_self):
Declare internal variable (for NaCl only).

12 years ago2011-02-19 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 19 Feb 2011 10:45:00 +0000 (10:45 +0000)]
2011-02-19  Ivan Maidanski  <ivmai@mail.ru>

* aclocal.m4: Regenerate (by autoreconf -vif using autoconf-2.68,
automake-1.11.1 and libtool-2.4).
* configure: Ditto.
* ltmain.sh: Ditto.
* makefile.in: Ditto.
* m4/libtool.m4: Ditto.
* m4/ltversion.m4: Ditto.
* mach_dep.c (GC_with_callee_saves_pushed): Fix FE_ALL_EXCEPT
macro.

12 years ago2011-02-13 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 13 Feb 2011 18:44:37 +0000 (18:44 +0000)]
2011-02-13  Ivan Maidanski  <ivmai@mail.ru>

* mark.c (GC_mark_some): Prefix and suffix "asm" and "volatile"
keywords with double underscore.
* os_dep.c (GC_unix_get_mem): Reformat the code.
* os_dep.c (catch_exception_raise, catch_exception_raise_state,
catch_exception_raise_state_identity): Add GC_API_OSCALL to
function definition.
* os_dep.c (catch_exception_raise_state,
catch_exception_raise_state_identity): Move definition to be
before GC_ports.
* os_dep.c (catch_exception_raise): Declare to have the symbol
defined before GC_ports.
* os_dep.c (GC_ports): Store references to catch_exception_raise,
catch_exception_raise_state, catch_exception_raise_state_identity
(to prevent stripping these symbols as dead).
* os_dep.c (catch_exception_raise, catch_exception_raise_state,
catch_exception_raise_state_identity): Mark these symbols as
"referenced dynamically" via an assembler directive (unless
NO_DESC_CATCH_EXCEPTION_RAISE).
* include/private/gc_priv.h (GC_API_OSCALL): New macro (defined
similar to GC_API but as if GC_DLL is always defined).

12 years ago2011-02-10 Ivan Maidanski <ivmai@mail.ru> (with input from Dimitry Andric)
ivmai [Sat, 12 Feb 2011 18:28:44 +0000 (18:28 +0000)]
2011-02-10  Ivan Maidanski  <ivmai@mail.ru> (with input from Dimitry Andric)

* os_dep.c: Don't include signal.h for GC_write_fault_handler on
Win32.
* os_dep.c (SIG_OK): Don't return true unless SIGSEGV or SIGBUS on
FreeBSD.
* os_dep.c (CODE_OK): Use SEGV_ACCERR on FreeBSD (define
SEGV_ACCERR for older FreeBSD releases).
* os_dep.c (SIG_OK, CODE_OK, GC_write_fault_handler): Reformat the
code.

12 years ago2011-02-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 12 Feb 2011 15:06:57 +0000 (15:06 +0000)]
2011-02-10  Ivan Maidanski  <ivmai@mail.ru>

* dyn_load.c (GC_register_map_entries,
GC_register_dynamic_libraries_dl_iterate_phdr): Calculate
DATASTART only once if DATASTART_IS_FUNC.
* dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr):
Calculate DATAEND only once if DATAEND_IS_FUNC.
* dyn_load.c: Add comment to some endif; realign some code.
* dyn_load.c (GC_init_dyld): Don't use
_dyld_bind_fully_image_containing_address if
NO_DYLD_BIND_FULLY_IMAGE defined; add FIXME.
* include/private/gcconfig.h (GC_data_start, GC_find_limit):
Declare if used by DATASTART/DATAEND, respectively.
* include/private/gcconfig.h (DATASTART_IS_FUNC, DATAEND_IS_FUNC):
Define if DATASTART/DATAEND is a function, respectively.
* include/private/gcconfig.h (GETPAGESIZE, NO_PTHREAD_TRYLOCK,
NO_DYLD_BIND_FULLY_IMAGE): Define for Darwin/arm as well; include
unistd.h.

12 years ago2011-02-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 12 Feb 2011 15:04:24 +0000 (15:04 +0000)]
2011-02-10  Ivan Maidanski  <ivmai@mail.ru>

* os_dep.c (GC_setpagesize, GC_task_self, PROTECT, UNPROTECT):
Reorder to remove redundant ifdef for Win32.
* os_dep.c: Add comment to some endif.
* os_dep.c: Include pthread.h (for Linux even if single-threaded)
if USE_GET_STACKBASE_FOR_MAIN; also include it for Darwin.
* os_dep.c (STACKBOTTOM): Redefine for Darwin (unless prohibited
for some reason).
* os_dep.c (GC_get_main_stack_base): Allow
USE_GET_STACKBASE_FOR_MAIN for Linux even if single-threaded; add
assertion for the returned result.
* os_dep.c (GC_get_stack_base): Define for Darwin if
multi-threaded.
* os_dep.c (GC_page_was_dirty): Reformat the code.
* os_dep.c: Reformat some comments.
* os_dep.c (SIG_OK, CODE_OK): Add comment (for FreeBSD).
* os_dep.c (ID_STOP, ID_RESUME): Define only if threads.
* os_dep.c (catch_exception_raise): Remove redundant parentheses;
refine the documentation.

12 years ago2011-02-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 12 Feb 2011 15:02:35 +0000 (15:02 +0000)]
2011-02-10  Ivan Maidanski  <ivmai@mail.ru>

* NT_MAKEFILE: Define _CRT_SECURE_NO_DEPRECATE for C++ files as
well.
* NT_STATIC_THREADS_MAKEFILE: Ditto.
* doc/README.macros (USE_GET_STACKBASE_FOR_MAIN): Refine.
* include/gc.h (GC_INIT): Document.
* include/private/gc_priv.h (GC_MACH_HEADER, GC_MACH_SECTION,
GC_GETSECTBYNAME): Define depending only on the word size (i.e.,
define these macros also for ARM).
* tests/test.c (check_heap_stats): Print main thread stack bottom
as well (only if verbose mode is on).

12 years ago2011-02-09 Ivan Maidanski <ivmai@mail.ru> (mostly Jean-Claude Beaudoin)
ivmai [Sat, 12 Feb 2011 14:43:27 +0000 (14:43 +0000)]
2011-02-09  Ivan Maidanski  <ivmai@mail.ru> (mostly Jean-Claude Beaudoin)

* mach_dep.c (GC_with_callee_saves_pushed): Fix and improve code
introduced by the previous patch (if GETCONTEXT_FPU_EXCMASK_BUG
and X86_64).

12 years ago2011-01-22 Ivan Maidanski <ivmai@mail.ru> (mostly Jean-Claude Beaudoin)
ivmai [Mon, 24 Jan 2011 21:43:30 +0000 (21:43 +0000)]
2011-01-22  Ivan Maidanski  <ivmai@mail.ru> (mostly Jean-Claude Beaudoin)

* darwin_stop_world.c (GC_FindTopOfStack): Prefix and suffix
"volatile" keyword with double underscore.
* mach_dep.c (GETCONTEXT_FPU_EXCMASK_BUG): Recognize new macro and
include fenv.h if defined (unless NO_GETCONTEXT or HAVE_PUSH_REGS).
* mach_dep.c (GC_with_callee_saves_pushed): Restore FPU exception
mask corrupted by getcontext if GETCONTEXT_FPU_EXCMASK_BUG.
* include/private/gcconfig.h (GETCONTEXT_FPU_EXCMASK_BUG): Define
for Linux/amd64 (since its GLibc getcontext currently has the bug).

12 years ago2011-01-17 Ivan Maidanski <ivmai@mail.ru>
ivmai [Mon, 17 Jan 2011 20:34:11 +0000 (20:34 +0000)]
2011-01-17  Ivan Maidanski  <ivmai@mail.ru>

* allchblk.c (GC_use_entire_heap): Change type to int (as declared
in gc.h); set the default value depending on new GC_USE_ENTIRE_HEAP
macro.
* misc.c (GC_init): Test GC_USE_ENTIRE_HEAP environment variable to
alter the default value of GC_use_entire_heap.
* doc/README.environment (GC_USE_ENTIRE_HEAP): Document.
* doc/README.macros (GC_USE_ENTIRE_HEAP): Ditto.

12 years ago2011-01-12 Ivan Maidanski <ivmai@mail.ru>
ivmai [Wed, 12 Jan 2011 22:20:07 +0000 (22:20 +0000)]
2011-01-12  Ivan Maidanski  <ivmai@mail.ru>

* include/private/gcconfig.h (PARALLEL_MARK): Do not make it cause
MPROTECT_VDB undefining.

12 years ago2011-01-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 7 Jan 2011 17:15:12 +0000 (17:15 +0000)]
2011-01-07  Ivan Maidanski  <ivmai@mail.ru>

* gc_dlopen.c: Reformat the comments and adjust code indentation.
* include/private/gcconfig.h (DYNAMIC_LOADING): Fix filename in
the comment.

12 years ago2011-01-07 Ivan Maidanski <ivmai@mail.ru> gc7_2alpha5-20110107
ivmai [Fri, 7 Jan 2011 17:10:01 +0000 (17:10 +0000)]
2011-01-07  Ivan Maidanski  <ivmai@mail.ru>

* gc_dlopen.c: Reformat the comments and adjust code indentation.

12 years ago2011-01-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 7 Jan 2011 10:25:31 +0000 (10:25 +0000)]
2011-01-07  Ivan Maidanski  <ivmai@mail.ru>

* include/private/gc_priv.h (THREAD_FLD, MAX_HEAP_SECTS,
_GC_arrays, GC_push_all_stack_sections, PRINT_BLACK_LIST,
GC_add_to_black_list_stack, GC_ASSERT, SIG_SUSPEND,
NEED_FIND_LIMIT): Reformat the code and comments for.
* include/private/gc_priv.h (_GC_arrays): Move the conditional
macro definitions (shortcuts for GC_arrays members) into the
structure body.

12 years ago2011-01-07 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 7 Jan 2011 09:51:40 +0000 (09:51 +0000)]
2011-01-07  Ivan Maidanski  <ivmai@mail.ru>

* .cvsignore: Add more auto-generated files.
* include/private/.cvsignore: Ditto.
* darwin_stop_world.c (GC_mach_handler_thread,
GC_use_mach_handler_thread,
GC_darwin_register_mach_handler_thread): Define only if
MPROTECT_VDB.
* darwin_stop_world.c (GC_suspend_thread_list): Use
GC_mach_handler_thread and GC_use_mach_handler_thread only if
MPROTECT_VDB.
* darwin_stop_world.c (GC_stop_world): Reset GC_mach_threads_count
only if defined (i.e. unless GC_NO_THREADS_DISCOVERY).
* misc.c (GC_init): Fix comment for GWW_VDB.
* os_dep.c (GC_mprotect_state_t): Reformat the code.
* os_dep.c (DARWIN_EXC_STATE, DARWIN_EXC_STATE_COUNT,
DARWIN_EXC_STATE_T, DARWIN_EXC_STATE_DAR): New macros.
* os_dep.c (catch_exception_raise): Use DARWIN_EXC_STATE,
DARWIN_EXC_STATE_COUNT, DARWIN_EXC_STATE_T, DARWIN_EXC_STATE_DAR;
reformat the comment.
* pthread_support.c (GC_thr_init): Define "dummy" local variable
only unless GC_DARWIN_THREADS; reformat the code.
* include/private/gcconfig.h (MPROTECT_VDB): Define for Darwin
even in the single-threaded mode; define for iPhone/iPad.
* include/private/gcconfig.h (IA64): Remove unnecessary "ifdef"
around "undef".
* include/private/gcconfig.h (HEURISTIC1): Remove unused for
Cygwin.
* include/private/gcconfig.h (STACKBOTTOM): Use fixed address for
Darwin/arm (instead of HEURISTIC1).
* include/private/gcconfig.h (GET_MEM): Reformat the code.

12 years ago2011-01-05 Ivan Maidanski <ivmai@mail.ru>
ivmai [Wed, 5 Jan 2011 10:03:44 +0000 (10:03 +0000)]
2011-01-05  Ivan Maidanski  <ivmai@mail.ru>

* misc.c (GC_write): Replace multiple "ifdef/endif" with "elif"
(for ECOS and NOSYS).
* os_dep.c (GC_get_main_stack_base): Ditto.
* os_dep.c (GC_get_main_stack_base): Check
USE_GET_STACKBASE_FOR_MAIN macro before checking STACKBOTTOM one;
remove "dummy" variable (use result one instead); reformat the
code.
* doc/README.macros (SN_TARGET_PS3): Document.
* extra/threadlibs.c (main): Don't output "-lpthread" (and "-ldl")
for Android.
* include/private/pthread_support.h: Fix comment for "endif".

12 years ago2010-12-26 Ivan Maidanski <ivmai@mail.ru> (mostly really Miguel de Icaza)
ivmai [Sun, 26 Dec 2010 17:12:55 +0000 (17:12 +0000)]
2010-12-26  Ivan Maidanski  <ivmai@mail.ru> (mostly really Miguel de Icaza)

* misc.c (GC_allocate_ml): Define global variable if SN_TARGET_PS3.
* misc.c (GC_init): Initialize GC_allocate_ml if SN_TARGET_PS3.
* os_dep.c (SIGSEGV): Define to dummy zero if SN_TARGET_PS3.
* os_dep.c (GC_unix_mmap_get_mem): Don't define if SN_TARGET_PS3.
* os_dep.c (GC_default_push_other_roots,
GC_push_thread_structures): Define for SN_TARGET_PS3.
* include/private/gc_locks.h (GC_allocate_ml, LOCK, UNLOCK): Define
for SN_TARGET_PS3.
* include/private/gcconfig.h (SN_TARGET_PS3): Recognize new macro
(Sony PS/3 target).
* include/private/gcconfig.h (THREADS): Define unconditionally if
SN_TARGET_PS3.
* include/private/gcconfig.h (GET_MEM): Define for SN_TARGET_PS3.

12 years ago2010-12-26 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 26 Dec 2010 15:50:53 +0000 (15:50 +0000)]
2010-12-26  Ivan Maidanski  <ivmai@mail.ru>

* alloc.c (GC_collect_or_expand): Replace NIL with NULL in message.
* dbg_mlc.c (GC_debug_malloc, GC_debug_malloc_ignore_off_page,
GC_debug_malloc_atomic_ignore_off_page,
GC_debug_generic_malloc_inner,
GC_generic_malloc_inner_ignore_off_page, GC_debug_malloc_stubborn,
GC_debug_malloc_atomic, GC_debug_malloc_uncollectable,
GC_debug_malloc_atomic_uncollectable): Ditto.
* gcj_mlc.c (GC_debug_gcj_malloc): Ditto.
* dbg_mlc.c (GC_check_annotated_obj): Replace NIL with NULL in a
comment.
* dyn_load.c (GC_FirstDLOpenedLinkMap): Ditto.
* mark_rts.c (GC_roots_present): Ditto.
* doc/README: Ditto.
* include/private/gc_hdrs.h (IS_FORWARDING_ADDR_OR_NIL): Ditto.
* include/private/gc_priv.h (_GC_arrays): Ditto.

12 years ago2010-12-26 Ivan Maidanski <ivmai@mail.ru> (mostly really Geoff Norton
ivmai [Sun, 26 Dec 2010 14:20:38 +0000 (14:20 +0000)]
2010-12-26  Ivan Maidanski  <ivmai@mail.ru> (mostly really Geoff Norton
                                             and Jonathan Pryor)

* configure.ac: Use AC_CHECK_LIB() to check for pthread instead of
just blindly linking to -lpthread, as Android includes pthread
support within libc and does not provide a separate libpthread.
* dyn_load.c (GC_register_dynamic_libraries): Skip current link map
entry if l_addr is NULL (Android/bionic only).
* pthread_stop_world.c (android_thread_kill): New internal function
(Android only).
* pthread_stop_world.c (GC_suspend_all, GC_start_world): Call
android_thread_kill (based on tkill) instead of pthread_kill on
Android (since pthread_kill cannot be used safely on the platform).
* pthread_support.c (GC_new_thread): Store thread Id (obtained from
gettid) for use by android_thread_kill (Android only).
* include/private/pthread_support.h (GC_Thread_Rep): Add kernel_id
structure member (Android only).
* include/private/gcconfig.h: Recognize __x86_64 macro as a synonym
of __x86_64__ (Darwin); define __environ macro (Android on M68K).
* configure: Regenerate.

12 years ago2010-12-02 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 2 Dec 2010 07:44:04 +0000 (07:44 +0000)]
2010-12-02  Ivan Maidanski  <ivmai@mail.ru>

* allchblk.c (GC_freehblk): Print extended error message (done via
GC_printf() before aborting with a short message) only if
GC_print_stats.
* dyn_load.c (GC_register_dynamic_libraries): Ditto.
* os_dep.c (GC_get_maps, GC_register_data_segments, GC_remap,
PROTECT, GC_write_fault_handler, GC_mprotect_thread): Ditto.
* pthread_stop_world.c (GC_start_world): Ditto.
* win32_threads.c (GC_register_my_thread_inner): Ditto.
* os_dep.c (GC_get_main_stack_base, GC_register_data_segments,
GC_dirty_init): Remove redundant print of an error message before
aborting with the same message.
* os_dep.c (GC_register_data_segments): Remove format specifier
from the string passed to GC_err_puts(); use ABORT instead of EXIT
(if invalid executable type).
* os_dep.c (GC_remap): Adjust printf format specifier (for long
type).
* os_dep.c (GC_dirty_init): Print a message about SIG_IGN detected
(for SIGSEGV/BUS) only if GC_print_stats.
* os_dep.c (catch_exception_raise): Join 2 adjucent GC_err_printf
calls.

12 years ago2010-11-25 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 25 Nov 2010 21:38:04 +0000 (21:38 +0000)]
2010-11-25  Ivan Maidanski  <ivmai@mail.ru>

* tests/test.c (main): Print the relevant message if GWW_VDB.
* include/private/gcconfig.h: Don't define MPROTECT_VDB for Win32
on x64 if compiled by GCC.

12 years ago2010-11-04 Ivan Maidanski <ivmai@mail.ru>
ivmai [Thu, 4 Nov 2010 17:27:33 +0000 (17:27 +0000)]
2010-11-04  Ivan Maidanski  <ivmai@mail.ru>

* tests/staticrootstest.c: Include string.h for memset() prototype.
* tests/thread_leak_test.c (main): Fix printf() format specifiers.

12 years ago2010-10-22 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 22 Oct 2010 05:47:47 +0000 (05:47 +0000)]
2010-10-22  Ivan Maidanski <ivmai@mail.ru>

* CMakeLists.txt: Check enable_parallel_mark on Darwin.
* configure.ac: Ditto.
* darwin_stop_world.c (DARWIN_SUSPEND_GC_THREADS,
DARWIN_QUERY_TASK_THREADS): Rename to GC_NO_THREADS_DISCOVERY and
GC_DISCOVER_TASK_THREADS, respectively.
* os_dep.c (DARWIN_SUSPEND_GC_THREADS): Ditto.
* pthread_support.c (DARWIN_SUSPEND_GC_THREADS): Ditto.
* darwin_stop_world.c (DARWIN_QUERY_TASK_THREADS): Don't define
(and remove FIXME).
* darwin_stop_world.c (GC_use_threads_discovery): Add GC_API;
comment; remove FIXME.
* win32_threads.c (GC_NO_DLLMAIN): Rename to
GC_NO_THREADS_DISCOVERY.
* tests/test.c (GC_NO_DLLMAIN): Ditto.
* doc/README.macros (GC_NO_DLLMAIN): Ditto.
* doc/README.win32 (GC_NO_DLLMAIN): Ditto.
* doc/README.macros (GC_NO_THREADS_DISCOVERY): Update the comment.
* win32_threads.c (GC_win32_dll_threads): Define as macro to true
if GC_DISCOVER_TASK_THREADS (and not GC_NO_THREADS_DISCOVERY);
update the comment.
* win32_threads.c (GC_use_DllMain): Rename to
GC_use_threads_discovery; do not set GC_win32_dll_threads if
GC_DISCOVER_TASK_THREADS.
* win32_threads.c (GC_started_thread_while_stopped,
GC_lookup_thread_inner, UNPROTECT_THREAD, GC_lookup_pthread,
GC_thr_init, GC_pthread_create, DllMain): Rewrite some expressions
which use GC_win32_dll_threads to minimize the possibility of
an "unreachable code" compiler warning when GC_win32_dll_threads
is defined as a macro.
* win32_threads.c (GC_unregister_my_thread): Don't call
GC_delete_thread() if GC_win32_dll_threads and THREAD_LOCAL_ALLOC
(since can't happen); use "t" local variable only if not
GC_win32_dll_threads.
* win32_threads.c (GC_register_my_thread_inner): Reformat the
comment.
* doc/README.macros (GC_DISCOVER_TASK_THREADS): Document.
* include/gc.h (GC_use_DllMain): Rename to
GC_use_threads_discovery but keep old name as a macro definition.
* include/gc.h (GC_use_threads_discovery): Declare also for
Darwin; update the comment.
* tests/test.c (main): Call GC_use_threads_discovery for Darwin
(to test the mode if possible).
* configure: Regenerate.

12 years ago2010-10-16 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 16 Oct 2010 08:44:59 +0000 (08:44 +0000)]
2010-10-16  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (DARWIN_SUSPEND_GC_THREADS,
DARWIN_QUERY_TASK_THREADS): New macro recognized.
* darwin_stop_world.c (GC_query_task_threads): add STATIC;
initialize to false; define as macro if DARWIN_SUSPEND_GC_THREADS
or DARWIN_QUERY_TASK_THREADS; remove FIXME.
* darwin_stop_world.c (GC_use_threads_discovery): New function
(for setting GC_query_task_threads value).
* darwin_stop_world.c (GC_mach_handler_thread,
GC_use_mach_handler_thread, GC_mach_thread, GC_MAX_MACH_THREADS,
GC_mach_threads, GC_mach_threads_count, GC_suspend_thread_list,
GC_darwin_register_mach_handler_thread): Define only if not
DARWIN_SUSPEND_GC_THREADS.
* darwin_stop_world.c (GC_stop_world, GC_start_world): Exclude
the code for GC_query_task_threads case from compilation unless
DARWIN_SUSPEND_GC_THREADS.
* os_dep.c (GC_darwin_register_mach_handler_thread): Declared only
if Darwin threads and not DARWIN_SUSPEND_GC_THREADS.
* os_dep.c (GC_mprotect_thread): Call
GC_darwin_register_mach_handler_thread only if THREADS and not
DARWIN_SUSPEND_GC_THREADS.
* pthread_support.c (marker_mach_threads): Don't define if
DARWIN_SUSPEND_GC_THREADS.
* pthread_support.c (GC_mark_thread): Don't fill in
marker_mach_threads if DARWIN_SUSPEND_GC_THREADS.
* include/private/gc_locks.h (GC_need_to_lock): Always declare for
THREADS case.

12 years ago2010-10-15 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 15 Oct 2010 20:14:15 +0000 (20:14 +0000)]
2010-10-15  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_query_task_threads): Don't define to
false for DARWIN_DONT_PARSE_STACK case; unconditionally initialize
the variable to false (for now).
* darwin_stop_world.c (GC_push_all_stacks): Call task_threads()
only if not DARWIN_DONT_PARSE_STACK.
* darwin_stop_world.c (GC_stop_world, GC_start_world): Use the
approach based on task_threads() only if GC_query_task_threads
else use GC_threads table.

12 years ago2010-10-15 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 15 Oct 2010 05:09:05 +0000 (05:09 +0000)]
2010-10-15  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_mach_threads): Remove static qualifier.
* darwin_stop_world.c (GC_stop_init): Remove (as we do not need to
really clear GC_mach_threads[]).
* darwin_stop_world.c (GC_stop_world): Reset GC_mach_threads_count
(instead of calling GC_stop_init).
* include/private/pthread_support.h (GC_stop_init): Remove proto.
* pthread_support.c (GC_stop_init): Add proto (unless Darwin).
* pthread_support.c (GC_thr_init): Don't call GC_stop_init() if
GC_DARWIN_THREADS.

12 years ago2010-10-14 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 15 Oct 2010 04:12:42 +0000 (04:12 +0000)]
2010-10-14  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_stack_range_for): New static function
(move the code from GC_push_all_stacks).
* darwin_stop_world.c (GC_push_all_stacks): Call
GC_stack_range_for(); rename kern_return local variable to
kern_result.
* darwin_stop_world.c (GC_is_mach_marker): Change argument type
from mach_port_t to thread_act_t.
* pthread_support.c (GC_is_mach_marker): Ditto.

12 years ago2010-10-12 Ivan Maidanski <ivmai@mail.ru>
ivmai [Tue, 12 Oct 2010 05:46:27 +0000 (05:46 +0000)]
2010-10-12  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_push_all_stacks): Fix "my_task" local
variable initialization (always call current_task()).
* pthread_support.c (GC_thr_init, GC_register_my_thread_inner):
Don't set thread's stop_info.stack_ptr value for Darwin.

12 years ago2010-10-10 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sun, 10 Oct 2010 17:31:33 +0000 (17:31 +0000)]
2010-10-10  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_push_all_stacks): Rename "r", "me" local
variables to "kern_return" and "my_thread" ones, respectively;
call mach_port_deallocate() unconditionally.
* darwin_stop_world.c (GC_stop_world): Don't call mach_thread_self
if DEBUG_THREADS.

12 years ago2010-10-09 Ivan Maidanski <ivmai@mail.ru>
ivmai [Sat, 9 Oct 2010 06:05:29 +0000 (06:05 +0000)]
2010-10-09  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_mach_thread): Move from
darwin_stop_world.h.
* include/private/darwin_stop_world.h (GC_mach_thread): Remove.
* win32_threads.c (GC_start_world): Define "thread_id" local
variable only if GC_ASSERTIONS; decide whether to resume a thread
based on its "suspended" field value; assert that suspended thread
stack_base is non-zero and the thread is not our one.

12 years ago2010-10-08 Ivan Maidanski <ivmai@mail.ru>
ivmai [Fri, 8 Oct 2010 19:56:26 +0000 (19:56 +0000)]
2010-10-08  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (GC_thread_resume): New inline function
(move code from GC_thread_resume).
* darwin_stop_world.c (GC_start_world): Check result of
task_threads(); call GC_thread_resume().
* os_dep.c (GC_malloc_heap_l, GC_is_malloc_heap_base): Define
only if not CYGWIN32.
* os_dep.c (GC_is_heap_base): Call GC_is_malloc_heap_base() only
if not CYGWIN32.

12 years ago2010-10-06 Ivan Maidanski <ivmai@mail.ru>
ivmai [Wed, 6 Oct 2010 20:09:27 +0000 (20:09 +0000)]
2010-10-06  Ivan Maidanski <ivmai@mail.ru>

* darwin_stop_world.c (FindTopOfStack): Change return type to
ptr_t (from long); make GC_INNER; add GC_ prefix.
* darwin_stop_world.c (GC_push_all_stacks): Add thread_blocked
local variable (initialized from the corresponding GC_thread
field unless GC_query_task_threads); add assertion that our
thread is not blocked; prefix FindTopOfStack with GC_ and remove
no longer needed cast to ptr_t of the result; handle thread
blocked case (and remove FIXME); use GC_push_all_stack_sections
unless GC_query_task_threads (and remove FIXME).
* pthread_support.c (GC_FindTopOfStack): Declare (if needed).
* pthread_support.c (GC_do_blocking_inner): Call
GC_save_regs_in_stack (if needed) before acquiring the lock.
* win32_threads.c (GC_do_blocking_inner): Ditto.
* pthread_support.c (GC_do_blocking_inner): Set/clear topOfStack
field of GC_thread (Darwin only).
* include/private/pthread_support.h (GC_thread): Add topOfStack
field for Darwin (unless DARWIN_DONT_PARSE_STACK).