Upgrade Boehm GC to 7.2alpha4.
[cacao.git] / src / mm / boehm-gc / ChangeLog
index 091408d75cb5361e2b412028e6c1911c7d1cbb51..faf6817b91361f5f55f62c3731d7ada13e40325b 100644 (file)
+[7.2alpha4]
+
+2009-12-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_version.h, configure.ac, doc/README: Change to
+       version 7.2alpha4.
+       * configure: Regenerate.
+
+2009-11-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac (AC_CONFIG_COMMANDS): Quote srcdir value.
+       * configure: Regenerate.
+
+2009-11-18  Ivan Maidanski <ivmai@mail.ru> (really mostly Zoltan Varga)
+
+       * include/gc.h (GC_get_suspend_signal): New function declaration.
+       * misc.c (GC_get_suspend_signal): New API function (only if
+       THREADS).
+
+2009-11-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (min_bytes_allocd): Multiply GC_free_space_divisor by
+       two if GC_incremental (instead of TRUE_INCREMENTAL).
+
+2009-11-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * sparc_mach_dep.S (GC_push_regs): Remove the reference.
+
+2009-11-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (SIZE_T, PULONG_PTR): Remove.
+       * os_dep.c (ULONG_PTR): Replace with GC_ULONG_PTR (defined as GC
+       "word"); add the comment.
+       * os_dep.c (GetWriteWatch_type, detect_GetWriteWatch,
+       GC_gww_read_dirty): Prefix ULONG_PTR with "GC_".
+
+2009-11-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (THREAD_TABLE_SZ): Change back to a power-of-two
+       const value (for speed).
+       * win32_threads.c (THREAD_TABLE_INDEX): New macro.
+       * win32_threads.c (GC_new_thread, GC_lookup_thread_inner,
+       GC_delete_gc_thread, GC_delete_thread, GC_lookup_pthread): Use
+       THREAD_TABLE_INDEX instead of THREAD_TABLE_SZ.
+       * win32_threads.c (PTHREAD_MAP_HASH): Rename to PTHREAD_MAP_INDEX.
+
+2009-11-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (THREAD_TABLE_SZ): Make the const value prime.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c: Remove apostrophe char from "#error".
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.macros (GC_DISABLE_INCREMENTAL): Document.
+       * include/private/gcconfig.h (GC_DISABLE_INCREMENTAL): Recognize
+       new macro; implicitly define it if SMALL_CONFIG.
+       * alloc.c (GC_incremental, GC_timeout_stop_func): Check for
+       GC_DISABLE_INCREMENTAL instead of SMALL_CONFIG.
+       * include/private/gc_priv.h (GC_incremental, TRUE_INCREMENTAL,
+       GC_push_conditional): Ditto.
+       * mark.c (GC_push_next_marked_dirty, GC_push_selected,
+       GC_push_conditional, GC_block_was_dirty): Ditto.
+       * misc.c (GC_enable_incremental): Ditto.
+       * misc.c (GC_init): Ditto (for "GC_PAUSE_TIME_TARGET" and
+       "GC_ENABLE_INCREMENTAL" environment variables).
+       * misc.c (GC_enable_incremental): Reformat the code.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (WIN32_LEAN_AND_MEAN): Guard with ifndef.
+       * misc.c (WIN32_LEAN_AND_MEAN): Ditto.
+       * os_dep.c (WIN32_LEAN_AND_MEAN): Ditto.
+       * allchblk.c (GC_allochblk_nth): Fix a minor typo (don't/doesn't)
+       in a comment.
+       * backgraph.c: Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * extra/threadlibs.c (main): Ditto.
+       * pthread_support.c (pthread_join): Ditto.
+       * tests/test.c (main): Ditto.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * mach_dep.c (GC_push_regs): Remove STATIC (just to catch
+       a duplicate symbol definition linker error).
+       * misc.c (GC_clear_stack_inner): Ditto.
+       * sparc_mach_dep.S (GC_push_regs): Comment out the reference.
+       * sparc_mach_dep.S: Remove trailing spaces at EOLn; remove
+       multiple trailing blank lines.
+
+2009-11-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_write_disabled): New variable
+       declaration (only if GC_ASSERTIONS and Win32 threads).
+       * misc.c (GC_write): Add assertion for GC_write_disabled value is
+       not on (only if THREADS).
+       * win32_threads.c (GC_write_disabled): New variable (only if
+       GC_ASSERTIONS and not Cygwin).
+       * win32_threads.c (GC_stop_world): Set and clear GC_write_disabled
+       (while holding GC_write_cs).
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_please_stop): If DllMain-based thread
+       registration is not compiled in then define GC_please_stop as
+       a non-volatile variable for assertion only.
+       * win32_threads.c (GC_stop_world): Set and clear only if defined.
+       * win32_threads.c (GC_stop_world): Add the comment for GC_printf()
+       usage (while holding GC_write_cs).
+       * win32_threads.c (GC_delete_gc_thread): Ditto.
+       * os_dep.c (GC_remove_protection): Ditto.
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_inner_start_routine): Join 3 sequential
+       GC_printf() calls into a single one (for DEBUG_THREADS).
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_total_stacksize): New variable
+       declaration (only if THREADS).
+       * alloc.c (GC_total_stacksize): New variable (only if THREADS).
+       * alloc.c (min_bytes_allocd): Calculate stack_size using
+       GC_stackbottom only in the single-threaded case; otherwise use
+       GC_total_stacksize; print GC_total_stacksize value if
+       DEBUG_THREADS.
+       * darwin_stop_world.c (GC_push_all_stacks): Use "%p" printf type
+       specifier for lo/hi values (instead of "%lx").
+       * darwin_stop_world.c (GC_push_all_stacks): Use
+       GC_push_all_stack_frames() instead of GC_push_all_stack().
+       * darwin_stop_world.c (GC_push_all_stacks): Recalculate
+       GC_total_stacksize value.
+       * pthread_stop_world.c (GC_push_all_stacks): Ditto.
+       * win32_threads.c (GC_push_all_stacks): Ditto.
+       * win32_threads.c (GC_push_stack_for): Pass "me" argument; return
+       stack size; don't check for non-zero value of thread->stack_base.
+       * win32_threads.c (GC_push_all_stacks): Don't call
+       GC_push_stack_for() and don't check for "t->id == me" if
+       thread->stack_base is zero.
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_dump_meminfo): Prefix "%lx" printf type specifier
+       with "0x".
+       * os_dep.c (PROTECT): Ditto.
+       * win32_threads.c (GC_mark_thread_local_free_lists): Cast p->id to
+       int (to match printf type specifier).
+
+2009-11-05  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/test.c (check_heap_stats): Take into account the unmapped
+       memory size when checking for "Unexpected heap growth"; remove
+       FIXME.
+
+2009-11-03  Hans Boehm <Hans.Boehm@hp.com>
+
+       * alloc.c: Revert last change.
+
+2009-11-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h (STACKBOTTOM): Add a presence check
+       for eCos/NOSYS.
+       * misc.c (GC_write): Comment out _Jv_diag_write() call (since no
+       longer defined in GCJ).
+
+2009-11-02  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (brk): Rename to ecos_gc_brk.
+
+2009-11-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (min_bytes_allocd): Use GC_stackbottom value to compute
+       stack_size even if THREADS.
+       * doc/README.macros (DEBUG_THREADS): Document.
+       * pthread_support.c (DEBUG_THREADS): Remove the commented out
+       definition.
+       * win32_threads.c (DEBUG_WIN32_THREADS): Remove duplicate
+       definition.
+       * win32_threads.c: Include errno.h (except for WinCE).
+       * win32_threads.c (GC_win32_start_inner): Copy "start" and "param"
+       to local variables, and free "arg" parameter before "start"
+       invocation.
+       * win32_threads.c (GC_beginthreadex): Set errno to EAGAIN on error
+       (instead of calling SetLastError(ERROR_NOT_ENOUGH_MEMORY)).
+       * win32_threads.c (GC_beginthreadex): Return 0 on error (instead
+       of -1).
+
+2009-10-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * darwin_stop_world.c (GC_darwin_register_mach_handler_thread):
+       Use GC_INNER for the function definition.
+       * include/private/darwin_stop_world.h
+       (GC_darwin_register_mach_handler_thread): Remove the prototype.
+       * include/private/darwin_stop_world.h: Add copyright header.
+       * os_dep.c (GC_darwin_register_mach_handler_thread): Use GC_INNER
+       for the function prototype.
+       * include/private/gc_priv.h (NDEBUG): Explicitly define if
+       NO_DEBUGGING and not GC_ASSERTIONS (before the standard headers
+       inclusion).
+
+2009-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h: Move DebugBreak() workaround (for
+       x86mingw32ce toolchain) to gc_priv.h (after windows.h inclusion).
+
+2009-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_unmap_old, GC_merge_unmapped, GC_allochblk,
+       GC_freehblk): Use GC_INNER for the function definition.
+       * alloc.c (GC_never_stop_func, GC_should_collect,
+       GC_try_to_collect_inner, GC_collect_a_little_inner,
+       GC_set_fl_marks, GC_add_to_our_memory, GC_add_to_heap,
+       GC_expand_hp_inner, GC_collect_or_expand, GC_allocobj): Ditto.
+       * backgraph.c (GC_build_back_graph, GC_traverse_back_graph):
+       Ditto.
+       * blacklst.c (GC_default_print_heap_obj_proc, GC_bl_init,
+       GC_promote_black_lists, GC_unpromote_black_lists,
+       GC_add_to_black_list_normal, GC_add_to_black_list_stack,
+       GC_is_black_listed): Ditto.
+       * darwin_stop_world.c (GC_push_all_stacks, GC_push_all_stacks,
+       GC_stop_init, GC_stop_world, GC_start_world): Ditto.
+       * dbg_mlc.c (GC_has_other_debug_info, GC_store_back_pointer,
+       GC_marked_for_finalization, GC_generate_random_backtrace_no_gc,
+       GC_store_debug_info, GC_start_debugging,
+       GC_debug_generic_malloc_inner,
+       GC_debug_generic_malloc_inner_ignore_off_page,
+       GC_debug_malloc_uncollectable, GC_debug_free_inner): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries,
+       GC_register_main_static_data, GC_init_dyld): Ditto.
+       * finalize.c (GC_push_finalizer_structures, GC_finalize,
+       GC_notify_or_invoke_finalizers, GC_print_finalization_stats):
+       Ditto.
+       * gcj_mlc.c (GC_core_gcj_malloc): Ditto.
+       * headers.c (GC_find_header, GC_header_cache_miss,
+       GC_scratch_alloc, GC_init_headers, GC_install_header,
+       GC_install_counts, GC_remove_header, GC_remove_counts,
+       GC_next_used_block, GC_prev_block): Ditto.
+       * mach_dep.c (GC_with_callee_saves_pushed): Ditto.
+       * malloc.c (GC_collect_or_expand, GC_alloc_large,
+       GC_generic_malloc_inner, GC_generic_malloc_inner_ignore_off_page,
+       GC_core_malloc_atomic, GC_core_malloc, GC_free_inner): Ditto.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
+       * mark.c (GC_collection_in_progress, GC_clear_hdr_marks,
+       GC_set_hdr_marks, GC_set_mark_bit, GC_clear_mark_bit,
+       GC_clear_marks, GC_initiate_gc, GC_mark_some,
+       GC_mark_stack_empty, GC_invalidate_mark_state,
+       GC_signal_mark_stack_overflow, GC_mark_from, GC_help_marker,
+       GC_mark_init, GC_push_all, GC_push_conditional,
+       GC_mark_and_push_stack, GC_push_all_eager, GC_push_all_stack):
+       Ditto.
+       * mark_rts.c (GC_is_static_root, GC_roots_present, GC_approx_sp,
+       GC_exclude_static_roots_inner, GC_push_all_register_frames,
+       GC_push_all_stack_frames, GC_cond_register_dynamic_libraries,
+       GC_push_roots): Ditto.
+       * misc.c (GC_extend_size_map, GC_clear_stack, GC_err_write):
+       Ditto.
+       * new_hblk.c (GC_build_fl, GC_new_hblk): Ditto.
+       * obj_map.c (GC_register_displacement_inner, GC_add_map_entry,
+       GC_initialize_offsets): Ditto.
+       * os_dep.c (GC_get_maps, GC_parse_map_entry, GC_text_mapping,
+       GC_init_linux_data_start, GC_init_netbsd_elf, GC_setpagesize,
+       GC_set_and_save_fault_handler, GC_setup_temporary_fault_handler,
+       GC_reset_fault_handler, GC_get_register_stack_base, GC_init_win32,
+       GC_add_current_malloc_heap, GC_is_heap_base, GC_unmap, GC_remap,
+       GC_unmap_gap, GC_push_all_stacks, GC_gww_dirty_init,
+       GC_dirty_init, GC_read_dirty, GC_page_was_dirty,
+       GC_page_was_ever_dirty, GC_remove_protection,
+       GC_write_fault_handler, GC_mprotect_stop, GC_mprotect_resume,
+       GC_save_callers, GC_print_callers): Ditto.
+       * pthread_stop_world.c (GC_push_all_stacks, GC_stop_world,
+       GC_start_world, GC_stop_init): Ditto.
+       * pthread_support.c (GC_mark_thread_local_free_lists,
+       GC_lookup_thread, GC_reset_finalizer_nested,
+       GC_check_finalizer_nested, GC_segment_is_thread_stack,
+       GC_greatest_stack_base_below, GC_thr_init, GC_init_parallel,
+       GC_do_blocking_inner, GC_lock, GC_acquire_mark_lock,
+       GC_release_mark_lock, GC_wait_for_reclaim, GC_notify_all_builder,
+       GC_wait_marker, GC_notify_all_marker): Ditto.
+       * reclaim.c (GC_print_all_errors, GC_block_empty,
+       GC_reclaim_generic, GC_start_reclaim, GC_continue_reclaim,
+       GC_reclaim_all): Ditto.
+       * thread_local_alloc.c (GC_init_thread_local,
+       GC_destroy_thread_local, GC_mark_thread_local_fls_for): Ditto.
+       * win32_threads.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested, GC_do_blocking_inner, GC_stop_world,
+       GC_start_world, GC_push_all_stacks, GC_get_next_stack,
+       GC_acquire_mark_lock, GC_release_mark_lock, GC_wait_for_reclaim,
+       GC_notify_all_builder, GC_wait_marker, GC_notify_all_marker,
+       GC_thr_init, GC_init_parallel, GC_lock,
+       GC_mark_thread_local_free_lists): Ditto.
+       * alloc.c (GC_add_current_malloc_heap, GC_build_back_graph,
+       GC_traverse_back_graph): Use GC_INNER for the function prototype.
+       * darwin_stop_world.c (GC_mprotect_stop, GC_mprotect_resume):
+       Ditto.
+       * dbg_mlc.c (GC_default_print_heap_obj_proc): Ditto.
+       * dyn_load.c (GC_parse_map_entry, GC_get_maps,
+       GC_segment_is_thread_stack, GC_roots_present, GC_is_heap_base,
+       GC_get_next_stack): Ditto.
+       * finalize.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): Ditto.
+       * gcj_mlc.c (GC_start_debugging): Ditto.
+       * include/private/dbg_mlc.h (GC_save_callers, GC_print_callers,
+       GC_has_other_debug_info, GC_store_debug_info): Ditto.
+       * include/private/gc_hdrs.h (GC_header_cache_miss): Ditto.
+       * include/private/gc_locks.h (GC_lock): Ditto.
+       * include/private/gc_pmark.h (GC_signal_mark_stack_overflow,
+       GC_mark_from): Ditto.
+       * include/private/pthread_support.h (GC_lookup_thread,
+       GC_stop_init): Ditto.
+       * include/private/thread_local_alloc.h (GC_init_thread_local,
+       GC_destroy_thread_local, GC_mark_thread_local_fls_for): Ditto.
+       * malloc.c (GC_extend_size_map, GC_text_mapping): Ditto.
+       * mark.c (GC_page_was_ever_dirty): Ditto.
+       * mark_rts.c (GC_mark_thread_local_free_lists): Ditto.
+       * misc.c (GC_register_main_static_data, GC_init_win32,
+       GC_setpagesize, GC_init_linux_data_start,
+       GC_set_and_save_fault_handler, GC_init_dyld, GC_init_netbsd_elf,
+       GC_do_blocking_inner): Ditto.
+       * os_dep.c (GC_greatest_stack_base_below): Ditto.
+       * win32_threads.c (GC_write_fault_handler, GC_gww_dirty_init):
+       Ditto.
+       * include/private/gc_priv.h: Ditto (for most prototypes).
+       * include/private/gc_priv.h (GC_INNER): Update the comment.
+       * doc/README.macros (GC_DLL): Update.
+
+2009-10-22  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_collection_in_progress): Move the prototype to
+       gc_priv.h.
+       * gc_dlopen.c (GC_collection_in_progress): Ditto.
+       * pthread_support.c (GC_collection_in_progress): Ditto.
+       * misc.c (GC_init_parallel): Ditto.
+       * pthread_support.c (GC_init_parallel): Ditto.
+       * win32_threads.c (GC_init_parallel): Ditto.
+       * darwin_stop_world.c (GC_thr_init): Ditto.
+       * misc.c (GC_thr_init): Ditto.
+       * pthread_stop_world.c (GC_thr_init): Ditto.
+       * pthread_support.c (GC_thr_init): Ditto.
+       * blacklst.c (GC_clear_bl, GC_copy_bl,
+       GC_number_stack_black_listed): Make STATIC.
+       * dbg_mlc.c (GC_print_obj, GC_make_closure,
+       GC_debug_invoke_finalizer): Ditto.
+       * malloc.c (GC_alloc_large_and_clear): Ditto.
+       * mark.c (GC_push_selected, GC_push_marked1, GC_push_marked2,
+       GC_push_marked4, GC_push_marked, GC_push_next_marked,
+       GC_push_next_marked_dirty, GC_push_next_marked_uncollectable):
+       Ditto.
+       * misc.c (GC_clear_stack_inner): Ditto.
+       * os_dep.c (GC_repeat_read, GC_default_push_other_roots): Ditto.
+       * darwin_stop_world.c (FindTopOfStack): Make static; define only
+       if not DARWIN_DONT_PARSE_STACK.
+       * dbg_mlc.c (GC_debug_free_inner): Define only if DBG_HDRS_ALL.
+       * dyn_load.c (GC_repeat_read): Remove unused prototype.
+       * include/private/gc_pmark.h (GC_find_start): Ditto.
+       * misc.c (GC_read, GC_register_finalizer_no_order): Ditto.
+       * dyn_load.c (GC_segment_is_thread_stack): Add prototype (only if
+       THREADS).
+       * dyn_load.c (GC_register_main_static_data): Define only if
+       DYNAMIC_LOADING.
+       * finalize.c (GC_enqueue_all_finalizers): Remove unnecessary tail
+       "return" statement.
+       * gc_dlopen.c (GC_SOLARIS_THREADS): Don't recognize (since implies
+       GC_PTHREADS).
+       * include/gc.h: Fix a typo.
+       * include/gc_inline.h (GC_ASSERT): Define (if not defined) since
+       the header is public.
+       * include/gc_inline.h (GC_generic_malloc_many): New public
+       function declaration.
+       * mallocx.c (GC_generic_malloc_many): Make public.
+       * include/private/gc_priv.h (GC_INNER): Use visibility attribute
+       (if available).
+       * include/private/gc_priv.h (GC_EXTERN): Define using GC_INNER.
+       * include/private/gc_priv.h: Include atomic_ops.h if THREADS and
+       MPROTECT_VDB.
+       * os_dep.c: Don't include atomic_ops.h
+       * win32_threads.c: Ditto.
+       * include/private/gc_priv.h (GC_push_selected, GC_push_regs,
+       GC_push_marked, GC_number_stack_black_listed,
+       GC_alloc_large_and_clear, GC_reclaim_or_delete_all,
+       GC_generic_malloc_many, GC_make_closure,
+       GC_debug_invoke_finalizer, GC_print_obj, GC_page_was_ever_dirty):
+       Remove the prototype.
+       * mark.c (GC_page_was_ever_dirty): Add prototype (only if
+       PROC_VDB).
+       * include/private/gc_priv.h (GC_push_next_marked_dirty,
+       GC_push_next_marked, GC_push_next_marked_uncollectable): Move
+       the prototype to mark.c.
+       * include/private/gc_priv.h (GC_is_static_root): Declare only if
+       not THREADS.
+       * include/private/gc_priv.h (GC_free_inner): Declare only if
+       THREADS.
+       * include/private/gc_priv.h (GC_debug_free_inner): Declare only if
+       THREADS and DBG_HDRS_ALL.
+       * include/private/gc_priv.h (GC_markers): Declare GC_markers only
+       if PARALLEL_MARK.
+       * include/private/gc_priv.h (GC_register_main_static_data): Move
+       the prototype to misc.c.
+       * mach_dep.c (GC_push_regs): Make STATIC; define only along with
+       HAVE_PUSH_REGS definition.
+       * mach_dep.c (GC_clear_stack_inner): Replace K&R-style function
+       definition with the ANSI C one.
+       * mark.c (GC_started_thread_while_stopped): Declared only if not
+       GNU C.
+       * win32_threads.c (GC_started_thread_while_stopped): Don't define
+       if GNU C.
+       * mark.c (GC_mark_from): Avoid unbalanced brackets in
+       #if-#else-#endif blocks.
+       * mark_rts.c (GC_is_static_root): Define only if not THREADS.
+       * os_dep.c (GC_get_stack_base): Make public (for OpenBSD).
+       * os_dep.c (GC_page_was_ever_dirty): Comment out the function
+       except for PROC_VDB.
+       * tests/test.c (main): Don't reference GC_print_obj,
+       GC_make_closure, GC_debug_invoke_finalizer,
+       GC_page_was_ever_dirty, GC_is_fresh (in GC_noop).
+       * thread_local_alloc.c: Don't include "gc_inline.h".
+       * win32_threads.c (GC_write_fault_handler): Declare only if
+       MPROTECT_VDB.
+
+2009-10-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (DEBUG): Remove macro (since unused).
+       * allchblk.c: Include private/gc_priv.h before other includes and
+       definitions.
+       * alloc.c: Ditto.
+       * gc_dlopen.c: Ditto.
+       * headers.c: Ditto.
+       * mallocx.c: Ditto.
+       * mark_rts.c: Ditto.
+       * new_hblk.c: Ditto.
+       * reclaim.c: Ditto.
+       * mark.c: Include private/gc_pmark.h before other includes.
+       * misc.c: Ditto.
+       * dyn_load.c (_GNU_SOURCE): Move the definition to gc_priv.h.
+       * pthread_support.c (_USING_POSIX4A_DRAFT10): Ditto.
+       * pthread_support.c (_POSIX4A_DRAFT10_SOURCE): Remove (since
+       already defined in gc_config_macros.h).
+       * dyn_load.c (GC_init_dyld): Remove parameter cast for
+       _dyld_register_func_for_add_image() and
+       _dyld_register_func_for_remove_image(); add the comment about
+       possible warnings; add FIXME for the deprecated
+       _dyld_bind_fully_image_containing_address().
+       * include/private/gc_priv.h: Include gc.h before the standard
+       headers inclusion.
+       * tests/test.c: Ditto.
+       * include/private/gcconfig.h (DebugBreak): Update the comment.
+       * typd_mlc.c (ED_INITIAL_SIZE): Remove ';'.
+       * alloc.c: Reformat the code (partly adjust indentation).
+       * backgraph.c: Ditto.
+       * blacklst.c: Ditto.
+       * checksums.c: Ditto.
+       * finalize.c: Ditto.
+       * gcj_mlc.c: Ditto.
+       * mach_dep.c: Ditto.
+       * mark_rts.c: Ditto.
+       * obj_map.c: Ditto.
+       * os_dep.c: Ditto.
+       * ptr_chck.c: Ditto.
+       * stubborn.c: Ditto.
+       * thread_local_alloc.c: Ditto.
+       * typd_mlc.c: Ditto.
+
+2009-10-20  Ivan Maidanski <ivmai@mail.ru> (really mostly OpenBSD contributors)
+
+       * configure.ac (openbsd): Define GC_OPENBSD_THREADS.
+       * configure.ac: Add AM_CONDITIONAL(OPENBSD_THREADS).
+       * configure.ac: Add sparc-openbsd case.
+       * doc/README.macros (GC_NETBSD_THREADS, GC_OPENBSD_THREADS):
+       Document.
+       * tests/test.c (main): Handle OpenBSD case.
+       * extra/threadlibs.c: Add the copyright header; expand all tabs to
+       spaces; remove trailing spaces at EOLn.
+       * include/private/pthread_stop_world.h: Ditto.
+       * extra/threadlibs.c (main): Replace K&R-style function definition
+       with the ANSI C one.
+       * extra/threadlibs.c (main): Handle GC_OPENBSD_THREADS case.
+       * dyn_load.c (OPENBSD): Recognize (similar to NETBSD).
+       * include/gc_config_macros.h (GC_SOLARIS_THREADS): Recognize;
+       define it for OpenBSD.
+       * include/gc_pthread_redirects.h (GC_pthread_sigmask,
+       pthread_sigmask): Don't declare and redefine for OpenBSD.
+       * include/private/gcconfig.h: Handle OpenBSD (on arm, sh, i386,
+       amd64, powerpc).
+       * mach_dep.c (NO_GETCONTEXT): Ditto.
+       * include/private/pthread_stop_world.h (thread_stop_info): Don't
+       define last_stop_count field if OpenBSD.
+       * misc.c (GC_init_dyld): Add declaration (if NetBSD).
+       * misc.c (GC_init): Don't call GC_init_netbsd_elf() for OpenBSD.
+       * os_dep.c (GC_init_netbsd_elf): Don't define for OpenBSD.
+       * os_dep.c (old_segv_act, GC_jmp_buf_openbsd): New static variable
+       (only if OpenBSD).
+       * os_dep.c (GC_fault_handler_openbsd, GC_find_limit_openbsd,
+       GC_skip_hole_openbsd): New static function (only if OpenBSD).
+       * os_dep.c (GC_get_stack_base, GC_get_main_stack_base,
+       GC_register_data_segments): Define specially for OpenBSD case.
+       * os_dep.c (GC_fault_handler_lock): Initialize to
+       AO_TS_INITIALIZER (instead of 0).
+       * pthread_support.c (GC_allocate_lock): Ditto.
+       * pthread_stop_world.c (NSIG, GC_print_sig_mask,
+       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_suspend_handler_inner, GC_suspend_handler,
+       GC_restart_handler): Don't define and use if OpenBSD.
+       * pthread_stop_world.c (GC_suspend_all, GC_stop_world,
+       GC_start_world): Handle OpenBSD case.
+       * pthread_stop_world.c (GC_stop_init): Define as empty if OpenBSD.
+       * pthread_support.c (pthread_sigmask): Don't undefine the macro and
+       don't define the wrapper function if OpenBSD.
+       * pthread_support.c (GC_thr_init): Handle OpenBSD case.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2009-10-20  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * dyn_load.c: Move the inclusion of private/gc_priv.h below
+       definition of a feature macro (_GNU_SOURCE).
+
+2009-10-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (REVEAL_POINTER): Remove redundant parentheses.
+       * include/gc.h (GC_HIDE_POINTER, GC_REVEAL_POINTER): New macros
+       (only if GC_I_HIDE_POINTERS).
+       * backgraph.c (GET_OH_BG_PTR): Prefix REVEAL_POINTER() with "GC_".
+       * dbg_mlc.c (GC_get_back_ptr_info): Ditto.
+       * finalize.c (GC_grow_table, GC_dump_finalization, GC_finalize,
+       GC_enqueue_all_finalizers): Ditto.
+       * backgraph.c (SET_OH_BG_PTR): Prefix HIDE_POINTER() with "GC_".
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_unregister_disappearing_link, GC_register_finalizer_inner,
+       GC_finalize): Ditto.
+       * include/private/dbg_mlc.h (HIDE_BACK_PTR): Ditto.
+       * include/private/dbg_mlc.h (GC_I_HIDE_POINTERS): Define instead
+       of I_HIDE_POINTERS.
+       * include/private/gc_priv.h (GC_I_HIDE_POINTERS): Ditto.
+       * include/gc.h (_GC_H): Strip leading underscore.
+       * include/gc_backptr.h (_GC_H): Ditto.
+       * include/gc_gcj.h (_GC_H): Ditto.
+       * include/gc_mark.h (_GC_H): Ditto.
+       * include/gc_typed.h (_GC_TYPED_H, _GC_H): Ditto.
+       * include/javaxfc.h (_GC_H): Ditto.
+       * include/new_gc_alloc.h (__GC_SPECIALIZE): Ditto.
+       * include/private/dbg_mlc.h (_GC_H): Ditto.
+       * include/private/gc_priv.h (_GC_H): Ditto.
+       * include/gc_backptr.h: Reformat the code (adjust indentation,
+       comment out function parameter names).
+       * include/gc_gcj.h: Ditto.
+       * include/gc_mark.h: Ditto.
+       * include/gc_typed.h: Ditto.
+       * include/javaxfc.h: Ditto.
+       * include/private/dbg_mlc.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_cpp.cc: Include "gc_cpp.h" instead of <gc_cpp.h>.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_INNER): New macro (for GC-scope
+       variable definitions).
+       * include/private/gc_priv.h (GC_EXTERN): Update the comment.
+       * allchblk.c (GC_unmap_threshold): Define as GC_INNER.
+       * alloc.c (GC_incremental, GC_world_stopped, GC_n_heap_sects,
+       GC_n_memory, GC_fail_count): Ditto.
+       * blacklst.c (GC_black_list_spacing, GC_print_heap_obj): Ditto.
+       * gcj_mlc.c (GC_gcj_malloc_initialized, GC_gcjobjfreelist): Ditto.
+       * mach_dep.c (GC_save_regs_ret_val): Ditto.
+       * mark.c (GC_n_mark_procs, GC_obj_kinds, GC_n_kinds,
+       GC_mark_stack, GC_mark_stack_limit, GC_mark_stack_size,
+       GC_mark_stack_top, GC_mark_state, GC_mark_stack_too_small,
+       GC_mark_no, GC_markers): Ditto.
+       * mark_rts.c (GC_root_size, GC_push_typed_structures): Ditto.
+       * misc.c (GC_allocate_ml, GC_debugging_started, GC_check_heap,
+       GC_print_all_smashed, GC_print_back_height, GC_dump_regularly,
+       GC_backtraces, GC_force_unmap_on_gcollect,
+       GC_large_alloc_warn_interval, GC_is_initialized, GC_write_cs,
+       GC_current_warn_proc, GC_blocked_sp, GC_activation_frame): Ditto.
+       * os_dep.c (GC_page_size, GC_dont_query_stack_min,
+       GC_no_win32_dlls, GC_wnt, GC_sysinfo, GC_push_other_roots,
+       GC_dirty_maintained, GC_fault_handler_lock): Ditto.
+       * pthread_support.c (GC_allocate_ml, GC_lock_holder,
+       GC_need_to_lock, GC_thr_initialized, GC_threads,
+       GC_in_thread_creation, GC_collecting, GC_allocate_lock,
+       GC_mark_lock_holder): Ditto.
+       * reclaim.c (GC_bytes_found, GC_fl_builder_count, GC_have_errors):
+       Ditto.
+       * win32_threads.c (GC_allocate_ml, GC_lock_holder,
+       GC_need_to_lock, GC_mark_lock_holder, GC_collecting): Ditto.
+       * extra/gc.c (GC_INNER, GC_EXTERN): Define as STATIC.
+       * mach_dep.c (GC_with_callee_saves_pushed): Remove redundant {}.
+       * os_dep.c (GC_init_win32): Reformat the comment.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (GC_bytes_allocd, GC_objfreelist,
+       GC_aobjfreelist): Replace GC_EXTERN to extern for SEPARATE_GLOBALS
+       case (since they are not defined inside GC at present).
+       * include/private/gc_priv.h (GC_objects_are_marked): Remove the
+       declaration (since made static).
+       * mark.c (GC_objects_are_marked): Define as STATIC.
+       * win32_threads.c (GC_thr_initialized, GC_in_thread_creation):
+       Ditto.
+       * mark.c (GC_N_KINDS_INITIAL_VALUE): New macro (defined and used
+       to initialize GC_n_kinds).
+       * win32_threads.c (start_mark_threads): Adjust the comment.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_notify_full_gc): Use GC_INLINE for a tiny static
+       function.
+       * backgraph.c (pop_in_progress, GC_apply_to_each_object): Ditto.
+       * mark_rts.c (add_roots_to_index): Ditto.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * extra/gc.c: New file.
+       * Makefile.am (EXTRA_DIST): Add "extra/gc.c".
+       * configure: Regenerate.
+       * Makefile.in: Ditto.
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_log): Remove the declaration; move the definition (to
+       the place where it is used); make STATIC.
+       * misc.c (GC_init): Use GC_err_printf() instead of GC_log_printf()
+       to print open log failure.
+       * misc.c (GC_write): Don't abort on open log failure if the GC is
+       compiled with GC_PRINT_VERBOSE_STATS (useful for WinCE).
+
+2009-10-19  Ivan Maidanski <ivmai@mail.ru> (really Andreas Tobler)
+
+       * include/private/gcconfig.h (USE_MMAP): Guard with ifndef.
+
+2009-10-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_fail_count, GC_large_alloc_warn_interval): Move
+       the variable declaration to gc_priv.h.
+       * alloc.c (GC_bytes_found, GC_unmap_threshold,
+       GC_force_unmap_on_gcollect): Ditto.
+       * dyn_load.c (GC_no_win32_dlls, GC_wnt): Ditto.
+       * finalize.c (GC_fail_count): Ditto.
+       * include/private/gc_locks.h (GC_allocate_ml, GC_lock_holder,
+       GC_collecting, GC_mark_lock_holder, GC_need_to_lock): Ditto.
+       * include/private/gc_pmark.h (GC_n_mark_procs, GC_mark_stack_size,
+       GC_mark_stack_limit, GC_mark_stack_top, GC_mark_stack,
+       GC_mark_stack_too_small, GC_mark_state): Ditto.
+       * include/private/pthread_support.h (GC_threads,
+       GC_thr_initialized, GC_in_thread_creation): Ditto.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val, GC_world_stopped): Ditto.
+       * misc.c (GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_unmap_threshold): Ditto.
+       * pthread_support.c (GC_markers): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_fault_handler_lock, GC_write_cs,
+       GC_dont_query_stack_min, GC_markers, GC_wnt): Ditto.
+       * include/private/gc_priv.h (GC_EXTERN): New macro (used mostly as
+       a tag for now); defined after "gcconfig.h" inclusion.
+       * include/private/gc_priv.h: Use GC_EXTERN instead of "extern"
+       keyword for most global variables.
+       * alloc.c (GC_copyright): Add the comment about the symbol
+       visibility.
+       * finalize.c (GC_fo_entries): Ditto.
+       * include/private/gc_priv.h (GC_print_stats): Ditto.
+       * misc.c (GC_quiet): Ditto.
+       * mallocx.c (GC_bytes_allocd_tmp): Make the volatile variable
+       STATIC.
+       * pthread_support.c (GC_threads): Add explicit zero initializer
+       (to make the variable definition differ from the declaration).
+
+2009-10-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c (GC_quiet): Remove the declaration (not needed
+       anymore since gc_priv.h is always included).
+       * checksums.c (GC_quiet): Ditto.
+       * gcj_mlc.c (GC_quiet): Ditto.
+       * headers.c (GC_hdr_cache_hits, GC_hdr_cache_misses): Add the
+       comment.
+       * include/private/gc_hdrs.h (GC_hdr_cache_hits,
+       GC_hdr_cache_misses): Ditto.
+       * mark.c (GC_first_nonempty): Make the volatile variable STATIC.
+       * pthread_stop_world.c (GC_stop_count, GC_world_is_stopped):
+       Ditto.
+       * win32_threads.c (GC_please_stop, GC_max_thread_index,
+       GC_mark_mutex_waitcnt): Ditto.
+
+2009-10-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (GC_USE_LD_WRAP): Fix a typo (swapped 'L' and
+       'D') in the name.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_dlopen.c (GC_MUST_RESTORE_REDEFINED_DLOPEN): Define if dlopen
+       redirection is turned off; turn it on later when dlopen real
+       symbol is no longer needed (according to the comment and the same
+       as in dyn_load.c).
+       * gc_dlopen.c (WRAP_FUNC, REAL_FUNC): Rename to WRAP_DLFUNC and
+       REAL_DLFUNC, respectively (to have unique names since the
+       definitions may differ from that of the similar ones in
+       pthread_support.c).
+       * mark.c (source): Undefine the macro when no longer needed.
+       * os_dep.c (handler): Rename the type to GC_fault_handler_t (to
+       have the unique name across the project).
+       * os_dep.c (STAT_BUF_SIZE, STAT_READ); Guard with ifndef; add the
+       comment.
+       * pthread_support.c (STAT_BUF_SIZE, STAT_READ): Ditto.
+       * os_dep.c (sbrk): Undo sbrk() redirection (for ECOS) when no
+       longer needed.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_stop_world.c (pthread_sigmask): Undefine before using
+       in GC_print_sig_mask() (only if DEBUG_THREADS); add the comment.
+       * win32_threads.c (dlopen, _beginthread): Don't undefine (since
+       neither redirected nor used here).
+       * win32_threads.c (GC_Thread_Rep): Rename "table_management" to
+       "tm" for short; remove "tm_" prefix.
+       * win32_threads.c (in_use, next): Don't define the macros; use
+       tm.in_use and tm.next fields, respectively (to ease debugging).
+       * win32_threads.c (HASH): Rename to PTHREAD_MAP_HASH (to have
+       unique name across the project).
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h (I_HIDE_POINTERS): Define before gc.h
+       inclusion.
+       * include/private/gc_pmark.h (I_HIDE_POINTERS): Define if gc.h is
+       not included yet.
+       * finalize.c (I_HIDE_POINTERS): Don't define.
+       * include/private/dbg_mlc.h (I_HIDE_POINTERS): Ditto.
+       * misc.c (I_HIDE_POINTERS): Ditto.
+       * include/private/dbg_mlc.h (HIDE_POINTER, REVEAL_POINTER,
+       GC_hidden_pointer): Don't define if HIDE_POINTER is undefined.
+       * include/private/gc_pmark.h: Remove the comment about gc_priv.h
+       inclusion order.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c: Include gc_priv.h before using configuration
+       information (MACOS).
+       * dyn_load.c (GC_must_restore_redefined_dlopen): Rename to
+       GC_MUST_RESTORE_REDEFINED_DLOPEN.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * backgraph.c (SET_OH_BG_PTR): Place outermost parenthesis
+       properly.
+       * darwin_stop_world.c: Replace "if DEBUG_THREADS" with
+       "ifdef DEBUG_THREADS".
+       * pthread_stop_world.c: Ditto.
+       * pthread_support.c: Ditto.
+       * include/gc_inline.h: Guard with GC_INLINE_H.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_copyright): Define as const.
+       * alloc.c (GC_collect_at_heapsize): Replace "static" with "STATIC"
+       (since the name starts with "GC_" prefix).
+       * dbg_mlc.c (GC_describe_type_fns): Ditto.
+       * dyn_load.c (GC_FirstDLOpenedLinkMap,
+       GC_register_dynlib_callback, GC_dyld_sections,
+       GC_dyld_name_for_hdr, GC_dyld_image_add, GC_dyld_image_remove):
+       Ditto.
+       * malloc.c (GC_libpthread_start, GC_libpthread_end,
+       GC_libld_start, GC_libld_end): Ditto.
+       * mark_rts.c (GC_remove_root_at_pos, GC_rebuild_root_index):
+       Ditto.
+       * os_dep.c (GC_gww_read_dirty, GC_gww_page_was_dirty,
+       GC_gww_page_was_ever_dirty, GC_mprotect_thread_notify,
+       GC_mprotect_thread_reply, GC_mprotect_thread, GC_darwin_sigbus,
+       GC_forward_exception): Ditto.
+       * pthread_support.c (GC_syms_initialized): Ditto.
+       * typd_mlc.c (GC_push_typed_structures_proc): Ditto.
+       * win32_threads.c (GC_win32_dll_threads,
+       GC_register_my_thread_inner, GC_lookup_pthread, GC_get_stack_min,
+       GC_waitForSingleObjectInfinite): Ditto.
+       * darwin_stop_world.c (GC_use_mach_handler_thread,
+       GC_use_mach_handler_thread, GC_mach_threads_count): Replace
+       "static" with "STATIC" and add zero initializer.
+       * os_dep.c (GC_task_self, GC_ports, GC_mprotect_state,
+       GC_sigbus_count): Ditto.
+       * headers.c (free_hdr): Replace "static" with GC_INLINE.
+       * misc.c (GC_tmp): Rename static variable to fwrite_gc_res.
+       * os_dep.c (memory): Rename static variable to ecos_gc_memory.
+       * os_dep.c (async_set_pht_entry_from_index): Make static (for
+       MPROTECT_VDB case).
+       * pthread_support.c (GC_real_pthread_create,
+       GC_real_pthread_sigmask, GC_real_pthread_join,
+       GC_real_pthread_detach, GC_init_real_syms): Use REAL_FUNC() macro
+       for static GC_real_XXX symbols.
+       * win32_threads.c (GC_may_be_in_stack): Remove "GC_" prefix.
+
+2009-10-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_never_stop_func, GC_check_fl_marks,
+       GC_finish_collection): Reformat the code (make opening bracket
+       style uniform across the file).
+       * allchblk.c (GC_allochblk): Ditto.
+       * backgraph.c (add_edge): Ditto.
+       * dbg_mlc.c (GC_marked_for_finalization): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries, GC_init_dyld): Ditto.
+       * finalize.c (GC_null_finalize_mark_proc): Ditto.
+       * gc_dlopen.c (GC_dlopen): Ditto.
+       * mark.c (GC_push_marked1, GC_push_marked2, GC_push_marked4):
+       Ditto.
+       * misc.c (looping_handler, GC_call_with_gc_active,
+       GC_do_blocking_inner, GC_do_blocking): Ditto.
+       * os_dep.c (GC_get_main_stack_base, GC_read_dirty): Ditto.
+       * pthread_support.c (GC_pthread_create, GC_pthread_sigmask,
+       GC_pthread_join, GC_pthread_detach, GC_check_tls,
+       GC_do_blocking_inner, GC_call_with_gc_active): Ditto.
+       * reclaim.c (GC_reclaim_clear, GC_reclaim_block,
+       GC_print_free_list): Ditto.
+       * os_dep.c (GC_page_was_dirty, GC_page_was_ever_dirty,
+       GC_remove_protection): Reformat the code (wrap long lines).
+
+2009-10-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_finish_collection): Replace getenv() with GETENV().
+       * dyn_load.c (GC_init_dyld): Ditto.
+       * os_dep.c (GC_print_callers): Ditto.
+       * dyn_load.c (GC_dyld_name_for_hdr): Cast _dyld_get_image_name()
+       result (since it's always of "struct mach_header" type).
+       * dyn_load.c (GC_init_dyld): Cast GC_dyld_image_add and
+       GC_dyld_image_remove (to always have the first argument of
+       "struct mach_header" pointer type).
+
+2009-10-16  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Add threads support for OpenBSD case (threads may
+       not work correctly for it).
+       * configure: Regenerate.
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * acinclude.m4: Rename to m4/gc_set_version.m4.
+       * aclocal.m4: Regenerate.
+       * configure: Ditto.
+       * Makefile.in: Ditto.
+       * m4/libtool.m4: Delete the file.
+       * m4/lt~obsolete.m4: Ditto.
+       * m4/ltoptions.m4: Ditto.
+       * m4/ltsugar.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h: Define DebugBreak() as _exit(-1) for
+       x86mingw32ce toolchain to workaround the incorrect DebugBreak()
+       declaration in winbase.h (the workaround would turn into a no-op
+       when DebugBreak() will be defined as a macro in the toolchain).
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gcconfig.h: Recognize __i386__ if WinCE (for
+       x86mingw32ce toolchain).
+       * include/private/gcconfig.h (NO_GETENV): Don't define for CeGCC
+       toolchain (or if already defined).
+       * include/private/gcconfig.h (NO_GETENV_WIN32): New macro (always
+       defined for WinCE or if NO_GETENV is defined).
+       * misc.c (GC_CreateLogFile): Use NO_GETENV_WIN32 macro instead of
+       NO_GETENV one.
+
+2009-10-15  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Add AC_CONFIG_MACRO_DIR([m4]).
+       * Makefile.am: Add "ACLOCAL_AMFLAGS = -I m4".
+       * libtool.m4: Remove.
+       * aclocal.m4: Regenerate.
+       * configure: Ditto.
+       * Makefile.in: Ditto.
+       * m4/libtool.m4: New file (generated).
+       * m4/lt~obsolete.m4: Ditto.
+       * m4/ltoptions.m4: Ditto.
+       * m4/ltsugar.m4: Ditto.
+       * m4/ltversion.m4: Ditto.
+
+2009-10-10  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_UNDERSCORE_STDCALL): Recognize new macro;
+       prefix GC_CreateThread and GC_ExitThread with '_' if defined.
+       * doc/README.macros (GC_UNDERSCORE_STDCALL): Document.
+
+2009-10-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_collect_or_expand): Add "retry" argument; add the
+       comments; don't use "default" stop_func on a retry if
+       GC_dont_expand.
+       * alloc.c (GC_collect_or_expand): Reformat the code (make the
+       indentation style uniform across the function).
+       * alloc.c (GC_allocobj): Pass "retry" argument to
+       GC_collect_or_expand().
+       * malloc.c (GC_alloc_large): Ditto.
+       * include/private/gc_priv.h (GC_collect_or_expand): Move the
+       declaration to malloc.c; add "retry" argument.
+
+2009-10-09  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_start_call_back): Move the variable definition from
+       misc.c.
+       * include/private/gc_priv.h (GC_start_call_back): Remove the
+       declaration.
+       * alloc.c (GC_notify_full_gc): Remove unnecessary cast of 0.
+       * alloc.c (GC_try_to_collect_inner): Also call stop_func at the
+       beginning of the function.
+       * include/gc.h (GC_try_to_collect): Refine the comment about
+       stop_func.
+
+2009-10-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_default_stop_func, GC_try_to_collect_general,
+       GC_gcollect): Add the comment.
+       * alloc.c (GC_try_to_collect_general): Move the assertion on
+       stop_func != 0 to GC_try_to_collect().
+       * alloc.c (GC_try_to_collect_general): If stop_func == 0 then use
+       GC_default_stop_func instead (holding the lock).
+       * alloc.c (GC_gcollect): Pass 0 as stop_func instead of
+       GC_default_stop_func (to prevent data races).
+
+2009-10-08  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct: Move "define arguments" documentation to
+       doc/README.macros; add reference to doc/README.macros.
+       * Makefile.dj: Change the documentation reference to
+       doc/README.macros.
+       * README.QUICK: Ditto.
+       * configure.ac: Ditto.
+       * allchblk.c: Remove unnecessary "-D" from the comment.
+       * doc/README.macros: Ditto.
+       * README.environment: Ditto.
+       * include/gc.h: Ditto.
+       * include/gc_inline.h: Ditto.
+       * include/private/gcconfig.h: Ditto.
+       * README.QUICK: Fix a typo.
+       * README.QUICK: Expand all tabs to spaces.
+       * configure: Regenerate.
+       * include/private/config.h.in: Ditto.
+
+2009-10-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * misc.c (GC_CreateLogFile): Use FILE_ATTRIBUTE_NORMAL for
+       CreateFile(); don't immediately flush every write if very verbose.
+
+2009-10-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * doc/README.win32: Replace ".exe.log" to ".gc.log".
+       * doc/README.win64: Ditto.
+       * doc/README.win64: Fix a typo.
+       * misc.c (GC_CreateLogFile): Strip executable file extension for
+       the log file; use ".gc.log" extension (instead of ".log").
+
+2009-10-07  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_config_macros.h: Avoid the redefinition of
+       GC_xxx_THREADS macros.
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_try_to_collect_general): Change the type of "result"
+       local variable to GC_bool.
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_config_macros.h: Use old behavior for FreeBSD and
+       NetBSD platform detection code (check that other GC_xxx_THREADS
+       are undefined); add FIXME.
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc_config_macros.h: Rearrange the platform detection
+       code (GC_WIN32_PTHREADS implies GC_WIN32_THREADS; define
+       GC_THREADS first if GC_XXX_THREADS already set; define proper
+       GC_XXX_THREADS if GC_THREADS; define GC_PTHREADS in a single
+       place; define _REENTRANT if posix threads except for Win32).
+       * include/gc_config_macros.h: Reformat the code (make the
+       indentation style uniform across the file).
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_try_to_collect_general): New function (move the code
+       from GC_try_to_collect, pass force_unmap argument).
+       * alloc.c (GC_try_to_collect, GC_gcollect): Call
+       GC_try_to_collect_general().
+       * alloc.c (GC_gcollect_and_unmap): New public function.
+       * include/gc.h (GC_gcollect_and_unmap): New function declaration.
+       * tests/test.c (window_proc): Call GC_gcollect_and_unmap() on
+       WM_HIBERNATE event (instead of GC_set_force_unmap_on_gcollect()
+       and GC_gcollect()).
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_allow_register_threads, GC_register_my_thread,
+       GC_unregister_my_thread, GC_malloc_many): Refine the comment.
+       * include/gc.h (GC_malloc_many, GC_NEXT): Declare unconditionally
+       (that is, don't depend on GC_THREADS macro).
+       * include/gc.h: Don't check for __CYGWIN32__ and __CYGWIN__ along
+       with a check for GC_PTHREADS (since the former implies the
+       latter).
+
+2009-10-06  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h: Reformat the code (make the indentation style
+       uniform across the file).
+       * include/gc.h (GC_SOLARIS_THREADS): Don't check for.
+       * include/gc.h (GC_MIN, GC_MAX): Don't define.
+       * mallocx.c (GC_malloc_many): Add comment to #endif.
+
+2009-10-02  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Drop the subdir-objects Automake option, since
+       it's incompatible with picking source files from libatomic_ops.
+       * Makefile.in: Regenerate.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru> (really mostly Andreas Tobler)
+
+       * allchblk.c (GC_fail_count, GC_large_alloc_warn_interval): Add
+       "extern" keyword to a global variable declaration (some compilers
+       require it).
+       * alloc.c (GC_bytes_found, GC_unmap_threshold,
+       GC_force_unmap_on_gcollect): Ditto.
+       * dyn_load.c (GC_no_win32_dlls, GC_wnt): Ditto.
+       * finalize.c (GC_fail_count): Ditto.
+       * include/private/gc_hdrs.h (GC_hdr_cache_hits,
+       GC_hdr_cache_misses): Ditto.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val, GC_world_stopped): Ditto.
+       * misc.c (GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_unmap_threshold, GC_old_allocator): Ditto.
+       * pthread_support.c (GC_markers): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_fault_handler_lock, GC_write_cs,
+       GC_dont_query_stack_min, GC_markers, GC_wnt): Ditto.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate (by autoreconf -vif, deleting libtool.m4
+       first and using libtool-2.2, automake-1.10.2, autoconf-2.64).
+       * aclocal.m4: Ditto.
+       * config.guess: Ditto.
+       * config.sub: Ditto.
+       * configure: Ditto.
+       * depcomp: Ditto.
+       * install-sh: Ditto.
+       * ltmain.sh: Ditto.
+       * missing: Ditto.
+       * mkinstalldirs: Ditto.
+       * include/private/config.h.in: Ditto.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * tests/huge_test.c: Define GC_IGNORE_WARN (if not defined) to
+       suppress misleading GC "Out of Memory!" warning printed on every
+       GC_MALLOC(LONG_MAX) call.
+       * tests/huge_test.c: Include "gc.h" instead of <gc.h>.
+       * tests/huge_test.c (main): Replace K&R-style function definition
+       with the ANSI C one.
+       * tests/huge_test.c: Expand all tabs to spaces.
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_register_dynamic_libraries): Always use
+       lpMaximumApplicationAddress value for WinCE (even for old
+       versions).
+       * os_dep.c (VER_PLATFORM_WIN32_CE): Define if not in winbase.h.
+       * os_dep.c (GC_dont_query_stack_min): New global variable (only if
+       WinCE and THREADS).
+       * os_dep.c (GC_setpagesize): Adjust lpMaximumApplicationAddress
+       for WinCE (prior to version 6) if not _WIN32_WCE_EMULATION; set
+       GC_dont_query_stack_min for older WinCE (prior to version 5).
+       * win32_threads.c (GC_dont_query_stack_min): Declare.
+       * win32_threads.c (GC_get_stack_min): Rename the macro to
+       GC_wince_evaluate_stack_min for WinCE; update the comment.
+       * win32_threads.c (GC_push_stack_for, GC_get_next_stack): Use
+       GC_wince_evaluate_stack_min() instead of GC_get_stack_min() for
+       WinCE and don't update thread's last_stack_min value (only if
+       GC_dont_query_stack_min).
+       * win32_threads.c (GC_push_stack_for): Skip assertion for WinCE if
+       GC_dont_query_stack_min (since the evaluated stack_min value may
+       be incorrect if the stack is bigger than 64 KiB).
+
+2009-10-01  Ivan Maidanski <ivmai@mail.ru>
+
+       * gc_dlopen.c (GC_dlopen): Add function redirector (only if
+       GC_USE_LD_WRAP).
+       * include/gc.h: Include "gc_pthread_redirects.h" even if
+       GC_USE_LD_WRAP or GC_NO_THREAD_REDIRECTS.
+       * include/gc_pthread_redirects.h (GC_PTHREAD_REDIRECTS_H): Don't
+       define and check for (since included only from gc.h).
+       * include/gc_pthread_redirects.h: Declare "GC_" symbols even if
+       GC_USE_LD_WRAP or GC_NO_THREAD_REDIRECTS.
+       * include/gc_pthread_redirects.h: Include signal.h only to get
+       sigset_t definition.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure: Regenerate (by autoreconf -vif, deleting libtool.m4
+       first).
+       * Makefile.in: Ditto.
+       * aclocal.m4: Ditto.
+       * include/private/config.h.in: Ditto.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct: Remove trailing spaces at EOLn.
+       * Makefile.direct: Document GC_REGISTER_MEM_PRIVATE.
+       * mark_rts.c (GC_is_tmp_root): Define also for WinCE unless
+       NO_DEBUGGING (that is, replace _WIN32_WCE_EMULATION with MSWINCE).
+       * os_dep.c (GC_sysinfo): Remove explicit global variable
+       initialization to "{0}" (revert back the previous change) since it
+       might produce a warning.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_large_alloc_warn_interval): Move declaration from
+       gc_priv.h.
+       * allchblk.c (GC_large_alloc_warn_suppressed): Move definition
+       from misc.c; define as STATIC.
+       * include/private/gc_priv.h (GC_large_alloc_warn_interval,
+       GC_large_alloc_warn_suppressed): Remove declaration.
+       * alloc.c (GC_bytes_found): Add "defined in" comment.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * misc.c (GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_old_allocator): Ditto.
+       * pthread_support.c (GC_markers): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_markers): Ditto.
+       * alloc.c (GC_start_time): Explicitly initialize to 0 or NULL (to
+       be distinctive from a variable declaration).
+       * backgraph.c (GC_max_height, GC_deepest_obj): Ditto.
+       * blacklst.c (GC_old_normal_bl, GC_incomplete_normal_bl,
+       GC_old_stack_bl, GC_incomplete_stack_bl): Ditto.
+       * checksums.c (GC_faulted, GC_n_dirty_errors,
+       GC_n_faulted_dirty_errors, GC_n_changed_errors, GC_n_clean,
+       GC_n_dirty, GC_bytes_in_used_blocks): Ditto.
+       * dbg_mlc.c (GC_smashed): Ditto.
+       * finalize.c (GC_old_dl_entries): Ditto.
+       * gcj_mlc.c (GC_gcj_kind, GC_gcj_debug_kind, GC_gcjobjfreelist,
+       GC_gcjdebugobjfreelist): Ditto.
+       * mach_dep.c (GC_save_regs_ret_val): Ditto.
+       * mark.c (GC_n_rescuing_pages, GC_mark_stack, GC_mark_stack_limit,
+       GC_mark_stack_top): Ditto.
+       * misc.c (GC_min_sp, GC_high_water, GC_bytes_allocd_at_reset):
+       Ditto.
+       * os_dep.c (GC_data_start, GC_page_size, GC_sysinfo,
+       GC_old_segv_handler, GC_old_bus_handler,
+       GC_old_bus_handler_used_si, GC_old_segv_handler_used_si,
+       GC_proc_buf, GC_proc_fd, GC_vd_base): Ditto.
+       * pthread_stop_world.c (GC_stop_count, GC_stopping_pid): Ditto.
+       * reclaim.c (GC_leaked): Ditto.
+       * typd_mlc.c (GC_explicit_kind, GC_array_kind, GC_ext_descriptors,
+       GC_typed_mark_proc_index, GC_array_mark_proc_index,
+       GC_eobjfreelist, GC_arobjfreelist): Ditto.
+       * win32_threads.c (GC_pthread_map_cache, GC_marker_cv,
+       GC_marker_Id): Ditto.
+       * dbg_mlc.c (GC_smashed, GC_n_smashed): Define as STATIC.
+       * gcj_mlc.c (GC_gcjdebugobjfreelist): Ditto.
+       * os_dep.c (GC_vd_base): Ditto.
+       * pthread_support.c (GC_mark_threads): Ditto.
+       * reclaim.c (GC_leaked): Ditto.
+       * typd_mlc.c (GC_bm_table): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val): Change declaration type to
+       that of definition; add "defined in" comment.
+       * mark_rts.c (GC_push_current_stack): Remove unnecessary cast for
+       GC_save_regs_ret_val.
+       * misc.c (GC_check_heap, GC_print_all_smashed,
+       GC_start_call_back): Remove unnecessary cast (of 0).
+       * misc.c (GC_LARGE_ALLOC_WARN_INTERVAL): New tuning macro.
+       * misc.c (GC_large_alloc_warn_interval): Initialize to
+       GC_LARGE_ALLOC_WARN_INTERVAL value.
+       * misc.c (GC_tmp): Change to "static".
+       * os_dep.c (GC_setpagesize): Reformat the code (collapse multiple
+       function definitions).
+       * os_dep.c (GC_mprotect_state): Define as static.
+       * pthread_support.c (dummy_thread_local): Prefix with "GC_".
+       * win32_threads.c (WinMain): Remove FIXME for WinCE.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru> (really Hans Boehm)
+
+       * os_dep.c (PROTECT, UNPROTECT): Use distinct ABORT messages.
+
+2009-09-30  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Rewrite the tests for external or internal
+       libatomic_ops.
+       * configure.ac: In particular, drop the symbolic links. Add option
+       --with-libatomic-ops for forced selection.
+       * Makefile.am: Adjust the path of source files from libatomic_ops
+       to not use the links.
+       * Makefile.am (libgc_la_LIBADD): Add $(ATOMIC_OPS_LIBS). This will
+       be empty if we use the bundled AO sources.
+       * configure: Regenerate.
+       * Makefile.in: Ditto.
+
+2009-09-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.am: Strip version suffix for libatomic_ops directory.
+       * build_atomic_ops.sh: Ditto.
+       * build_atomic_ops.sh.cygwin: Ditto.
+       * configure_atomic_ops.sh: Ditto.
+       * Makefile.direct: Remove AO_VERSION definition; strip version
+       suffix for libatomic_ops directory.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * Makefile.in: Regenerate.
+
+2009-09-29  Ivan Maidanski <ivmai@mail.ru>
+
+       * libatomic_ops: Rename from "libatomic_ops-1.2".
+
+2009-09-28  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_version): Add "const" keyword.
+       * alloc.c (GC_get_version): New public function.
+       * include/gc.h (GC_get_version): New function declaration; update
+       the comment for the GC version.
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_locks.h (GC_allocate_ml, GC_lock_holder,
+       GC_collecting, GC_mark_lock_holder, GC_need_to_lock): Use "extern"
+       (for the global variable declaration) again.
+       * include/private/gc_pmark.h (GC_n_mark_procs, GC_mark_stack_size,
+       GC_mark_stack_limit, GC_mark_stack_top, GC_mark_stack,
+       GC_mark_stack_too_small, GC_mark_state): Ditto.
+       * include/private/gcconfig.h (GC_register_stackbottom): Ditto.
+       * include/private/pthread_support.h (GC_threads,
+       GC_thr_initialized, GC_in_thread_creation): Ditto.
+       * include/private/gc_priv.h: Ditto (for all global variables).
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * real_malloc.c: Include private/config.h if HAVE_CONFIG_H.
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_hblkfreelist): Define as STATIC.
+       * blacklst.c (GC_total_stack_black_listed): Ditto.
+       * include/private/gc_priv.h (GC_hblkfreelist, GC_stopped_mark,
+       GC_total_stack_black_listed, GC_push_stubborn_structures): Remove
+       declaration.
+       * mark_rts.c (GC_stopped_mark): Add declaration (only if
+       THREAD_LOCAL_ALLOC).
+       * allchblk.c (GC_fail_count): Move the declaration out of
+       GC_allochblk_nth(); remove "extern".
+       * alloc.c (IF_THREADS): Remove unused macro.
+       * alloc.c (GC_world_stopped): Define only if THREAD_LOCAL_ALLOC.
+       * alloc.c (GC_stopped_mark): Set GC_world_stopped value only if
+       THREAD_LOCAL_ALLOC.
+       * alloc.c (GC_bytes_found, GC_collection_in_progress,
+       GC_check_tls, GC_unmap_threshold, GC_force_unmap_on_gcollect):
+       Remove K&R-style "extern" for the declaration.
+       * dbg_mlc.c (GC_free_inner): Ditto.
+       * dyn_load.c (GC_repeat_read, GC_roots_present, GC_is_heap_base,
+       GC_get_next_stack, GC_no_win32_dlls, GC_wnt): Ditto.
+       * finalize.c (GC_fail_count): Ditto.
+       * include/private/gc_hdrs.h (GC_hdr_cache_hits,
+       GC_hdr_cache_misses): Ditto.
+       * include/private/gc_locks.h (GC_allocate_ml, GC_lock_holder,
+       GC_lock, GC_collecting, GC_mark_lock_holder, GC_need_to_lock):
+       Ditto.
+       * include/private/gc_pmark.h (GC_mark_procs, GC_n_mark_procs,
+       GC_mark_stack_size, GC_mark_stack_limit, GC_mark_stack_top,
+       GC_mark_stack, GC_mark_stack_too_small, GC_mark_state): Ditto.
+       * include/private/gc_priv.h (GC_current_warn_proc, GC_obj_kinds,
+       GC_n_kinds, GC_fo_entries, GC_n_heap_sects, GC_n_memory,
+       GC_page_size, GC_sysinfo, GC_black_list_spacing,
+       GC_objects_are_marked, GC_incremental, GC_dirty_maintained,
+       GC_root_size, GC_debugging_started, GC_large_alloc_warn_interval,
+       GC_large_alloc_warn_suppressed, GC_blocked_sp,
+       GC_activation_frame, GC_push_other_roots,
+       GC_push_finalizer_structures, GC_push_thread_structures,
+       GC_push_typed_structures, GC_start_call_back, GC_is_initialized,
+       GC_check_heap, GC_print_all_smashed, GC_print_all_errors,
+       GC_print_heap_obj, GC_have_errors, GC_print_stats,
+       GC_dump_regularly, GC_backtraces, GC_print_back_height,
+       GC_debug_generic_malloc_inner,
+       GC_debug_generic_malloc_inner_ignore_off_page,
+       GC_fl_builder_count, GC_mark_no, GC_help_marker,
+       GC_setup_temporary_fault_handler, GC_reset_fault_handler): Ditto.
+       * include/private/gcconfig.h (GC_SysVGetDataStart,
+       GC_FreeBSDGetDataStart, GC_register_stackbottom,
+       GC_MacTemporaryNewPtr, GC_amiga_get_mem): Ditto.
+       * include/private/pthread_support.h (GC_threads,
+       GC_thr_initialized, GC_in_thread_creation): Ditto.
+       * malloc.c (GC_text_mapping): Ditto.
+       * mallocx.c (GC_bytes_found): Ditto.
+       * mark.c (GC_check_dirty, GC_started_thread_while_stopped): Ditto.
+       * mark_rts.c (GC_save_regs_ret_val): Ditto.
+       * misc.c (GC_clear_stack_inner, GC_init_parallel, GC_init_win32,
+       GC_setpagesize, GC_init_linux_data_start,
+       GC_set_and_save_fault_handler, GC_unmap_threshold): Ditto.
+       * os_dep.c (GC_unmap_threshold, GC_push_all_stacks,
+       GC_darwin_register_mach_handler_thread): Ditto.
+       * pthread_support.c (GC_markers, GC_collection_in_progress):
+       Ditto.
+       * tests/test.c (GC_amiga_free_all_mem): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist,
+       GC_gcj_malloc_initialized, GC_gcj_kind): Ditto.
+       * win32_threads.c (GC_write_fault_handler, GC_gww_dirty_init,
+       GC_fault_handler_lock, GC_write_cs, GC_markers): Ditto.
+       * misc.c (GC_read, GC_register_finalizer_no_order, GC_init_dyld):
+       Move the declaration out of GC_init(); remove "extern".
+       * os_dep.c (GC_abort): Add the comment; add workaround to suppress
+       compiler "unreachable code" warnings for ABORT callers (where
+       ABORT is followed by a dummy return statement).
+       * os_dep.c (GC_old_allocator): Move the declaration out of
+       GC_default_push_other_roots(); remove "extern".
+       * darwin_stop_world.c (GC_mprotect_stop, GC_mprotect_resume):
+       Move the declaration out of GC_stop_world() and GC_start_world()
+       (only if MPROTECT_VDB); remove "extern".
+
+2009-09-27  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_get_stack_min, GC_push_stack_for,
+       GC_get_next_stack): Recognize _WIN32_WCE_EMULATION macro (used for
+       WinCE emulation and for custom WinCE 6 devices); add the comment.
+       * win32_threads.c (GC_get_stack_min): Cast pointer to word instead
+       of DWORD.
+       * win32_threads.c (GC_get_next_stack): Don't use and maintain the
+       latest known stack_min value for WinCE (if GC_get_stack_min is
+       defined as a macro); update the comments.
+       * win32_threads.c (GC_wnt): Don't declare for WinCE.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct: Document EMPTY_GETENV_RESULTS.
+       * gcj_mlc.c (GC_clear_stack): Remove declaration.
+       * malloc.c (GC_clear_stack): Ditto.
+       * mallocx.c (GC_clear_stack): Ditto.
+       * typd_mlc.c (GC_clear_stack): Ditto.
+       * gcj_mlc.c (GENERAL_MALLOC, GENERAL_MALLOC_IOP): Rename to
+       GENERAL_MALLOC_INNER and GENERAL_MALLOC_INNER_IOP, respectively;
+       remove "lb" unnecessary cast to word.
+       * include/private/gc_priv.h (GC_clear_stack): Add declaration.
+       * include/private/gc_priv.h (GENERAL_MALLOC, GENERAL_MALLOC_IOP):
+       Move common declaration from typd_mlc.c and malloc.c; remove
+       unnecessary result and "lb" parameter casts.
+       * include/private/thread_local_alloc.h: Guard against duplicate
+       header file inclusion.
+       * os_dep.c (USE_MUNMAP): Replace "-->" with an error directive for
+       the case when USE_MMAP is not defined.
+       * pthread_support.c (GC_is_thread_tsd_valid): New internal
+       function (only if GC_ASSERTIONS and THREAD_LOCAL_ALLOC); move the
+       code from thread-local GC_malloc(); add FIXME for the condition.
+       * win32_threads.c (GC_is_thread_tsd_valid): Ditto.
+       * thread_local_alloc.c (GC_gcjobjfreelist): Change the type (to
+       match that of its definition).
+       * thread_local_alloc.c (GC_destroy_thread_local): Add a cast for
+       GC_gcjobjfreelist.
+       * thread_local_alloc.c (GC_lookup_thread, GC_lookup_thread_inner):
+       Remove unused declaration; don't include pthread.h.
+       * thread_local_alloc.c (GC_is_thread_tsd_valid): New declaration
+       (only if GC_ASSERTIONS).
+       * thread_local_alloc.c (GC_malloc): Use GC_is_thread_tsd_valid()
+       instead of GC_lookup_thread().
+       * win32_threads.c (GC_lookup_thread_inner): Define as STATIC.
+       * win32_threads.c (UNPROTECT): Rename to UNPROTECT_THREAD (to have
+       id different from that in os_dep.c).
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_enough_large_bytes_left): Replace "inline static"
+       with GC_INLINE.
+       * include/private/gc_priv.h (fixed_getenv): Ditto.
+       * alloc.c (GC_max, GC_min): Replace "static INLINE" with
+       GC_INLINE.
+       * mark_rts.c (rt_hash): Ditto.
+       * win32_threads.c (GC_get_max_thread_index): Ditto.
+       * include/private/gc_priv.h (INLINE): Prefix with "GC_"; include
+       "static"; define for Sun CC; define for VC++ (and other
+       compilers).
+       * pthread_support.c: Don't define __inline__ for non-GNU compilers
+       (not needed anymore).
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * NT_THREADS_MAKEFILE: Remove file (since it duplicates gc.mak).
+       * Makefile.in: Remove reference to NT_THREADS_MAKEFILE.
+       * Makefile.am: Ditto.
+       * Makefile.dj: Ditto.
+       * Makefile.direct: Ditto.
+       * doc/README.win32: Add reference to gc.mak.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.in: Regenerate (by autoreconf -vif).
+       * aclocal.m4: Ditto.
+       * compile: Ditto.
+       * config.guess: Ditto.
+       * config.sub: Ditto.
+       * configure: Ditto.
+       * depcomp: Ditto.
+       * install-sh: Ditto.
+       * ltmain.sh: Ditto.
+       * missing: Ditto.
+       * mkinstalldirs: Ditto.
+       * include/private/config.h.in: New file (generated).
+       * Makefile.direct: Remove references to acinclude.m4, libtool.m4.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * autogen.sh: Update.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * Makefile.am: Don't add libtool.m4 to EXTRA_DIST.
+       * acinclude.m4: Fix underquoting of GC_SET_VERSION.
+       * README.QUICK: Update information for Makefile.
+       * Makefile.am: Do not distribute the substituted bdw-gc.pc.
+       * configure.ac: Add AM conditional analog to KEEP_BACK_PTRS.
+       * tests/tests.am: Use it here to conditionally enable tracetest
+       when possible.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * dyn_load.c (GC_wnt): Update the comment.
+       * dyn_load.c (GC_register_dynamic_libraries): Add the comment for
+       _WIN32_WCE_EMULATION; recognize GC_REGISTER_MEM_PRIVATE (new
+       macro); call GC_is_heap_base() only if check for Type succeeded.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * mark_rts.c (GC_is_tmp_root): Don't define unless NO_DEBUGGING;
+       update the comment.
+       * include/private/gc_priv.h (GC_is_tmp_root): Remove declaration.
+
+2009-09-26  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c: Expand all tabs to spaces; remove trailing spaces at
+       EOLn; remove multiple trailing blank lines.
+       * misc.c: Ditto.
+       * os_dep.c: Ditto.
+       * pthread_support.c: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * include/private/gcconfig.h: Ditto.
+
+2009-09-25  Hans Boehm <Hans.Boehm@hp.com>
+
+       * include/private/gcconfig.h (CANCEL_SAFE, IF_CANCEL): new macros.
+       * include/private/gc_priv.h (DISABLE_CANCEL, RESTORE_CANCEL,
+       ASSERT_CANCEL_DISABLED): New macros.
+       * alloc.c (GC_maybe_gc): Assert cancellation disabled.
+       (GC_collect_a_little_inner,GC_try_to_collect, GC_collect_or_expand):
+       Disable cancellation.
+       (GC_add_to_our_memory): Check for overflow.
+       * misc.c (GC_cancel_disable_count): declare.
+       (GC_init, GC_write): Disable cancellation.
+       (GC_init): Remove redundant GC_is_initialized test.
+       * os_dep.c (GC_repeat_read): Assert cancellation disabled.
+       (GC_get_stack_base): Disable cancellation.
+       * pthread_stop_world.c (GC_suspend_handler_inner): Disable
+       cancellation.
+       * pthread_support.c (GC_mark_thread): Permanently disable
+       cancellation.
+       (GC_wait_for_gc_completion, GC_wait_builder, GC_wait_marker):
+       Assert cancellation disabled.
+       (fork handling): Disable cancellation, fix comment.
+       (GC_pthread_create): Disable cancellation.
+       (GC_unregister_my_thread): Disable cancellation.
+       * Makefile.direct: Document NO_CANCEL_SAFE.
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile: Remove outdated file (Makefile.direct should be used
+       instead).
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c: Reformat the code (make indentation and
+       opening bracket style uniform across the file; wrap long code and
+       comment lines).
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/gc.h (GC_use_DllMain): Refine (and reformat) the
+       comment.
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru> (really mostly Petter Urkedal)
+
+       * configure.ac: Add documentation to AC_DEFINE for GC_THREADS and
+       EMPTY_GETENV_RESULTS.
+       * configure.ac: Fix a typo.
+       * Makefile.am: Ditto.
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru>
+
+       * checksums.c (GC_checksum, GC_update_check_page): Remove
+       "register" keyword in local variable declarations (for the code
+       used only for debugging or which is not time-critical).
+       * dbg_mlc.c (GC_has_other_debug_info, GC_store_debug_info,
+       GC_store_debug_info_inner, GC_check_annotated_obj, GC_print_obj,
+       GC_print_smashed_obj, GC_debug_end_stubborn_change,
+       GC_debug_invoke_finalizer): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Ditto.
+       * mallocx.c (GC_realloc): Ditto.
+       * mark_rts.c (GC_print_static_roots, GC_is_static_root,
+       GC_clear_roots): Ditto.
+       * misc.c (GC_write): Ditto.
+       * os_dep.c (GC_print_callers): Ditto.
+       * dyn_load.c (GC_register_dynamic_libraries): Rename "i" local
+       variable to "j" for the nested loop (just not to hide the similar
+       variable in the outer one).
+       * mark_rts.c (GC_print_static_roots): Output an error message
+       using GC_err_printf() (instead of GC_printf()).
+
+2009-09-25  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+
+       * configure.ac: Move include flag from ${INCLUDE} ...
+       * Makefile.am: ... to AM_CPPFLAGS and also add the build directory.
+       * configure.ac: Call AM_CONFIG_HEADER([include/private/config.h]).
+       * configure.ac: Add documentation to all AC_DEFINE either directly
+       or using AH_TEMPLATE.
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * win32_threads.c (GC_waitForSingleObjectInfinite): New static
+       function (only if GC_WINMAIN_REDIRECT).
+       * win32_threads.c (WinMain): Call GC_waitForSingleObjectInfinite()
+       thru GC_do_blocking() instead of calling WaitForSingleObject()
+       directly.
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * pthread_support.c (start_mark_threads): Refine printed message.
+       * win32_threads.c (GC_thr_init): Ditto.
+       * win32_threads.c: Reformat some code pieces (wrap too long code
+       lines).
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai145.diff)
+
+       * Makefile.direct (GC_WINMAIN_REDIRECT): Add the comment for.
+       * Makefile.direct (NO_GETENV): Update the comment.
+       * include/gc.h (GC_WINMAIN_WINCE_LPTSTR): Remove macro.
+       * include/gc.h (GC_WinMain): Remove declaration.
+       * include/gc.h (WinMain): Define (as GC_WinMain) if and only if
+       GC_WINMAIN_REDIRECT.
+       * tests/test.c (GC_COND_INIT): Define as GC_INIT() also in case of
+       WinCE target unless GC_WINMAIN_REDIRECT is defined.
+       * tests/test.c (WINMAIN_LPTSTR): New macro.
+       * tests/test.c (WinMain): Use WINMAIN_LPTSTR instead of LP[W]STR
+       and GC_WINMAIN_WINCE_LPTSTR.
+       * win32_threads.c (start_mark_threads): Add the comment for
+       MARK_THREAD_STACK_SIZE.
+       * win32_threads.c: Recognize new GC_WINMAIN_REDIRECT macro.
+       * win32_threads.c (WINMAIN_LPTSTR, WINMAIN_THREAD_STACK_SIZE): New
+       macro (only if GC_WINMAIN_REDIRECT).
+       * win32_threads.c: Undefine WinMain macro if GC_WINMAIN_REDIRECT.
+       * win32_threads.c (GC_WinMain): Add prototype (only if
+       GC_WINMAIN_REDIRECT).
+       * win32_threads.c (main_thread_args, WinMain): Rename
+       GC_WINMAIN_WINCE_LPTSTR to WINMAIN_LPTSTR.
+       * win32_threads.c (WinMain): Call GC_INIT() instead of GC_init();
+       use WINMAIN_THREAD_STACK_SIZE.
+       * win32_threads.c (WinMain): Call GC_deinit() and
+       DeleteCriticalSection() only if WinCE; add FIXME.
+
+2009-09-24  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_main_stack_base): add assertion for mem_base
+       value returned by GC_get_stack_base().
+
+2009-09-23  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai150.diff)
+
+       * Makefile.direct (MUNMAP_THRESHOLD, GC_FORCE_UNMAP_ON_GCOLLECT):
+       Add the comment for.
+       * alloc.c (GC_unmap_threshold, GC_force_unmap_on_gcollect):
+       Declare external variable (only if USE_MUNMAP).
+       * alloc.c (GC_try_to_collect): Temporarily set GC_unmap_threshold
+       value to 1 if GC_force_unmap_on_gcollect and restore it before
+       unlocking (only if USE_MUNMAP).
+       * doc/README.environment (GC_FORCE_UNMAP_ON_GCOLLECT): Add
+       information for.
+       * include/gc.h (GC_set_force_unmap_on_gcollect,
+       GC_get_force_unmap_on_gcollect): New public function prototype.
+       * include/gc.h (GC_FORCE_UNMAP_ON_GCOLLECT): New macro is
+       recognized.
+       * misc.c (GC_FORCE_UNMAP_ON_GCOLLECT): Ditto.
+       * include/gc.h (GC_INIT_CONF_FORCE_UNMAP_ON_GCOLLECT): New
+       internal macro (used by GC_INIT only).
+       * misc.c (GC_force_unmap_on_gcollect): New global variable.
+       * misc.c (GC_init): Recognize new "GC_FORCE_UNMAP_ON_GCOLLECT"
+       environment variable (and set GC_force_unmap_on_gcollect).
+       * misc.c (GC_set_force_unmap_on_gcollect,
+       GC_get_force_unmap_on_gcollect): New public function.
+       * tests/test.c (window_proc): Call GC_set_force_unmap_on_gcollect
+       to force the mode on if WM_HIBERNATE; restore the mode after
+       GC_gcollect().
+
+2009-09-23  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.direct (LARGE_CONFIG): Update information.
+       * include/gc.h (GC_stop_func): Refine the comment.
+
+2009-09-21  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac: Use EMPTY_GETENV_RESULTS instead of NO_GETENV for
+       Win32 (workaround for Wine bug).
+
+2009-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c (GC_freehblk): Adjust local variables indentation.
+       * mallocx.c (GC_generic_malloc_many): Ditto.
+       * typd_mlc.c (GC_malloc_explicitly_typed_ignore_off_page,
+       GC_calloc_explicitly_typed): Ditto.
+       * typd_mlc.c (GC_make_array_descriptor): Remove unnecessary
+       brackets.
+
+2009-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * configure.ac: Replace GC_WIN32_THREADS with GC_THREADS.
+       * configure.ac: Process enable_parallel_mark option for Cygwin and
+       Win32; define THREAD_LOCAL_ALLOC for Win32.
+
+2009-09-20  Ivan Maidanski <ivmai@mail.ru>
+
+       * include/private/gc_priv.h: Define AO_ASSUME_WINDOWS98 if
+       PARALLEL_MARK (required for VC++ x86).
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai149.diff)
+
+       * dbg_mlc.c (GC_generate_random_backtrace): Call
+       GC_try_to_collect(GC_never_stop_func) instead of GC_gcollect();
+       if GC is disabled then print error message and return.
+       * include/gc.h (GC_try_to_collect): Refine the comment.
+       * include/private/gc_priv.h (GC_never_stop_func): Fix return type;
+       refine the comment.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai147.diff)
+
+       * add_gc_prefix.c: Move the file to the new "extra" directory.
+       * AmigaOS.c: Ditto.
+       * gcname.c: Ditto.
+       * if_mach.c: Ditto.
+       * if_not_there.c: Ditto.
+       * MacOS.c: Ditto.
+       * msvc_dbg.c: Ditto.
+       * setjmp_t.c: Ditto.
+       * threadlibs.c: Ditto.
+       * EMX_MAKEFILE: Prepend setjmp_t.c with "extra" directory.
+       * Makefile: Prepend AmigaOS.c, MacOS.c, add_gc_prefix.c, gcname.c,
+       if_mach.c, if_not_there.c, msvc_dbg.c, setjmp_t.c, threadlibs.c
+       with "extra" directory.
+       * Makefile.am: Ditto.
+       * Makefile.direct: Ditto.
+       * Makefile.dj: Ditto.
+       * Makefile.in: Ditto.
+       * NT_MAKEFILE: Prepend msvc_dbg.obj with "extra" directory.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * NT_THREADS_MAKEFILE: Prepend msvc_dbg.c with "extra" directory.
+       * gc.mak: Ditto.
+       * PCR-Makefile: Prepend if_mach.c, if_not_there.c with "extra"
+       directory.
+       * SMakefile.amiga: Prepend AmigaOS.c, setjmp_t.c with "extra"
+       directory.
+       * doc/simple_example.html: Update for threadlibs.c.
+       * os_dep.c: Prepend included AmigaOS.c with "extra" directory.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * allchblk.c: Expand all tabs to spaces; remove trailing spaces at
+       EOLn; remove multiple trailing blank lines.
+       * mark.c: Ditto.
+       * mark_rts.c: Ditto.
+       * pthread_stop_world.c: Ditto.
+       * win32_threads.c: Ditto.
+       * include/gc.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * pthread_stop_world.c: Add copyright header.
+       * include/gc.h: Reformat some comments.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai130a.diff, ivmai130b.diff - superseding diff44, diff69)
+
+       * include/gc.h (GC_do_blocking, GC_call_with_gc_active): New
+       function prototype.
+       * include/private/gc_priv.h (STOP_WORLD): Replace a no-op (for the
+       single-threaded case) with an assertion check for the state to be
+       not a "do-blocking" one.
+       * include/private/gc_priv.h (blocking_data): Move the structure
+       definition from pthread_support.c; change "fn" return type to void
+       pointer.
+       * include/private/gc_priv.h (GC_activation_frame_s): New structure
+       type.
+       * include/private/gc_priv.h (GC_push_all_stack_frames): New
+       function declaration (only if THREADS).
+       * include/private/gc_priv.h (GC_world_stopped): Don't declare
+       unless THREADS.
+       * include/private/gc_priv.h (GC_blocked_sp,
+       GC_activation_frame_s): New declaration (only if not THREADS).
+       * include/private/gc_priv.h (GC_push_all_register_frames): New
+       function declaration (only for IA-64).
+       * include/private/gc_priv.h (NURSERY, GC_push_proc): Remove
+       obsolete (unused) symbols.
+       * include/private/gc_priv.h (GC_push_all_stack_partially_eager):
+       Remove declaration (since it is static now).
+       * mark_rts.c (GC_push_all_stack_partially_eager): Move from mark.c
+       (for code locality) and make STATIC.
+       * mark_rts.c (GC_push_all_register_frames): New function (only for
+       IA-64).
+       * mark_rts.c (GC_push_all_stack_frames): New function (only if
+       THREADS).
+       * mark_rts.c (GC_add_trace_entry): New function prototype (used by
+       GC_push_all_stack_partially_eager(), only if TRACE_BUF).
+       * mark_rts.c (GC_push_all_stack_part_eager_frames): New function.
+       * mar_rts.c (GC_save_regs_ret_val): Move the declaration out of a
+       function body (only for IA-64).
+       * mark_rts.c (GC_push_current_stack): Call
+       GC_push_all_stack_part_eager_frames() instead of
+       GC_push_all_stack_partially_eager().
+       * mark_rts.c (GC_push_current_stack): Call
+       GC_push_all_register_frames() instead of GC_push_all_eager() for
+       IA-64 backing store.
+       * misc.c (GC_do_blocking_inner): Declare function (if THREADS
+       only).
+       * misc.c (GC_blocked_sp, GC_blocked_register_sp,
+       GC_activation_frame): New global variables (only if not THREADS).
+       * misc.c (GC_call_with_gc_active, GC_do_blocking_inner): New API
+       function (only if not THREADS).
+       * misc.c (GC_do_blocking): Move the function from
+       pthread_support.c.
+       * include/private/pthread_support.h (GC_Thread_Rep): Add
+       "activation_frame" field.
+       * pthread_stop_world.c (GC_push_all_stacks): Call
+       GC_push_all_stack_frames() and GC_push_all_register_frames instead
+       of GC_push_all_stack() and/or GC_push_all_eager(); don't check for
+       STACK_GROWS_UP here.
+       * pthread_support.c (GC_do_blocking_inner): Remove "static"; store
+       "fn" result back to "client_data" field.
+       * pthread_support.c (GC_call_with_gc_active): New API function.
+       * win32_threads.c (GC_call_with_gc_active): Ditto.
+       * win32_threads.c (GC_Thread_Rep): Add "thread_blocked_sp" and
+       "activation_frame" fields.
+       * win32_threads.c (GC_new_thread): Add assertion checking for
+       thread_blocked_sp is NULL.
+       * win32_threads.c (GC_do_blocking_inner): New function.
+       * win32_threads.c (GC_stop_world): Don't suspend a thread if its
+       thread_blocked_sp is non-NULL.
+       * win32_threads.c (GC_push_stack_for): Use thread
+       "activation_frame" (if non-NULL); use "thread_blocked_sp" if
+       non-NULL (instead of calling GetThreadContext()); "UNPROTECT" the
+       thread before modifying its last_stack_min; call
+       GC_push_all_stack_frames() instead of GC_push_all_stack(); update
+       the comments.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai129.diff - superseding diff47)
+
+       * alloc.c (GC_default_stop_func): New static variable (initialized
+       to GC_never_stop_func).
+       * alloc.c (GC_set_stop_func, GC_get_stop_func): New function.
+       * alloc.c (GC_timeout_stop_func): Define as GC_default_stop_func
+       (instead of GC_never_stop_func) if SMALL_CONFIG (or NO_CLOCK),
+       else call GC_default_stop_func() before getting "current_time".
+       * alloc.c (GC_maybe_gc): Expand GC_gcollect_inner() macro (for
+       FIXME comment).
+       * alloc.c (GC_maybe_gc, GC_collect_a_little_inner): add FIXME for
+       replacing GC_never_stop_func with GC_default_stop_func (if
+       possible).
+       * alloc.c (GC_gcollect): Use GC_default_stop_func.
+       * alloc.c (GC_collect_or_expand): Use GC_default_stop_func
+       (instead of GC_never_stop_func) unless it is trigged due to out of
+       memory; don't increment GC_fail_count and don't output warning
+       (before trying to collect again) in case the collection has been
+       interrupted (by GC_default_stop_func) and the heap expansion has
+       failed too.
+       * include/gc.h (GC_set_stop_func, GC_get_stop_func): New function
+       prototypes.
+
+2009-09-19  Ivan Maidanski <ivmai@mail.ru>
+
+       * os_dep.c (GC_get_stack_base): Add FIXME; add assertion for
+       GC_get_writable_length() result.
+
+2009-09-18  Ivan Maidanski <ivmai@mail.ru> (really Ludovic Courtes)
+
+       * configure.ac: Don't use -lpthread -ldl for Cygwin.
+
+2009-09-18  Ivan Maidanski <ivmai@mail.ru>
+
+       * NT_THREADS_MAKEFILE: Make it back equal to gc.mak.
+
+2009-09-18  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai142.diff)
+
+       * include/private/gcconfig.h (GWW_VDB): Undefine if
+       USE_GLOBAL_ALLOC (since incompatible).
+       * os_dep.c (GetWriteWatch_alloc_flag): Define as 0 unless GWW_VDB
+       is defined.
+       * os_dep.c (GC_unmap_threshold): Declare (for use in
+       GC_init_win32) if USE_MUNMAP.
+       * os_dep.c (GC_init_win32): Turn off memory unmapping if
+       GlobalAlloc() is used.
+       * os_dep.c (GC_win32_get_mem): Define and use new
+       VIRTUAL_ALLOC_PAD macro; don't waste a extra memory page unless
+       MPROTECT_VDB is in use.
+
+2009-09-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile: Replace "version.h" with "include/gc_version.h".
+       * include/gc_version.h: Ditto.
+
+2009-09-17  Ivan Maidanski <ivmai@mail.ru>
+
+       * alloc.c (GC_collect_or_expand): Output heap size in WARN()
+       (before returning FALSE) for convenience.
+
+2009-09-17  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai139.diff)
+
+       * allchblk.c (GC_allochblk_nth): Use GC_PRIdPTR in WARN() format
+       string.
+       * pthread_support.c (start_mark_threads, GC_thr_init): Ditto.
+       * win32_threads.c (GC_delete_thread): Ditto.
+       * include/private/gc_priv.h (GC_PRIdPTR): New macro.
+       * pthread_stop_world.c (GC_suspend_handler_inner): Remove
+       unnecessary cast for WARN argument.
+       * pthread_support.c (start_mark_threads): if pthread_create()
+       failed then don't try to create other marker threads and (after
+       printing a warning) adjust GC_markers and GC_parallel values; log
+       GC_markers value (possibly adjusted) after that.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai140.diff)
+
+       * win32_threads.c (start_mark_threads): if pthread_create() is
+       failed then don't try to create other marker threads and (after
+       printing a warning) adjust GC_markers and GC_parallel values.
+       * win32_threads.c (mark_mutex_event, builder_cv, mark_cv): Move
+       the definition upper (to be visible in start_mark_threads()).
+       * win32_threads.c (start_mark_threads): if CreateThread() or
+       _beginthreadex() is failed then don't try to create other marker
+       threads and (after printing a warning) adjust GC_markers,
+       GC_parallel values, and destroy the event objects (either only
+       some for the uncreated threads if DONT_USE_SIGNALANDWAIT or all if
+       not a single thread is created).
+       * win32_threads.c (GC_thr_init): Log GC_markers value (possibly
+       adjusted) after start_mark_threads() call.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * Makefile.am: Back remove "GC_" prefix for PTHREADS,
+       DARWIN_THREADS, WIN32_THREADS (for configure.ac).
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+
+       * ChangeLog: Remove trailing spaces at EOLn; insert blank lines
+       where missed.
+       * doc/README: Expand all tabs to spaces; remove trailing spaces at
+       EOLn; remove multiple trailing blank lines.
+       * doc/README.autoconf: Ditto.
+       * doc/README.DGUX386: Ditto.
+       * doc/README.environment: Ditto.
+       * doc/README.macros: Ditto.
+       * doc/README.win32: Ditto.
+       * tests/test.c: Ditto.
+       * tests/test_cpp.cc: Ditto.
+       * backgraph.c: Ditto.
+       * blacklst.c: Ditto.
+       * checksums.c: Ditto.
+       * darwin_stop_world.c: Ditto.
+       * dbg_mlc.c: Ditto.
+       * dyn_load.c: Ditto.
+       * finalize.c: Ditto.
+       * gc_dlopen.c: Ditto.
+       * gcj_mlc.c: Ditto.
+       * headers.c: Ditto.
+       * mach_dep.c: Ditto.
+       * malloc.c: Ditto.
+       * mallocx.c: Ditto.
+       * new_hblk.c: Ditto.
+       * obj_map.c: Ditto.
+       * ptr_chck.c: Ditto.
+       * real_malloc.c: Ditto.
+       * reclaim.c: Ditto.
+       * stubborn.c: Ditto.
+       * thread_local_alloc.c: Ditto.
+       * typd_mlc.c: Ditto.
+       * gc_cpp.cc: Ditto.
+       * include/gc_allocator.h: Ditto.
+       * include/gc_backptr.h: Ditto.
+       * include/gc_config_macros.h: Ditto.
+       * include/gc_cpp.h: Ditto.
+       * include/gc_gcj.h: Ditto.
+       * include/gc_inline.h: Ditto.
+       * include/gc_mark.h: Ditto.
+       * include/gc_pthread_redirects.h: Ditto.
+       * include/gc_typed.h: Ditto.
+       * include/gc_version.h: Ditto.
+       * include/javaxfc.h: Ditto.
+       * include/new_gc_alloc.h: Ditto.
+       * include/private/darwin_semaphore.h: Ditto.
+       * include/private/dbg_mlc.h: Ditto.
+       * include/private/gc_hdrs.h: Ditto.
+       * include/private/gc_locks.h: Ditto.
+       * include/private/gc_pmark.h: Ditto.
+       * include/private/gcconfig.h: Ditto.
+       * include/private/pthread_support.h: Ditto.
+       * include/private/thread_local_alloc.h: Ditto.
+       * darwin_stop_world.c: Add copyright header.
+       * include/gc_backptr.h: Ditto.
+       * include/gc_config_macros.h: Ditto.
+       * include/gc_pthread_redirects.h: Ditto.
+       * include/gc_version.h: Ditto.
+       * include/javaxfc.h: Ditto.
+       * include/private/darwin_semaphore.h: Ditto.
+       * include/private/pthread_support.h: Ditto.
+       * gc_cpp.cc: Make copyright header uniform across the package.
+       * include/gc_cpp.h: Ditto.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru> (really Petter Urkedal)
+       (gc_config_h_6a.patch with a minor correction)
+
+       * include/private/gc_priv.h: Change include of config.h to
+       private/config.h.
+       * include/private/gc_pmark.h: Ditto.
+       * gc_cpp.cc: Ditto.
+       * tests/test.c: Ditto.
+       * tests/test_cpp.cc: Include private/config.h (if HAVE_CONFIG_H);
+       undefine GC_BUILD.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai128.diff - superseding diff62, diff66 partly)
+
+       * finalize.c (GC_general_register_disappearing_link): Return
+       GC_SUCCESS, GC_DUPLICATE, GC_NO_MEMORY (instead of 0, 1 and 2,
+       respectively).
+       * include/gc.h (GC_NO_MEMORY): New macro (defined as 2).
+       * include/gc.h (GC_register_disappearing_link,
+       GC_general_register_disappearing_link): Update the comment.
+       * typd_mlc.c (GC_calloc_explicitly_typed): Use GC_NO_MEMORY macro.
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_register_finalizer_inner): Recalculate the hash table index
+       after GC_oom_fn succeeded (since the table may grow while not
+       holding the lock) and check again that the entry is still not in
+       the table (free the unused entry otherwise unless DBG_HDRS_ALL).
+       * finalize.c (GC_register_finalizer_inner): Initialize "hhdr"
+       local variable (to prevent a compiler warning).
+       * finalize.c (GC_register_finalizer_inner): Don't modify the data
+       pointed by "ocd" and "ofn" in GC_register_finalizer_inner() failed
+       (due to out of memory).
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai124.diff - superseding diff67 partly)
+
+       * alloc.c (GC_set_fl_marks, GC_clear_fl_marks): Transform loop to
+       suppress compiler "variable might be uninitialized" warnings.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai138.diff)
+
+       * Makefile.direct (DONT_USE_SIGNALANDWAIT): Add the comment for.
+       * win32_threads.c (DONT_USE_SIGNALANDWAIT): Always define for
+       WinCE.
+       * win32_threads.c (THREAD_HANDLE): Cast Id (of DWORD type) to
+       HANDLE thru word type (to avoid a compiler warning) for WinCE.
+       * win32_threads.c (GC_marker_cv, GC_marker_Id): New static array
+       (only if DONT_USE_SIGNALANDWAIT).
+       * win32_threads.c (start_mark_threads): Initialize GC_marker_Id
+       and GC_marker_cv for each helper thread (only if
+       DONT_USE_SIGNALANDWAIT).
+       * win32_threads.c (GC_mark_mutex_state): New static variable (only
+       if DONT_USE_SIGNALANDWAIT).
+       * win32_threads.c (GC_mark_mutex_waitcnt,
+       signalObjectAndWait_func): Don't define if DONT_USE_SIGNALANDWAIT.
+       * win32_threads.c (GC_acquire_mark_lock, GC_release_mark_lock):
+       Use InterlockedExchange() over GC_mark_mutex_state (instead of
+       AO_fetch_and_add()) if DONT_USE_SIGNALANDWAIT.
+       * win32_threads.c (GC_wait_marker, GC_notify_all_marker):
+       Implement wait/broadcast primitives using Win32 multiple events
+       (one for each marker thread) if DONT_USE_SIGNALANDWAIT (instead of
+       using Win32 SignalObjectAndWait).
+       * win32_threads.c (GC_thr_init): Don't declare hK32 local
+       variable, don't check for GC_wnt, and don't initialize
+       signalObjectAndWait_func if DONT_USE_SIGNALANDWAIT.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai127.diff - superseding diff49)
+
+       * alloc.c (GC_finish_collection): Call GC_print_finalization_stats
+       if GC_print_stats (after getting "done_time").
+       * finalize.c (GC_old_dl_entries): New static variable (only if not
+       SMALL_CONFIG).
+       * finalize.c (GC_finalize): Save current GC_dl_entries value (only
+       if not SMALL_CONFIG).
+       * finalize.c (GC_print_finalization_stats): Define if and only if
+       not SMALL_CONFIG; use GC_old_dl_entries value; use GC_log_printf()
+       instead of GC_printf(); use "%lu" (instead of "%u") print format
+       specifier; use unsigned long type for "ready" counter (for LP64
+       targets).
+       * misc.c (GC_dump): No longer call GC_print_finalization_stats()
+       here (since it is called from GC_finish_collection()).
+       * misc.c (STACKBASE): Remove unused macro undef (for NOSYS and
+       ECOS).
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai134.diff)
+
+       * alloc.c (GC_expand_hp): Replace GC_init_inner() call with
+       GC_init() one.
+       * malloc.c (GC_alloc_large, GC_generic_malloc_inner): Ditto.
+       * mallocx.c (GC_generic_malloc_many): Ditto.
+       * misc.c (GC_enable_incremental): Ditto.
+       * alloc.c (GC_expand_hp): Update the comment.
+       * mark.c (GC_obj_kinds): Ditto.
+       * win32_threads.c (GC_allow_register_threads): Ditto.
+       * private/gc_priv.h (GC_init_inner): Remove function declaration.
+       * misc.c (GC_init_inner): Replace with public GC_init().
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai126.diff)
+
+       * gcj_mlc.c (GC_gcj_fake_mark_proc): New static function.
+       * gcj_mlc.c (GC_init_gcj_malloc): If mp is 0 then supply
+       GC_gcj_fake_mark_proc (aborting with the appropriate message)
+       instead.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai125.diff)
+
+       * os_dep.c (GC_wince_get_mem): If VirtualAlloc() returns NULL (due
+       to out of memory) then don't increment GC_n_heap_bases and don't
+       call VirtualAlloc() again (with MEM_COMMIT).
+       * os_dep.c (GC_remap): Abort with a more informatory message if
+       VirtualAlloc() fails due to out of memory; update FIXME.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai132.diff - superseding diff41a, diff64, diff84 partly)
+
+       * Makefile: Fix typo for msvc_dbg.c.
+       * Makefile.direct: Ditto.
+       * Makefile.am: Prefix PTHREADS, DARWIN_THREADS, WIN32_THREADS with
+       "GC_".
+       * Makefile.dj: Don't reference remove files (nursery.c,
+       gc_nursery.h, gc_copy_descr.h).
+       * NT_MAKEFILE: Don't define __STDC__ macro (no longer used).
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * NT_MAKEFILE: Remove unnecessary -DGC_BUILD (since it is always
+       defined in the source files).
+       * NT_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Fix typo for -DGC_NOT_DLL.
+       * NT_STATIC_THREADS_MAKEFILE: Replace GC_WIN32_THREADS with
+       GC_THREADS.
+       * NT_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+       * gc.mak: Ditto.
+       * NT_MAKEFILE: Define _CRT_SECURE_NO_DEPRECATE to suppress the
+       compiler warnings.
+       * NT_STATIC_THREADS_MAKEFILE: Ditto.
+       * NT_X64_STATIC_THREADS_MAKEFILE: Place -D_CRT_SECURE_NO_DEPRECATE
+       before "$*.C" (and "$*.CPP").
+       * NT_X64_THREADS_MAKEFILE: Ditto.
+
+2009-09-16  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai131.diff - superseding diff83, diff84 partly)
+
+       * doc/README.solaris2: Replace GC_SOLARIS_THREADS with GC_THREADS.
+       * doc/README.win32: Replace GC_WIN32_THREADS with GC_THREADS.
+       * doc/README.win64: Add info about mingw-w64; add note for VC++
+       warnings suppression.
+
+2009-09-15  Hans Boehm <Hans.Boehm@hp.com> (Mostly Juan Jose Garcia-Ripoll)
+       (Also similar to, but not the same as, Ivan's diff104_cvs)
+
+       * os_dep.c (GC_forward_exception): Fix logic in several places.
+       (OSX-specific)
+
+2009-09-15  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai137v2.diff)
+
+       * include/private/gc_priv.h (MAX_HEAP_SECTS): Guard with ifndef.
+
+2009-09-14  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai136v2.diff)
+
+       * Makefile.direct: Copy missing information for -DSHORT_DBG_HDRS
+       from Makefile.
+       * Makefile: Remove the information about "define arguments" (which
+       is incomplete and outdated compared to that in Makefile.direct);
+       add help reference to Makefile.direct.
+       * Makefile.dj: Ditto.
+
+2009-09-14  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai135.diff)
+
+       * alloc.c (world_stopped_total_time, world_stopped_total_divisor):
+       Replace "STATIC" with "static" in the definition (since the
+       symbols aren't prefixed with "GC_").
+       * win32_threads.c (marker_sp, marker_bsp, marker_last_stack_min,
+       start_mark_threads, mark_mutex, builder_cv, mark_cv,
+       mark_mutex_event, signalObjectAndWait_func, main_thread_start):
+       Ditto.
+       * pthread_support.c (GC_wait_builder): Define as STATIC.
+       * win32_threads.c (GC_wait_builder): Ditto.
+
+2009-09-14  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai133.diff)
+
+       * misc.c (GC_get_heap_size_inner, GC_get_free_bytes_inner): New
+       API function.
+       * include/gc_pmark.h (GC_get_heap_size_inner,
+       GC_get_free_bytes_inner): New function declaration.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai121.diff)
+
+       * include/gc.h: Recognize __CEGCC__ (as a synonym for _WIN32_WCE).
+       * include/gc_config_macros.h: Ditto.
+       * include/gc.h (GC_MAXIMUM_HEAP_SIZE): Recognize new macro.
+       * include/gc.h (GC_INIT_CONF_MAXIMUM_HEAP_SIZE): New macro (for
+       internal use).
+       * include/gc_config_macros.h: Always include stddef.h if GCC.
+       * include/gc_config_macros.h (GC_API): Define for CeGCC in the
+       same way as for MinGW.
+       * include/gc_config_macros.h (GC_API): Group the definition for
+       all cases together (check for GC_DLL only once).
+       * include/gc_pthread_redirects.h: Group non-Darwin code together.
+       * tests/test.c: Recognize GC_PRINT_VERBOSE_STATS (only if GC_DLL).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (ivmai120a.diff, ivmai120b.diff)
+
+       * Makefile.direct (GC_PTHREADS_PARAMARK, GC_IGNORE_GCJ_INFO,
+       GC_PRINT_VERBOSE_STATS, GC_DONT_EXPAND, GC_INITIAL_HEAP_SIZE,
+       GC_FREE_SPACE_DIVISOR, GC_TIME_LIMIT, GC_FULL_FREQ): Add the
+       comment for.
+       * misc.c (GC_init_inner): Recognize GC_PRINT_VERBOSE_STATS (new
+       macro).
+       * dyn_load.c (GC_wnt): Change definition to TRUE for WinCE; add
+       FIXME and the comment for WinCE.
+       * gcj_mlc.c (GC_init_gcj_malloc): Recognize GC_IGNORE_GCJ_INFO
+       (new macro).
+       * include/gc.h (GC_HAVE_BUILTIN_BACKTRACE): Don't define for VC++
+       WinCE (since backtrace() is unimplemented).
+       * include/private/gc_priv.h (GC_n_heap_bases): Remove declaration
+       (since static).
+       * os_dep.c (GC_n_heap_bases): Define as STATIC; move the
+       definition to be above GC_is_heap_base().
+       * include/private/gcconfig.h: Don't define NOSYS for WinCE on ARM
+       (both for MinGW and CeGCC toolchains).
+       * include/private/gcconfig.h: Recognize __CEGCC__ and
+       __MINGW32CE__ (as synonyms for __WIN32_WCE).
+       * include/private/gcconfig.h: If SH4 then don't set config
+       parameters for SH.
+       * include/private/thread_local_alloc.h (GC_key_create): Don't
+       abort on failures, just return -1 in these cases (this also
+       prevents compilation error for targets where ABORT is defined
+       indirectly as an inline assembler sequence).
+       * mark.c (WRAP_MARK_SOME): Also define for WinCE; add FIXME for
+       the GCC-based cross-compiler.
+       * mark.c (ext_ex_regn, mark_ex_handler): Don't define unless
+       WRAP_MARK_SOME is defined; define also for WinCE case; don't
+       check for _WIN64 (since WRAP_MARK_SOME is undefined for it).
+       * mark.c (GC_mark_some): Use __try/__except also for WinCE; update
+       the comment.
+       * misc.c: Include signal.h after gc_pmark.h included; check for
+       MSWINCE instead of _WIN32_WCE.
+       * misc.c (GC_init_inner): Remove duplicate GC_setpagesize() call.
+       * misc.c: Don't include <crtdbg.h> for WinCE targets.
+       * misc.c (GC_write): Define _MAX_PATH if undefined (workaround for
+       CeGCC toolchain).
+       * misc.c (GC_write): Use OutputDebugStringW() instead of
+       _CrtDbgReport() for WinCE targets.
+       * os_dep.c (GC_least_described_address): Define as STATIC.
+       * os_dep.c (GC_register_data_segments): Fix code indentation.
+       * os_dep.c (GC_wince_get_mem): Initialize "result" local variable
+       (to prevent a compiler warning).
+       * os_dep.c (GC_dirty_init): Add comment for WinCE target.
+       * tests/test.c: Don't include winbase.h directly if GCC for WinCE,
+       include assert.h instead.
+       * tests/test.c (tiny_reverse_test): Define and use
+       TINY_REVERSE_UPPER_VALUE macro (4 if VERY_SMALL_CONFIG else 10);
+       useful for WinCE.
+       * win32_threads.c (GC_Thread_Rep): Don't declare "handle" field
+       for WinCE (since thread Id is used as a "real" thread handle).
+       * win32_threads.c (THREAD_HANDLE): New macro.
+       * win32_threads.c (GC_register_my_thread_inner): Don't recognize
+       DONT_IMPORT_GETCURTHREAD anymore; don't record thread handle on
+       WinCE.
+       * Makefile.direct (DONT_IMPORT_GETCURTHREAD): Remove comment for.
+       * win32_threads.c (UNPROTECT, GC_fault_handler_lock): Don't check
+       for MSWINCE.
+       * win32_threads.c (GC_delete_gc_thread, GC_delete_thread): Don't
+       close thread handle on WinCE (since it's a thread Id).
+       * win32_threads.c (GC_suspend): Don't check for MSWINCE in the
+       MPROTECT-related code (for the case if MPROTECT_VDB would be
+       implemented for WinCE).
+       * win32_threads.c (GC_suspend, GC_start_world, GC_push_stack_for):
+       Use THREAD_HANDLE(t) to obtain thread handle.
+       * win32_threads.c (GC_PTHREADS_PARAMARK): New macro recognized;
+       implicitly define GC_PTHREADS_PARAMARK if GC_PTHREADS; include
+       pthread.h; define NUMERIC_THREAD_ID(id) if undefined yet; replace
+       GC_PTHREADS with GC_PTHREADS_PARAMARK where appropriate (for the
+       parallel mark support).
+       * win32_threads.c (start_mark_threads): Use int type for "i" local
+       variable (instead of "unsigned") to prevent a compiler warning.
+       * win32_threads.c (start_mark_threads): Don't check CreateThread()
+       result for -1; call CloseHandle() for the handle created by
+       CreateThread() (on WinCE); don't use errno (since errno.h is
+       missing on some targets like WinCE) when printing warning on a
+       marker thread creation failure.
+       * win32_threads.c (signalObjectAndWait_func): Define for WinCE.
+       * win32_threads.c (GC_wait_marker): Remove unnecessary assertion
+       for non-zero signalObjectAndWait_func (to make the code compilable
+       for WinCE).
+       * win32_threads.c (GC_thr_init): Allow PARALLEL_MARK for WinCE;
+       use GC_sysinfo to get processors count if WinCE; don't check for
+       SignalObjectAndWait() if WinCE; replace GC_PTHREADS with
+       GC_PTHREADS_PARAMARK.
+       * win32_threads.c (GC_thr_init): Recognize GC_MIN_MARKERS new
+       macro (useful for testing parallel marking on WinCE).
+       * win32_threads.c (GC_win32_start, main_thread_start): Define as
+       STATIC.
+       * win32_threads.c: Don't define main_thread_args,
+       main_thread_start(), WinMain() for WinCE if GC_DLL.
+       * win32_threads.c (WINCE_MAIN_STACK_SIZE): Remove useless macro
+       (since the stack size parameter is ignored on WinCE).
+       * win32_threads.c (main_thread_start): Remove forward declaration;
+       place its definition before WinMain() one.
+       * win32_threads.c (WinMain): Abort if GC_CreateThread() or
+       WaitForSingleObject() failed (for the main thread).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff118_cvs - superseding diff53)
+
+       * allchblk.c (MUNMAP_THRESHOLD): Move macro definition out of
+       a function.
+       * allchblk.c (GC_unmap_threshold): New global variable definition
+       (initialized to MUNMAP_THRESHOLD).
+       * allchblk.c (GC_unmap_old): Use GC_unmap_threshold instead of
+       MUNMAP_THRESHOLD; skip unmapping if GC_unmap_threshold is 0.
+       * doc/README.environment (GC_UNMAP_THRESHOLD): Add information.
+       * misc.c (GC_unmap_threshold): New variable declaration.
+       * misc.c (GC_init_inner): Recognize "GC_UNMAP_THRESHOLD"
+       environment variable to set GC_unmap_threshold value (only if
+       USE_MUNMAP).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff117)
+
+       * dbg_mlc.c (OFN_UNSET): New macro (to detect
+       GC_register_finalizer() failures).
+       * dbg_mlc.c (store_old): Add a check for register_finalizer()
+       failure caused by an out-of-memory event (leave *ofn and *ocd
+       unmodified in that case).
+       * dbg_mlc.c (GC_debug_register_finalizer,
+       GC_debug_register_finalizer_no_order,
+       GC_debug_register_finalizer_unreachable,
+       GC_debug_register_finalizer_ignore_self): Initialize my_old_fn
+       to OFN_UNSET; clear *ocd and *ofn for non-heap objects (the same
+       as in GC_register_finalizer_inner()).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff116a, diff116b, diff116c)
+
+       * Makefile.direct (GC_DLL): Add the comment for.
+       * doc/README.macros: Fix a typo.
+       * doc/README.macros (_DLL, GC_DLL, GC_NOT_DLL): Update info.
+       * doc/README.macros (__STDC__): Remove info.
+       * dbg_mlc.c (GC_get_back_ptr_info, GC_generate_random_heap_address,
+       GC_generate_random_valid_address, GC_print_backtrace,
+       GC_generate_random_backtrace, GC_register_describe_type_fn): Add
+       GC_API and GC_CALL to function definition.
+       * malloc.c (GC_generic_malloc): Ditto.
+       * mallocx.c (GC_incr_bytes_allocd, GC_incr_bytes_freed): Ditto.
+       * mark.c (GC_mark_and_push): Ditto.
+       * misc.c (GC_new_free_list_inner, GC_new_free_list,
+       GC_new_kind_inner, GC_new_kind, GC_new_proc_inner, GC_new_proc):
+       Ditto.
+       * include/gc_backptr.h (GC_get_back_ptr_info,
+       GC_generate_random_heap_address, GC_generate_random_valid_address,
+       GC_generate_random_backtrace, GC_print_backtrace): Add GC_API and
+       GC_CALL to function prototype.
+       * include/gc_mark.h (GC_mark_and_push, GC_new_free_list,
+       GC_new_free_list_inner, GC_new_kind, GC_new_kind_inner,
+       GC_new_proc, GC_new_proc_inner, GC_generic_malloc,
+       GC_register_describe_type_fn): Ditto.
+       * include/new_gc_alloc.h (GC_incr_bytes_allocd, GC_incr_mem_freed,
+       GC_generic_malloc_words_small): Ditto.
+       * gc_cpp.cc: Include "config.h" (if HAVE_CONFIG_H defined).
+       * include/private/gc_pmark.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * tests/test.c: Ditto.
+       * gc_cpp.cc: Define GC_BUILD.
+       * include/private/gc_pmark.h: Ditto.
+       * include/private/gc_priv.h: Ditto.
+       * gc_dlopen.c (WRAP_FUNC, REAL_FUNC): New macro.
+       * gc_dlopen.c (dlopen): Add GC_API to the wrapper function
+       definition.
+       * pthread_support.c (GC_pthread_create, GC_pthread_sigmask,
+       GC_pthread_join, GC_pthread_detach, pthread_sigmask, pthread_join,
+       pthread_detach, pthread_create): Ditto.
+       * win32_threads.c (GC_pthread_join, GC_pthread_create,
+       GC_pthread_sigmask, GC_pthread_detach): Ditto.
+       * gc_dlopen.c (dlopen): Use WRAP_FUNC and REAL_FUNC macros.
+       * include/gc_backptr.h: Include "gc.h".
+       * include/gc_backptr.h: Use extern "C" for the exported functions.
+       * include/gc_mark.h: Ditto.
+       * include/gc_config_macros.h (GC_THREADS): Define the macro if any
+       GC_XXX_THREADS is defined.
+       * include/gc_config_macros.h (_PTHREADS, _POSIX4A_DRAFT10_SOURCE):
+       Move the definitions below the place where GC_NETBSD_THREADS and
+       GC_DGUX386_THREADS are defined.
+       * include/gc_config_macros.h (GC_DLL): Don't define (even if _DLL
+       is defined) for GCC.
+       * include/gc_config_macros.h (GC_API): Define for Cygwin (in the
+       same way as for VC++); define for GCC v4+ (other than already
+       recognized MinGW/Cygwin) as a "default" visibility attribute if
+       GC_DLL is defined.
+       * include/gc_config_macros.h (GC_ATTR_MALLOC, GC_ATTR_ALLOC_SIZE):
+       New macro.
+       * include/gc.h (GC_malloc, GC_malloc_atomic, GC_strdup,
+       GC_malloc_uncollectable, GC_malloc_stubborn, GC_memalign,
+       GC_malloc_atomic_uncollectable, GC_malloc_ignore_off_page,
+       GC_malloc_atomic_ignore_off_page, GC_debug_malloc,
+       GC_debug_malloc_atomic, GC_debug_strdup,
+       GC_debug_malloc_uncollectable, GC_debug_malloc_stubborn,
+       GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page,
+       GC_debug_malloc_replacement): Add GC_ATTR_MALLOC attribute.
+       * include/gc_gcj.h (GC_gcj_malloc, GC_debug_gcj_malloc,
+       GC_gcj_malloc_ignore_off_page): Ditto.
+       * include/gc.h (GC_malloc, GC_malloc_atomic,
+       GC_malloc_uncollectable, GC_malloc_stubborn,
+       GC_malloc_atomic_uncollectable, GC_malloc_ignore_off_page,
+       GC_malloc_atomic_ignore_off_page, GC_debug_malloc,
+       GC_debug_malloc_atomic, GC_debug_malloc_uncollectable,
+       GC_debug_malloc_stubborn, GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page,
+       GC_debug_malloc_replacement: Add GC_ATTR_ALLOC_SIZE attribute
+       (for the first argument).
+       * include/gc_gcj.h (GC_gcj_malloc, GC_debug_gcj_malloc,
+       GC_gcj_malloc_ignore_off_page): Ditto.
+       * include/gc.h (GC_memalign, GC_realloc, GC_debug_realloc,
+       GC_debug_realloc_replacement): Add GC_ATTR_ALLOC_SIZE attribute
+       (for the second argument).
+       * include/gc.h (GC_malloc, GC_malloc_atomic, GC_strdup,
+       GC_malloc_uncollectable, GC_malloc_stubborn, GC_memalign,
+       GC_malloc_atomic_uncollectable, GC_free, GC_base, GC_size,
+       GC_realloc, GC_expand_hp, GC_set_max_heap_size,
+       GC_exclude_static_roots, GC_add_roots, GC_remove_roots,
+       GC_register_displacement, GC_debug_register_displacement,
+       GC_try_to_collect, GC_malloc_ignore_off_page,
+       GC_malloc_atomic_ignore_off_page, GC_debug_malloc,
+       GC_debug_malloc_atomic, GC_debug_strdup,
+       GC_debug_malloc_uncollectable, GC_debug_malloc_stubborn,
+       GC_debug_malloc_ignore_off_page,
+       GC_debug_malloc_atomic_ignore_off_page, GC_debug_free,
+       GC_debug_realloc, GC_debug_malloc_replacement,
+       GC_debug_realloc_replacement, GC_finalization_proc,
+       GC_register_finalizer, GC_debug_register_finalizer,
+       GC_register_finalizer_ignore_self,
+       GC_debug_register_finalizer_ignore_self,
+       GC_register_finalizer_no_order,
+       GC_debug_register_finalizer_no_order,
+       GC_register_finalizer_unreachable,
+       GC_debug_register_finalizer_unreachable,
+       GC_register_disappearing_link,
+       GC_general_register_disappearing_link,
+       GC_unregister_disappearing_link, GC_noop1, GC_warn_proc,
+       GC_set_warn_proc, GC_ignore_warn_proc, GC_fn_type,
+       GC_call_with_alloc_lock, GC_stack_base_func,
+       GC_call_with_stack_base, GC_same_obj, GC_pre_incr, GC_post_incr,
+       GC_is_visible, GC_is_valid_displacement, GC_same_obj_print_proc,
+       GC_is_valid_displacement_print_proc, GC_is_visible_print_proc,
+       GC_malloc_many, GC_CreateThread, GC_beginthreadex,
+       GC_endthreadex): Comment out (or remove if single and meaningless)
+       function argument names (to avoid identifiers out of the name
+       space).
+       * include/gc_gcj.h (GC_init_gcj_malloc, GC_gcj_malloc,
+       GC_debug_gcj_malloc, GC_gcj_malloc_ignore_off_page): Ditto.
+       * include/gc.h (GC_try_to_collect): Update the comment.
+       * include/gc.h (GC_size, GC_register_my_thread): Add const
+       qualifier for the argument referent.
+       * misc.c (GC_size): Ditto.
+       * pthread_support.c (GC_register_my_thread_inner,
+       GC_register_my_thread): Ditto.
+       * win32_threads.c (GC_register_my_thread_inner,
+       GC_register_my_thread): Ditto.
+       * include/gc.h (GC_INIT_CONF_ROOTS): New macro for internal use
+       (define instead of GC_INIT() for Cygwin and AIX).
+       * include/gc.h (GC_DONT_EXPAND, GC_MAX_RETRIES,
+       GC_FREE_SPACE_DIVISOR, GC_FULL_FREQ, GC_TIME_LIMIT, GC_IGNORE_WARN,
+       GC_INITIAL_HEAP_SIZE): Recognize new macro.
+       * include/gc.h (GC_INIT_CONF_DONT_EXPAND, GC_INIT_CONF_MAX_RETRIES,
+       GC_INIT_CONF_FREE_SPACE_DIVISOR, GC_INIT_CONF_FULL_FREQ,
+       GC_INIT_CONF_TIME_LIMIT, GC_INIT_CONF_IGNORE_WARN,
+       GC_INIT_CONF_INITIAL_HEAP_SIZE): New macro for internal use.
+       * include/gc.h (GC_INIT): Use GC_INIT_CONF_XXX macros.
+       * include/gc_mark.h: Prefix GC_H with '_'.
+       * include/gc_mark.h (GC_least_plausible_heap_addr,
+       GC_greatest_plausible_heap_addr, GC_debug_header_size): Use GC_API
+       for the public variable declaration.
+       * include/new_gc_alloc.h (GC_objfreelist_ptr, GC_aobjfreelist_ptr,
+       GC_uobjfreelist_ptr, GC_auobjfreelist_ptr): Ditto.
+       * include/gc_pthread_redirects.h (GC_pthread_create,
+       GC_pthread_sigmask, GC_dlopen, GC_pthread_join, GC_pthread_detach):
+       Use GC_API for the wrapper prototype.
+       * include/gc_pthread_redirects.h (pthread_create, pthread_join,
+       pthread_detach, pthread_sigmask, dlopen): Undefine unconditionally
+       before redirecting.
+       * include/new_gc_alloc.h: Replace GC_incr_mem_freed() with
+       GC_incr_bytes_freed(); remove FIXME.
+       * include/private/gc_priv.h (GC_make_closure,
+       GC_debug_invoke_finalizer, GC_noop): Remove GC_API for the private
+       function.
+       * tests/test.c (GC_print_stats): Handle GC_DLL case regardless of
+       the target.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff115)
+
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_register_finalizer_inner): Remove unnecessary "ifdef THREADS"
+       guard for LOCK/UNLOCK().
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_register_finalizer_inner): Get GC_oom_fn value before releasing
+       the lock (to prevent data races).
+       * gcj_mlc.c (GC_gcj_malloc, GC_debug_gcj_malloc,
+       GC_gcj_malloc_ignore_off_page): Ditto.
+       * mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
+       * include/gc_inline.h (GC_FAST_MALLOC_GRANS): Use GC_get_oom_fn()
+       instead of GC_oom_fn (to prevent data races).
+       * malloc.c (GC_generic_malloc): Ditto.
+       * mallocx.c (GC_memalign): Ditto.
+       * pthread_support.c (pthread_create): Ditto.
+       * gcj_mlc.c (maybe_finalize): Acquire the lock before setting
+       last_finalized_no value to prevent data races.
+       * include/gc.h (GC_gc_no, GC_get_gc_no, GC_oom_fn, GC_set_oom_fn,
+       GC_set_find_leak, GC_set_finalize_on_demand,
+       GC_set_java_finalization, GC_set_finalizer_notifier,
+       GC_set_dont_expand, GC_set_full_freq, GC_set_non_gc_bytes,
+       GC_set_no_dls, GC_set_free_space_divisor, GC_set_max_retries,
+       GC_set_dont_precollect, GC_set_time_limit, GC_warn_proc): Refine
+       the comment.
+       * misc.c (GC_set_oom_fn): Ditto.
+       * include/gc.h (GC_general_register_disappearing_link): Refine the
+       comment (replace "soft" word with "weak").
+       * misc.c (GC_oom_fn, GC_get_gc_no, GC_get_parallel,
+       GC_set_finalizer_notifier, GC_set_find_leak): Add the comment.
+       * misc.c (GC_set_oom_fn, GC_get_oom_fn, GC_set_finalizer_notifier,
+       GC_get_finalizer_notifier): Use LOCK/UNLOCK to prevent data races.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff114a, diff114b, diff114c)
+
+       * dbg_mlc.c: Guard include <errno.h> with ifndef MSWINCE; include
+       "private/dbg_mlc.h" before it.
+       * malloc.c: Ditto.
+       * dbg_mlc.c (GC_debug_strdup): Use memcpy() instead of strcpy()
+       for WinCE (since deprecated); evaluate strlen() only once; don't
+       set errno for WinCE.
+       * malloc.c (GC_strdup): Ditto.
+       * dyn_load.c (GC_wnt): Define as macro (FALSE) for WinCE.
+       * include/gc.h (GC_unregister_my_thread): Refine the comment.
+       * include/gc.h (GC_uintptr_t, GC_beginthreadex, GC_endthreadex):
+       Don't declare for WinCE.
+       * include/gc.h (GC_WINMAIN_WINCE_LPTSTR): New macro (WinCE only).
+       * include/gc.h (GC_WinMain): Remove GC_API.
+       * include/gc.h (GC_WinMain): Use GC_WINMAIN_WINCE_LPTSTR for
+       lpCmdLine.
+       * tests/test.c (GC_WinMain): Ditto.
+       * win32_threads.c (main_thread_args, GC_WinMain): Ditto.
+       * include/gc_config_macros.h (ptrdiff_t): Guard with
+       ifndef _PTRDIFF_T_DEFINED; define _PTRDIFF_T_DEFINED macro.
+       * include/private/gc_locks.h: Guard include "atomic_ops.h" with
+       ifdef GC_PTHREADS (and not GC_WIN32_THREADS).
+       * mark.c: Include "atomic_ops.h" if PARALLEL_MARK.
+       * thread_local_alloc.c: Include "atomic_ops.h" if GC_GCJ_SUPPORT.
+       * win32_threads.c: Include "atomic_ops.h" if MPROTECT_VDB.
+       * include/private/gc_locks.h: Use include "atomic_ops.h" instead
+       of include <atomic_ops.h>.
+       * include/private/gc_priv.h: Ditto.
+       * include/private/gc_locks.h (GC_allocate_ml, GC_need_to_lock):
+       Don't export (replace GC_API to "extern").
+       * win32_threads.c (GC_allocate_ml): Don't export.
+       * include/private/gc_priv.h (DebugBreak): Define as macro for
+       WinCE (if not UNDER_CE and DebugBreak is not defined yet).
+       * include/private/gc_priv.h (UNALIGNED): Rename to UNALIGNED_PTRS
+       (since "UNALIGNED" is defined in winnt.h of WinCE).
+       * mark.c (UNALIGNED): Ditto.
+       * include/private/gcconfig.h (ARM32): Recognize _M_ARM and _ARM_.
+       * include/private/gcconfig.h (ALIGNMENT): Check always defined.
+       * include/private/gcconfig.h: Allow GC_WIN32_THREADS for WinCE.
+       * include/private/thread_local_alloc.h: Define USE_WIN32_SPECIFIC
+       for WinCE (since __declspec(thread) is unsupported).
+       * include/private/thread_local_alloc.h (TLS_OUT_OF_INDEXES):
+       Define for WinCE (if undefined).
+       * malloc.c (GC_malloc): Remove outdated comment about disabling
+       signals.
+       * misc.c: Don't include <tchar.h> (since not used anymore and may
+       break TEXT() macro defined in winnt.h).
+       * misc.c (GC_init_inner): Don't use GetModuleHandle() and
+       InitializeCriticalSectionAndSpinCount() for WinCE.
+       * misc.c (GC_init_inner): Replace GetModuleHandleA() with
+       GetModuleHandle() (and use TEXT() macro controlled by UNICODE).
+       * misc.c (LOG_FILE): Remove unused macro; don't use _T() macro.
+       * misc.c (GC_CreateLogFile): New static function (Win32/WinCE
+       only); move the code from GC_write(); replace GETENV() with
+       GetEnvironmentVariable(); replace CreateFileA() with
+       CreateFile(); use TEXT() macro (for Unicode support); replace
+       strcat() with memcpy() (since deprecated in WinCE).
+       * misc.c (GC_write): Define as STATIC.
+       * win32_threads.c (GC_attached_thread): Ditto.
+       * misc.c (GC_write): Use GC_CreateLogFile().
+       * misc.c: Define vsnprintf macro as StringCchVPrintfA for WinCE.
+       * misc.c (GC_abort): Try to invoke MessageBoxA() dynamically
+       (Win32 only) if DONT_USE_USER32_DLL is defined.
+       * misc.c (GC_abort): Duplicate msg to GC log file (for Win32 and
+       WinCE).
+       * misc.c (GC_abort): Use a more user-friendly abort if
+       NO_DEBUGGING (Win32 only).
+       * os_dep.c: Include "atomic_ops.h" only if MPROTECT_VDB (and
+       THREADS).
+       * os_dep.c (detect_GetWriteWatch): Use TEXT() for GetModuleHandle
+       (for Unicode support); check GetModuleHandle() result.
+       * tests/test.c: Don't define assert for WinCE (since may be
+       redefined by "assert.h" included from libatomic_ops).
+       * tests/test.c (FAIL): Define as ABORT for all targets (except
+       for PCR).
+       * tests/test.c (n_tests): Don't use AO_t.
+       * tests/test.c (check_heap_stats): Don't cast n_tests.
+       * tests/test.c (inc_int_counter): New function (for n_tests atomic
+       incrementation).
+       * tests/test.c (run_one_test): Test GC_memalign() for all targets.
+       * tests/test.c (run_one_test): Avoid unbalanced brackets in
+       #if-#else-#endif blocks.
+       * tests/test.c (run_one_test): Replace AO_fetch_and_add1() and
+       private LOCK/UNLOCK with GC_call_with_alloc_lock(inc_int_counter).
+       * tests/test.c (check_heap_stats): Replace
+       "if (sizeof(char *) > 4)" with "#if CPP_WORDSZ == 64" to suppress
+       "unreachable code" compiler warning.
+       * tests/test.c (WinMain): Set cmd type to LPWSTR (for WinCE
+       "UNDER_CE" mode); else use LPSTR type (for Win32 and WinCE).
+       * tests/test.c (thr_window): Replace "L" string prefix with
+       TEXT().
+       * thread_local_alloc.c: Check THREADS is defined (to prevent other
+       compiler errors and warnings otherwise).
+       * tests/test.c (WinMain): Recognize GC_NO_DLLMAIN macro (for
+       GC_use_DllMain()).
+       * Makefile.direct (GC_NO_DLLMAIN, DONT_IMPORT_GETCURTHREAD): Add
+       the comments for.
+       * win32_threads.c (GC_register_my_thread_inner): Recognize
+       DONT_IMPORT_GETCURTHREAD macro.
+       * win32_threads.c: Recognize GC_NO_DLLMAIN macro (to exclude
+       DllMain support if needed).
+       * win32_threads.c (GC_NO_DLLMAIN): Define implicitly if DllMain
+       thread registration is unsupported for a given configuration.
+       * win32_threads.c (GC_use_DllMain): Update the comment; refine
+       ABORT message.
+       * win32_threads.c (GC_use_DllMain,
+       GC_started_thread_while_stopped, GC_register_my_thread_inner,
+       GC_lookup_thread_inner, GC_delete_gc_thread,
+       GC_allow_register_threads, GC_lookup_pthread,
+       GC_push_thread_structures, GC_stop_world, GC_push_all_stacks):
+       Check for GC_NO_DLLMAIN.
+       * win32_threads.c (GC_Thread_Rep.tm_in_use, GC_attached_thread,
+       DllMain): Don't define if GC_NO_DLLMAIN.
+       * win32_threads.c (GC_stop_world): Declare "i" and "max" local
+       vars only if not GC_NO_DLLMAIN (to suppress compiler warning).
+       * win32_threads.c (GC_mark_thread, start_mark_threads): Use
+       CreateThread() instead of _beginthreadex() for WinCE.
+       * win32_threads.c (MARK_THREAD_STACK_SIZE, WINCE_MAIN_STACK_SIZE):
+       New macros defined (used by start_mark_threads(), WinMain()).
+       * win32_threads.c (GC_thr_init): Exclude parallel-specific code on
+       WinCE for now (since getenv(), GetProcessAffinityMask() and
+       SignalObjectAndWait() are missing on WinCE).
+       * win32_threads.c (GC_thr_init): replace GetModuleHandleA() with
+       GetModuleHandle(); replace CreateEventA() with CreateEvent(); use
+       TEXT() macro (for Unicode support).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff113)
+
+       * include/gc.h (GC_has_static_roots_func): New typedef (user filter
+       callback).
+       * include/gc.h (GC_register_has_static_roots_callback): Use
+       GC_has_static_roots_func type.
+       * dyn_load.c (GC_has_static_roots,
+       GC_register_has_static_roots_callback): Ditto.
+       * dyn_load.c (GC_has_static_roots,
+       GC_register_has_static_roots_callback): Define on all platforms.
+       * dyn_load.c (GC_register_dynlib_callback,
+       GC_register_dynamic_libraries, GC_init_dyld): Replace K&R-style
+       functions definition with the ANSI C one.
+       * dyn_load.c (GC_register_dynlib_callback): Use new local variable
+       "callback" (initialized from GC_has_static_roots) to minimize data
+       races.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr,
+       GC_cond_add_roots): Define as STATIC.
+       * mark_rts.c (GC_remove_roots_inner): Ditto.
+       * dyn_load.c (GC_dyld_image_add): Don't call GC_add_roots() for
+       sections smaller than pointer size (just to avoid acquiring the
+       lock unnecessarily).
+       * dyn_load.c (GC_dyld_name_for_hdr): Define unconditionally (not
+       only for DARWIN_DEBUG).
+       * dyn_load.c (GC_dyld_image_add): Replace GC_add_roots() call with
+       LOCK + GC_add_roots_inner() + UNLOCK.
+       * dyn_load.c (GC_dyld_image_add): Call GC_has_static_roots() user
+       callback (if set) holding the lock; if it returns 0 then don't call
+       GC_add_roots_inner() for that region.
+       * dyn_load.c (GC_register_has_static_roots_callback): Put
+       "callback" value to GC_has_static_roots on all platforms.
+       * dyn_load.c (GC_has_static_roots): Update the comments.
+       * include/gc.h (GC_exclude_static_roots, GC_add_roots,
+       GC_remove_roots, GC_register_has_static_roots_callback): Ditto.
+       * include/private/gc_priv.h (struct roots): Ditto.
+       * include/private/gc_priv.h (GC_remove_roots_inner): Move prototype
+       to mark_rts.c and declare it as STATIC.
+       * include/private/gc_priv.h (GC_exclude_static_roots_inner): New
+       prototype.
+       * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr): Use
+       GC_exclude_static_roots_inner() instead of GC_exclude_static_roots.
+       * misc.c (GC_init_inner): Ditto.
+       * mark_rts.c (GC_exclude_static_roots_inner): New function (move
+       all the code from GC_exclude_static_roots(); add the comment.
+       * mark_rts.c (GC_add_roots_inner, GC_exclude_static_roots_inner):
+       add alignment assertion for the lower bound; add assertion for the
+       lower bound to be less than the upper one.
+       * mark_rts.c (GC_add_roots_inner, GC_exclude_static_roots): Adjust
+       the upper bound (round down to be of a pointer-aligned value);
+       return in case of an empty range.
+       * mark_rts.c (GC_exclude_static_roots): Acquire the lock and call
+       GC_exclude_static_roots_inner().
+       * mark_rts.c (GC_remove_roots): Quickly check the bounds and return
+       in case of a do-nothing case (before acquiring the lock).
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff112)
+
+       * finalize.c (GC_fail_count): New external variable declaration.
+       * finalize.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): New function declarations (if THREADS
+       only).
+       * finalize.c (GC_finalizer_nested, GC_finalizer_skipped): New
+       static global variables (used internally by GC_finalize() and
+       GC_check_finalizer_nested()).
+       * finalize.c (GC_check_finalizer_nested): New static function
+       definition (only if not THREADS, used internally by
+       GC_notify_or_invoke_finalizers() to minimize the probability of
+       a deep recursion when a client finalizer tries to allocate GC
+       memory).
+       * finalize.c (GC_finalize): Reset GC_finalizer_nested value (or
+       call GC_reset_finalizer_nested()) if last heap expansion failed.
+       * finalize.c (GC_notify_or_invoke_finalizers): Access GC_gc_no,
+       GC_finalizer_now, GC_finalize_on_demand, GC_finalizer_notifier,
+       last_finalizer_notification variables holding the lock (to avoid
+       data races).
+       * finalize.c (GC_finalizer_notifier): Add comment.
+       * finalize.c (GC_notify_or_invoke_finalizers): Add "quick" check
+       for an empty finalization queue (only if THREADS and not
+       KEEP_BACK_PTRS/MAKE_BACK_GRAPH).
+       * finalize.c (GC_notify_or_invoke_finalizers): Call
+       GC_check_finalizer_nested() and skip GC_invoke_finalizers() call
+       if appropriate.
+       * include/private/pthread_support.h (GC_Thread_Rep): Add unsigned
+       finalizer_nested and finalizer_skipped fields (for internal use
+       by the multi-threaded GC_check_finalizer_nested()).
+       * win32_threads.c (GC_Thread_Rep): Ditto.
+       * pthread_support.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): New function definitions (the
+       multi-threaded variants of that in finalize.c).
+       * win32_threads.c (GC_reset_finalizer_nested,
+       GC_check_finalizer_nested): Ditto.
+
+2009-09-10  Ivan Maidanski <ivmai@mail.ru>
+       (diff103_cvs - resembling diff78, diff88_cvs, diff99_cvs,
+       diff100_cvs, diff101_cvs, diff102_cvs)
+
+       * alloc.c (GC_stopped_mark): Remove GC_log_printf("") (not needed
+       anymore and GCC produces a warning for it).
+       * alloc.c (GC_stopped_mark): Adjust printf argument type
+       specifier.
+       * backgraph.c: Include dbg_mlc.h before ifdef MAKE_BACK_GRAPH (for
+       the case when the configuration information comes from aconfig
+       file).
+       * checksums.c: Ditto (for gc_priv.h and CHECKSUMS, respectively).
+       * include/gc_allocator.h (GC_ATTR_UNUSED): Use "__unused__"
+       keyword instead of "unused".
+       * include/gc_allocator.h: Fix typos in comments.
+       * thread_local_alloc.c: Ditto.
+       * include/javaxfc.h (GC_finalize_all): Update comment.
+       * include/private/gc_priv.h (GC_API_PRIV): New macro (defined as
+       GC_API and serves only as a marker for the private but exported
+       symbols used by test.c only).
+       * include/private/gc_priv.h (GC_abort, GC_arrays, GC_is_marked,
+       GC_printf, GC_err_printf, GC_log_printf): Replace GC_API decl with
+       GC_API_PRIV one.
+       * include/private/gc_priv.h (GC_fo_entries): Don't export it
+       outside a DLL.
+       * include/private/gc_priv.h (GC_ATTR_FORMAT_PRINTF): New macro
+       designated to check the arguments correctness of printf-like
+       functions (currently works only for GCC v3+).
+       * include/private/gc_priv.h (GC_printf, GC_err_printf,
+       GC_log_printf): Use GC_ATTR_FORMAT_PRINTF attribute.
+
 2009-09-03  Hans Boehm <Hans.Boehm@hp.com> (really Loren J. Rittle)
 
        * dyn_load.c (HAVE_DL_ITERATE_PHDR): Break definition from use.
        Define for FreeBSD 7.0+.
-       
+
 2009-09-02  Hans Boehm <Hans.Boehm@hp.com> (with help from Victor Ivrii and
-                                           others)     
+                                           others)
 
        * mach_dep.c: Don't include ucontext.h with NO_GETCONTEXT.
 
        between blocks.
        (GC_split_block): Remove dead code setting hb_flags.  Add comment.
        (GC_allochblk): Split blocks also in generational-only mode.
-       * os_dep.c (GC_unmap_gap): Dont really use munmap.
+       * os_dep.c (GC_unmap_gap): Don't really use munmap.
 
 2009-08-08  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (Mistakenly omitted from last check-in)
+
        * include/private/gc_priv.h (GC_unmapped_bytes): Define as 0 for
        not USE_MUNMAP case.
 
 2009-08-07  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
-       diff111 (supersedes diff101_cvs which, in turn, resembles diff52, diff75, diff83 partly)
+       diff111 (supersedes diff101_cvs which, in turn, resembles diff52,
+       diff75, diff83 partly)
 
        * Makefile.direct (MARK_BIT_PER_OBJ, PRINT_BLACK_LIST,
        USE_PROC_FOR_LIBRARIES): Fix typo in the comments.
        diff100_cvs (diff51 and diff55, partly)
 
        * pthread_support.c (GC_allow_register_threads): New API function.
-        * win32_threads.c (GC_allow_register_threads): Ditto.
-        * include/gc.h (GC_allow_register_threads): New API prototype.
-        * include/gc.h (GC_register_my_thread, GC_unregister_my_thread):
-        Update the comments.
-        * pthread_support.c (GC_register_my_thread): Check the collector
-        is in the multi-threaded mode.
-        * win32_threads.c (GC_register_my_thread): Ditto.
-       
+       * win32_threads.c (GC_allow_register_threads): Ditto.
+       * include/gc.h (GC_allow_register_threads): New API prototype.
+       * include/gc.h (GC_register_my_thread, GC_unregister_my_thread):
+       Update the comments.
+       * pthread_support.c (GC_register_my_thread): Check the collector
+       is in the multi-threaded mode.
+       * win32_threads.c (GC_register_my_thread): Ditto.
+
 2009-07-10  Hans Boehm <Hans.Boehm@hp.com>
 
        * finalize.c (GC_finalize_all): Always call GC_invoke_finalizers
        instead, following Ivan's original patch.
 
 2009-06-20  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * allchblk.c (GC_allochblk_nth): Add assertion.
        * checksums.c: Add GC_record_fault, GC_was_faulted,
        CC_n_faulted_dirty_errors.
        * os_dep.c (GC_remove_protection): Compute index correctly.
 
 2009-06-12  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc_version.h, configure.ac, doc/README:
        Change to version 7.2alpha3.
        * configure: Regenerate.
 [7.2alpha2]
 
 2009-06-12  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc_version.h, configure.ac, doc/README:
        Change to version 7.2alpha2.
        * configure: Regenerate.
        diff98_cvs(resembling diff3, diff27, diff59, diff61, diff66,
        diff73 partly)
 
-        * dbg_mlc.c (GC_print_smashed_obj): Convert a group of printf()
-        calls into a single one (for output atomicity).
-        * typd_mlc.c (GC_calloc_explicitly_typed): Don't declare and use
-        GC_finalization_failures variable; check the result of
-        GC_general_register_disappearing_link() (for lack of memory)
-        instead.
-        * finalize.c (GC_finalization_failures): Remove unused global
-        variable.
-        * finalize.c (GC_general_register_disappearing_link,
-        GC_general_register_disappearing_link): Don't update the value of
-        GC_finalization_failures (since unused).
-        * include/private/gc_pmark.h (PUSH_ONE_CHECKED_STACK,
-        GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP): The first parameter is of
-        word type now (as FIXUP_POINTER requires numeric argument).
-        * finalize.c (GC_ignore_self_finalize_mark_proc): GC_PUSH_ONE_HEAP
-        requires the first parameter of word type.
-        * mark.c (PUSH_GRANULE): Ditto.
-        * mark.c (GC_push_one, GC_push_all_eager): Ditto (for
-        GC_PUSH_ONE_STACK).
-        * finalize.c (GC_finalize_all): Call GC_invoke_finalizers() or
+       * dbg_mlc.c (GC_print_smashed_obj): Convert a group of printf()
+       calls into a single one (for output atomicity).
+       * typd_mlc.c (GC_calloc_explicitly_typed): Don't declare and use
+       GC_finalization_failures variable; check the result of
+       GC_general_register_disappearing_link() (for lack of memory)
+       instead.
+       * finalize.c (GC_finalization_failures): Remove unused global
+       variable.
+       * finalize.c (GC_general_register_disappearing_link,
+       GC_general_register_disappearing_link): Don't update the value of
+       GC_finalization_failures (since unused).
+       * include/private/gc_pmark.h (PUSH_ONE_CHECKED_STACK,
+       GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP): The first parameter is of
+       word type now (as FIXUP_POINTER requires numeric argument).
+       * finalize.c (GC_ignore_self_finalize_mark_proc): GC_PUSH_ONE_HEAP
+       requires the first parameter of word type.
+       * mark.c (PUSH_GRANULE): Ditto.
+       * mark.c (GC_push_one, GC_push_all_eager): Ditto (for
+       GC_PUSH_ONE_STACK).
+       * finalize.c (GC_finalize_all): Call GC_invoke_finalizers() or
        GC_finalizer_notifier directly, instead
-        of GC_INVOKE_FINALIZERS() to prevent infinite looping.
+       of GC_INVOKE_FINALIZERS() to prevent infinite looping.
        * include/javaxfc.h: Clarify GC_finalize_all comment.
-        * gcj_mlc.c: Include gc_pmark.h before "ifdef GC_GCJ_SUPPORT" (not
-        after) for configuration information.
-        * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Add comment.
-        * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Check "op" local
-        variable for NULL before dereferencing it, return GC_oom_fn() in
-        this case.
-        * typd_mlc.c (GC_malloc_explicitly_typed,
-        GC_malloc_explicitly_typed_ignore_off_page): Transform the code to
-        suppress compiler warning (for uninitialized "lg" variable).
+       * gcj_mlc.c: Include gc_pmark.h before "ifdef GC_GCJ_SUPPORT" (not
+       after) for configuration information.
+       * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Add comment.
+       * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Check "op" local
+       variable for NULL before dereferencing it, return GC_oom_fn() in
+       this case.
+       * typd_mlc.c (GC_malloc_explicitly_typed,
+       GC_malloc_explicitly_typed_ignore_off_page): Transform the code to
+       suppress compiler warning (for uninitialized "lg" variable).
 
 2009-06-12  Hans Boehm <Hans.Boehm@hp.com>
 
 2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        diff97_cvs (resembling diff43, diff51, diff67, diff76, diff83 partly)
 
-        * pthread_support.c (GC_inner_start_routine): Don't release the
-        GC lock between GC_register_my_thread_inner() and
-        GC_init_thread_local() calls (post the "registered" even after
-        calling GC_init_thread_local()).
-        * win32_threads.c (GC_register_my_thread, GC_unregister_my_thread):
-        Use GC_lookup_thread_inner() instead of GC_lookup_thread() and
-        acquire the GC lock only once.
-        * win32_threads.c (GC_thr_init): Call GC_register_my_thread_inner()
-        directly instead of GC_register_my_thread() since I_HOLD_LOCK
-        and our (main) thread is not registered yet (add assertion for it).
-        * win32_threads.c (GC_init_parallel): Call GC_lookup_thread_inner()
-        directly instead of GC_lookup_thread() (since I_HOLD_LOCK).
-        * win32_threads.c (GC_lookup_thread): Remove unused function.
-        * win32_threads.c: Remove "#error GC_DLL untested with Cygwin".
-        * win32_threads.c (GC_win32_dll_threads): Define as FALSE macro
-        also if THREAD_LOCAL_ALLOC or GC_PTHREADS.
-        * win32_threads.c (GC_use_DllMain): Call ABORT also if GC_PTHREADS
-        (for Cygwin).
-        * win32_threads.c (GC_push_stack_for): Add parentheses around "&&"
-        (inside GC_ASSERT) to prevent compiler warning.
-        * win32_threads.c (GC_push_all_stacks): Remove FIXME for
-        PARALLEL_MARK.
-        * win32_threads.c (MAX_MARKERS, GC_markers): Move the definitions
-        to a place before GC_get_next_stack().
-        * win32_threads.c (marker_sp, marker_bsp): New static arrays (same
-        as in pthread_support.c).
-        * win32_threads.c (marker_last_stack_min): New static arrays (the
-        same semantics as for last_stack_min of GC_Thread_Rep).
-        * win32_threads.c (GC_get_next_stack): Handle marker threads.
-        * win32_threads.c (GC_mark_thread): Save the current stack pointer
-        to marker_[b]sp.
-        * win32_threads.c (start_mark_threads): Initialize
-        marker_last_stack_min elements (to "unset" value).
+       * pthread_support.c (GC_inner_start_routine): Don't release the
+       GC lock between GC_register_my_thread_inner() and
+       GC_init_thread_local() calls (post the "registered" even after
+       calling GC_init_thread_local()).
+       * win32_threads.c (GC_register_my_thread, GC_unregister_my_thread):
+       Use GC_lookup_thread_inner() instead of GC_lookup_thread() and
+       acquire the GC lock only once.
+       * win32_threads.c (GC_thr_init): Call GC_register_my_thread_inner()
+       directly instead of GC_register_my_thread() since I_HOLD_LOCK
+       and our (main) thread is not registered yet (add assertion for it).
+       * win32_threads.c (GC_init_parallel): Call GC_lookup_thread_inner()
+       directly instead of GC_lookup_thread() (since I_HOLD_LOCK).
+       * win32_threads.c (GC_lookup_thread): Remove unused function.
+       * win32_threads.c: Remove "#error GC_DLL untested with Cygwin".
+       * win32_threads.c (GC_win32_dll_threads): Define as FALSE macro
+       also if THREAD_LOCAL_ALLOC or GC_PTHREADS.
+       * win32_threads.c (GC_use_DllMain): Call ABORT also if GC_PTHREADS
+       (for Cygwin).
+       * win32_threads.c (GC_push_stack_for): Add parentheses around "&&"
+       (inside GC_ASSERT) to prevent compiler warning.
+       * win32_threads.c (GC_push_all_stacks): Remove FIXME for
+       PARALLEL_MARK.
+       * win32_threads.c (MAX_MARKERS, GC_markers): Move the definitions
+       to a place before GC_get_next_stack().
+       * win32_threads.c (marker_sp, marker_bsp): New static arrays (same
+       as in pthread_support.c).
+       * win32_threads.c (marker_last_stack_min): New static arrays (the
+       same semantics as for last_stack_min of GC_Thread_Rep).
+       * win32_threads.c (GC_get_next_stack): Handle marker threads.
+       * win32_threads.c (GC_mark_thread): Save the current stack pointer
+       to marker_[b]sp.
+       * win32_threads.c (start_mark_threads): Initialize
+       marker_last_stack_min elements (to "unset" value).
 
 2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (diff96_cvs, partly from diff45 and diff75)
 
-        * misc.c (GC_set_oom_fn, GC_set_all_interior_pointers,
-        GC_set_finalize_on_demand, GC_set_java_finalization,
-        GC_set_finalizer_notifier, GC_set_dont_expand, GC_set_full_freq,
-        GC_set_no_dls, GC_set_free_space_divisor, GC_set_max_retries,
-        GC_set_dont_precollect, GC_set_time_limit, GC_set_warn_proc):
-        Change return type to void (these API functions no longer return
-        the old value).
-        * include/gc.h: Ditto (for prototypes).
-        * tests/test.c (main, WinMain, test): Remove explicit cast to void
-        for GC_set_warn_proc().
-        * misc.c (GC_get_oom_fn, GC_get_all_interior_pointers,
-        GC_get_finalize_on_demand, GC_get_java_finalization,
-        GC_get_finalizer_notifier, GC_get_dont_expand, GC_get_full_freq,
-        GC_get_no_dls, GC_get_free_space_divisor, GC_get_max_retries,
-        GC_get_dont_precollect, GC_get_time_limit, GC_get_warn_proc): New
-        API functions (to get the current value of the corresponding R/W
-        public variables).
-        * include/gc.h: Ditto (for prototypes).
-        * include/gc.h (GC_set_warn_proc, GC_set_free_space_divisor):
-        Update the comment.
-        * misc.c (GC_ignore_warn_proc): New API call-back function.
-        * include/gc.h (GC_ignore_warn_proc): Ditto (for the prototype).
-        * misc.c (GC_set_find_leak, GC_get_find_leak, GC_set_non_gc_bytes,
-        GC_get_non_gc_bytes): New API setter and getter functions (for the
-        public GC_find_leak and GC_non_gc_bytes variables, respectively).
-        * include/gc.h: Ditto (for prototypes).
-        * include/gc.h (GC_memalign): Add proto to GC API.
-        * mallocx.c (GC_memalign): Use GC_API, GC_CALL for the definition.
-        * tests/test.c (run_one_test): Test GC_memalign() on Win32 too,
-        remove GC_memalign() proto.
-        * misc.c (GC_write): Use multi-byte (A) variants of Win32
-        GetModuleFileName() and CreateFile().
+       * misc.c (GC_set_oom_fn, GC_set_all_interior_pointers,
+       GC_set_finalize_on_demand, GC_set_java_finalization,
+       GC_set_finalizer_notifier, GC_set_dont_expand, GC_set_full_freq,
+       GC_set_no_dls, GC_set_free_space_divisor, GC_set_max_retries,
+       GC_set_dont_precollect, GC_set_time_limit, GC_set_warn_proc):
+       Change return type to void (these API functions no longer return
+       the old value).
+       * include/gc.h: Ditto (for prototypes).
+       * tests/test.c (main, WinMain, test): Remove explicit cast to void
+       for GC_set_warn_proc().
+       * misc.c (GC_get_oom_fn, GC_get_all_interior_pointers,
+       GC_get_finalize_on_demand, GC_get_java_finalization,
+       GC_get_finalizer_notifier, GC_get_dont_expand, GC_get_full_freq,
+       GC_get_no_dls, GC_get_free_space_divisor, GC_get_max_retries,
+       GC_get_dont_precollect, GC_get_time_limit, GC_get_warn_proc): New
+       API functions (to get the current value of the corresponding R/W
+       public variables).
+       * include/gc.h: Ditto (for prototypes).
+       * include/gc.h (GC_set_warn_proc, GC_set_free_space_divisor):
+       Update the comment.
+       * misc.c (GC_ignore_warn_proc): New API call-back function.
+       * include/gc.h (GC_ignore_warn_proc): Ditto (for the prototype).
+       * misc.c (GC_set_find_leak, GC_get_find_leak, GC_set_non_gc_bytes,
+       GC_get_non_gc_bytes): New API setter and getter functions (for the
+       public GC_find_leak and GC_non_gc_bytes variables, respectively).
+       * include/gc.h: Ditto (for prototypes).
+       * include/gc.h (GC_memalign): Add proto to GC API.
+       * mallocx.c (GC_memalign): Use GC_API, GC_CALL for the definition.
+       * tests/test.c (run_one_test): Test GC_memalign() on Win32 too,
+       remove GC_memalign() proto.
+       * misc.c (GC_write): Use multi-byte (A) variants of Win32
+       GetModuleFileName() and CreateFile().
        * tests/test.c (main): Replace K&R-style function definition with the
        ANSI C one.
 
-2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski and George Talbot)
+2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski and
+                                           George Talbot)
        (diff95_cvs)
+
        * include/private/gcconfig.h (PLATFORM_ANDROID): New macro
-        recognized (for Linux on ARM32 without glibc).
-        * include/private/gcconfig.h (STRTOULL): Define for all targets
-        (define as "strtoul" for most targets except for LLP64/Win64).
-        * misc.c (GC_init_inner): Use STRTOULL instead of atoi/atol()
-        (cast the result to word type) to decode values of "GC_TRACE",
-        "GC_INITIAL_HEAP_SIZE", "GC_MAXIMUM_HEAP_SIZE" environment vars.
+       recognized (for Linux on ARM32 without glibc).
+       * include/private/gcconfig.h (STRTOULL): Define for all targets
+       (define as "strtoul" for most targets except for LLP64/Win64).
+       * misc.c (GC_init_inner): Use STRTOULL instead of atoi/atol()
+       (cast the result to word type) to decode values of "GC_TRACE",
+       "GC_INITIAL_HEAP_SIZE", "GC_MAXIMUM_HEAP_SIZE" environment vars.
 
 2009-06-12  Hans Boehm <Hans.Boehm@hp.com> (Really mostly George Talbot)
+
        * include/gc_allocator.h: Add gc_allocator_ignore_off_page.
        * tests/test_cpp.cc: Add call to gc_allocator_ignore_off_page.
 
 2009-06-11  Hans Boehm <Hans.Boehm@hp.com>
+
        * win32_threads.c (GC_release_mark_lock): Correct misspelling of
        AO_load in assertion.
 
        (diff93_cvs: resembling diff27, diff30, diff43, diff44, diff66,
        diff76, diff79, diff83 partly)
 
-        * win32_threads.c (MAX_THREADS): Define as 1 if GC_win32_dll_threads
-        is defined as FALSE (otherwise the size of dll_thread_table is near
-        200 KiB for 32-bit).
-        * win32_threads.c (GC_use_DllMain): Optimize for THREAD_LOCAL_ALLOC.
-        * win32_threads.c (GC_Thread_Rep): Add backing_store_end and
-        backing_store_ptr fields for IA64 support.
-        * win32_threads.c (GC_register_my_thread_inner): Set
-        backing_store_end field to reg_base value for IA64 (same as in
-        pthread_support.c).
-        * win32_threads.c (SET_PTHREAD_MAP_CACHE): Put parentheses in the
-        "right" places, remove ';'.
-        * win32_threads.c (GC_fault_handler_lock): Declare only
-        if MPROTECT_VDB (and not WinCE).
-        * win32_threads.c (GC_suspend): Acquire and release
-        GC_fault_handler_lock only if MPROTECT_VDB (and not WinCE).
-        * win32_threads.c (GC_suspend): Define as STATIC.
-        * win32_threads.c (GC_push_stack_for): Fix WARN() format specifier
-        (should be word-complient, "%p" is used w/o "0x"), don't cast sp.
-        * win32_threads.c (GC_push_all_stacks): Convert a group of printf()
-        calls into a single one (for output atomicity).
-        * win32_threads.c (GC_get_next_stack): Unprotect thread descriptor
-        before altering its last_stack_min ("thread" variable is added).
-        * win32_threads.c (GC_get_next_stack): Remove unnecessary checks for
-        "s" is non-NULL. 
-        * win32_threads.c (GC_get_next_stack): Don't call GC_may_be_in_stack
-        if WinCE.
-        * win32_threads.c (GC_get_next_stack): Pass current_min value to
-        GC_get_stack_min as-is (without -1).
-        * win32_threads.c (GC_wait_marker): Remove FIXME and use "release"
-        version of AO_fetch_and_sub1().
-        * win32_threads.c (GC_win32_start_inner, GC_win32_start): convert int
-        to pointer (and vice verse) thru word type to suppress warnings.
+       * win32_threads.c (MAX_THREADS): Define as 1 if GC_win32_dll_threads
+       is defined as FALSE (otherwise the size of dll_thread_table is near
+       200 KiB for 32-bit).
+       * win32_threads.c (GC_use_DllMain): Optimize for THREAD_LOCAL_ALLOC.
+       * win32_threads.c (GC_Thread_Rep): Add backing_store_end and
+       backing_store_ptr fields for IA64 support.
+       * win32_threads.c (GC_register_my_thread_inner): Set
+       backing_store_end field to reg_base value for IA64 (same as in
+       pthread_support.c).
+       * win32_threads.c (SET_PTHREAD_MAP_CACHE): Put parentheses in the
+       "right" places, remove ';'.
+       * win32_threads.c (GC_fault_handler_lock): Declare only
+       if MPROTECT_VDB (and not WinCE).
+       * win32_threads.c (GC_suspend): Acquire and release
+       GC_fault_handler_lock only if MPROTECT_VDB (and not WinCE).
+       * win32_threads.c (GC_suspend): Define as STATIC.
+       * win32_threads.c (GC_push_stack_for): Fix WARN() format specifier
+       (should be word-complient, "%p" is used w/o "0x"), don't cast sp.
+       * win32_threads.c (GC_push_all_stacks): Convert a group of printf()
+       calls into a single one (for output atomicity).
+       * win32_threads.c (GC_get_next_stack): Unprotect thread descriptor
+       before altering its last_stack_min ("thread" variable is added).
+       * win32_threads.c (GC_get_next_stack): Remove unnecessary checks for
+       "s" is non-NULL.
+       * win32_threads.c (GC_get_next_stack): Don't call GC_may_be_in_stack
+       if WinCE.
+       * win32_threads.c (GC_get_next_stack): Pass current_min value to
+       GC_get_stack_min as-is (without -1).
+       * win32_threads.c (GC_wait_marker): Remove FIXME and use "release"
+       version of AO_fetch_and_sub1().
+       * win32_threads.c (GC_win32_start_inner, GC_win32_start): convert int
+       to pointer (and vice versa) thru word type to suppress warnings.
        * win32_threads.c (GC_mark_mutex_waitcnt): Fix comment, always
        access atomically.
        * misc.c: Change GC_THREADS tests back to THREADS.
        (diff92_cvs: resembling diff20, diff27, diff34, diff38, diff43, diff45,
        diff46, diff56, diff60, diff62, diff74, diff75, diff81 partly)
 
-        * allchblk.c (GC_print_hblkfreelist, GC_dump_regions): Convert
-        a group of printf() calls into a single one (for output atomicity).
-        * include/gc.h (GC_set_all_interior_pointers, GC_set_full_freq,
-        GC_set_time_limit): New prototypes.
-        * misc.c (GC_set_all_interior_pointers, GC_set_full_freq,
-        GC_set_time_limit): New public setter/getter functions.
-        * include/gc.h: Fix (and remove outdated) comments for thread-local
-        allocation.
-        * include/gc.h: Fix typos in comments.
-        * misc.c (GC_init_inner, GC_printf): Ditto.
-        * include/gc.h (GC_unregister_disappearing_link): Refine comment.
-        * include/gc.h (GC_stack_base): Recognize _M_IA64 macro.
-        * misc.c (GC_stack_last_cleared, GC_min_sp, GC_high_water,
-        GC_bytes_allocd_at_reset, DEGRADE_RATE): Define only if THREADS.
-        * misc.c (GC_stack_last_cleared, GC_min_sp, GC_high_water,
-        GC_bytes_allocd_at_reset): Define as STATIC.
-        * misc.c (GC_get_heap_size, GC_get_free_bytes,
-        GC_get_bytes_since_gc, GC_get_total_bytes): Acquire the GC lock to
-        avoid data races.
-        * misc.c (GC_write_cs): Define only if THREADS (Win32/WinCE only).
-        * misc.c (GC_init_inner): Initialize GC_write_cs only if THREADS.
-        * misc.c (GC_init_inner): Use GC_INITIAL_HEAP_SIZE (if available) to
-        set the default initial value of initial_heap_sz.
-        * misc.c (GC_deinit): Destroy GC_write_cs only if THREADS.
-        * misc.c (GC_init_inner): Fix WARN() format specifier (should be
-        word-complient, "%p" is used w/o "0x").
-        * misc.c (GC_init_inner): Don't recognize "GC_PAUSE_TIME_TARGET"
-        environment variable if SMALL_CONFIG.
-        * misc.c (GC_init_inner): Recognize "GC_FULL_FREQUENCY" environment
-        variable to set initial GC_full_freq value (if not SMALL_CONFIG).
-        * doc/README.environment (GC_FULL_FREQUENCY): Add information.
-        * doc/README.environment (GC_MARKERS): Refine information.
-        * misc.c (GC_init_inner): Change GC_ASSERT to GC_STATIC_ASSERT where
-        possible.
-        * misc.c (IF_NEED_TO_LOCK): New macro (instead of GC_need_to_lock).
-        * misc.c (GC_write): Use IF_NEED_TO_LOCK for handling GC_write_cs.
-        * misc.c (GC_abort): Don't define if SMALL_CONFIG.
-        * misc.c (GC_abort): Directly use WRITE() instead of GC_err_printf()
-        (to prevent possible infinite recursion).
+       * allchblk.c (GC_print_hblkfreelist, GC_dump_regions): Convert
+       a group of printf() calls into a single one (for output atomicity).
+       * include/gc.h (GC_set_all_interior_pointers, GC_set_full_freq,
+       GC_set_time_limit): New prototypes.
+       * misc.c (GC_set_all_interior_pointers, GC_set_full_freq,
+       GC_set_time_limit): New public setter/getter functions.
+       * include/gc.h: Fix (and remove outdated) comments for thread-local
+       allocation.
+       * include/gc.h: Fix typos in comments.
+       * misc.c (GC_init_inner, GC_printf): Ditto.
+       * include/gc.h (GC_unregister_disappearing_link): Refine comment.
+       * include/gc.h (GC_stack_base): Recognize _M_IA64 macro.
+       * misc.c (GC_stack_last_cleared, GC_min_sp, GC_high_water,
+       GC_bytes_allocd_at_reset, DEGRADE_RATE): Define only if THREADS.
+       * misc.c (GC_stack_last_cleared, GC_min_sp, GC_high_water,
+       GC_bytes_allocd_at_reset): Define as STATIC.
+       * misc.c (GC_get_heap_size, GC_get_free_bytes,
+       GC_get_bytes_since_gc, GC_get_total_bytes): Acquire the GC lock to
+       avoid data races.
+       * misc.c (GC_write_cs): Define only if THREADS (Win32/WinCE only).
+       * misc.c (GC_init_inner): Initialize GC_write_cs only if THREADS.
+       * misc.c (GC_init_inner): Use GC_INITIAL_HEAP_SIZE (if available) to
+       set the default initial value of initial_heap_sz.
+       * misc.c (GC_deinit): Destroy GC_write_cs only if THREADS.
+       * misc.c (GC_init_inner): Fix WARN() format specifier (should be
+       word-complient, "%p" is used w/o "0x").
+       * misc.c (GC_init_inner): Don't recognize "GC_PAUSE_TIME_TARGET"
+       environment variable if SMALL_CONFIG.
+       * misc.c (GC_init_inner): Recognize "GC_FULL_FREQUENCY" environment
+       variable to set initial GC_full_freq value (if not SMALL_CONFIG).
+       * doc/README.environment (GC_FULL_FREQUENCY): Add information.
+       * doc/README.environment (GC_MARKERS): Refine information.
+       * misc.c (GC_init_inner): Change GC_ASSERT to GC_STATIC_ASSERT where
+       possible.
+       * misc.c (IF_NEED_TO_LOCK): New macro (instead of GC_need_to_lock).
+       * misc.c (GC_write): Use IF_NEED_TO_LOCK for handling GC_write_cs.
+       * misc.c (GC_abort): Don't define if SMALL_CONFIG.
+       * misc.c (GC_abort): Directly use WRITE() instead of GC_err_printf()
+       (to prevent possible infinite recursion).
 
 2009-06-09  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        diff90_cvs (resembling diff28, diff30, diff32, diff34, diff47,
        diff49, diff60, diff62, diff66, diff67, diff68, diff72 partly)
 
-        * finalize.c (finalization_mark_proc): Replace K&R-style declaration
-        with ANSI C one.
-        * finalize.c (GC_grow_table, GC_register_finalizer_inner,
-        GC_enqueue_all_finalizers): Remove outdated comments about disabling
-        signals.
-        * finalize.c (GC_general_register_disappearing_link): Fix assertion
-        to catch NULL "obj" value.
-        * finalize.c (GC_unregister_disappearing_link): Check "link"
-        alignment before gaining the lock.
-        * finalize.c (GC_finalize): Refine comment.
-        * finalize.c (GC_finalize): Fix WARN() format specifier (should be
-        word-complient, "%p" is used w/o "0x").
-        * finalize.c (GC_invoke_finalizers): Initialize "bytes_freed_before"
-        variable (to 0) to suppress compiler warning.
-        * include/gc_gcj.h (MARK_DESCR_OFFSET): Move to private/gc_pmark.h.
-        * include/gc_gcj.h: add "extern C" header and tail.
-        * include/private/gc_pmark.h: Remove GC_do_parallel_mark(),
-        GC_help_wanted, GC_helper_count, GC_active_count declarations (move
-        the comments to the place where these symbols are defined in mark.c).
-        * mark.c: Add STATIC GC_do_parallel_mark() declaration (for use by
-        GC_mark_some_inner, if PARALLEL_MARK only).
-        * mark.c (GC_mark_some_inner, GC_help_wanted, GC_helper_count,
-        GC_active_count, GC_do_parallel_mark): Define as STATIC.
-        * pthread_support.c (GC_mark_thread): Ditto.
-        * typd_mlc.c (GC_explicit_typing_initialized, GC_explicit_kind,
-        GC_array_kind, GC_ext_descriptors, GC_ed_size, GC_avail_descr,
-        GC_typed_mark_proc_index, GC_array_mark_proc_index, GC_eobjfreelist,
-        GC_arobjfreelist): Ditto.
-        * include/private/gc_pmark.h (PUSH_CONTENTS_HDR): Change GC_ASSERT
-        for HBLKSIZE to GC_STATIC_ASSERT.
-        * mark.c (GC_noop): Define for Borland C the same as for Watcom.
-        * mark.c (GC_noop, GC_mark_and_push): Add ARGSUSED tag.
-        * pthread_support.c (GC_do_blocking_inner): Ditto.
-        * mark.c (GC_mark_from): Initialize "limit" (to 0) in the default
-        switch branch to suppress compiler warning.
-        * mark.c (GC_return_mark_stack): Append new-line to printf message.
-        * mark.c: Remove unused GC_true_func(), GC_PUSH_ALL().
-        * pthread_support.c (GC_mark_thread): Add dummy "return 0" to
-        suppress compiler warning.
-        * pthread_support.c (start_mark_threads): Move the code limiting
-        "GC_markers" value (and printing a warning) to GC_thr_init().
-        * pthread_support.c (GC_thr_init): Silently limit "GC_markers" value
-        if based on the number of CPUs.
-        * pthread_support.c (GC_thr_init): Treat incorrect "GC_markers"
-        values as one.
+       * finalize.c (finalization_mark_proc): Replace K&R-style declaration
+       with ANSI C one.
+       * finalize.c (GC_grow_table, GC_register_finalizer_inner,
+       GC_enqueue_all_finalizers): Remove outdated comments about disabling
+       signals.
+       * finalize.c (GC_general_register_disappearing_link): Fix assertion
+       to catch NULL "obj" value.
+       * finalize.c (GC_unregister_disappearing_link): Check "link"
+       alignment before gaining the lock.
+       * finalize.c (GC_finalize): Refine comment.
+       * finalize.c (GC_finalize): Fix WARN() format specifier (should be
+       word-complient, "%p" is used w/o "0x").
+       * finalize.c (GC_invoke_finalizers): Initialize "bytes_freed_before"
+       variable (to 0) to suppress compiler warning.
+       * include/gc_gcj.h (MARK_DESCR_OFFSET): Move to private/gc_pmark.h.
+       * include/gc_gcj.h: add "extern C" header and tail.
+       * include/private/gc_pmark.h: Remove GC_do_parallel_mark(),
+       GC_help_wanted, GC_helper_count, GC_active_count declarations (move
+       the comments to the place where these symbols are defined in mark.c).
+       * mark.c: Add STATIC GC_do_parallel_mark() declaration (for use by
+       GC_mark_some_inner, if PARALLEL_MARK only).
+       * mark.c (GC_mark_some_inner, GC_help_wanted, GC_helper_count,
+       GC_active_count, GC_do_parallel_mark): Define as STATIC.
+       * pthread_support.c (GC_mark_thread): Ditto.
+       * typd_mlc.c (GC_explicit_typing_initialized, GC_explicit_kind,
+       GC_array_kind, GC_ext_descriptors, GC_ed_size, GC_avail_descr,
+       GC_typed_mark_proc_index, GC_array_mark_proc_index, GC_eobjfreelist,
+       GC_arobjfreelist): Ditto.
+       * include/private/gc_pmark.h (PUSH_CONTENTS_HDR): Change GC_ASSERT
+       for HBLKSIZE to GC_STATIC_ASSERT.
+       * mark.c (GC_noop): Define for Borland C the same as for Watcom.
+       * mark.c (GC_noop, GC_mark_and_push): Add ARGSUSED tag.
+       * pthread_support.c (GC_do_blocking_inner): Ditto.
+       * mark.c (GC_mark_from): Initialize "limit" (to 0) in the default
+       switch branch to suppress compiler warning.
+       * mark.c (GC_return_mark_stack): Append new-line to printf message.
+       * mark.c: Remove unused GC_true_func(), GC_PUSH_ALL().
+       * pthread_support.c (GC_mark_thread): Add dummy "return 0" to
+       suppress compiler warning.
+       * pthread_support.c (start_mark_threads): Move the code limiting
+       "GC_markers" value (and printing a warning) to GC_thr_init().
+       * pthread_support.c (GC_thr_init): Silently limit "GC_markers" value
+       if based on the number of CPUs.
+       * pthread_support.c (GC_thr_init): Treat incorrect "GC_markers"
+       values as one.
        * pthread_support.c (GC_register_my_thread_inner): Add a check for
        "stack_end" is non-NULL (the same as in win32_threads.c).
        * pthread_support.c (pthread_create): Call GC_oom_fn before giving up
        to "while" one to suppress "possible extraneous ';'" warning.
 
 2009-06-08  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski
-       and Zoltan Varga)
-        * darwin_stop_world.c (GC_push_all_stacks): Recognize ARM32.
-        * include/private/gc_priv.h (GC_THREAD_STATE_T): Define for ARM32
-        (Darwin only).
-        * include/private/gcconfig.h: Add machine-specific part for DARWIN.
-        * include/private/gcconfig.h (ARM32): Define config parameters for
-        DARWIN (iPhone).
+                                           and Zoltan Varga)
+
+       * darwin_stop_world.c (GC_push_all_stacks): Recognize ARM32.
+       * include/private/gc_priv.h (GC_THREAD_STATE_T): Define for ARM32
+       (Darwin only).
+       * include/private/gcconfig.h: Add machine-specific part for DARWIN.
+       * include/private/gcconfig.h (ARM32): Define config parameters for
+       DARWIN (iPhone).
 
 2009-06-08  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (diff91_cvs: resembling diff3, diff27, diff33, diff45, diff47, diff49,
        diff60, diff67, diff68 partly)
+
        * alloc.c (GC_FULL_FREQ, GC_DONT_EXPAND, GC_FREE_SPACE_DIVISOR,
-        GC_TIME_LIMIT): New macros (used to control the default initial
-        values of GC_full_freq variable, GC_dont_expand,
-        GC_free_space_divisor, GC_time_limit respectively).
-        * include/private/gc_priv.h (TIME_LIMIT): Remove macro (replaced
-        with GC_TIME_LIMIT in alloc.c).
-        * alloc.c (GC_need_full_gc, GC_stopped_mark, GC_finish_collection):
-        Define as STATIC.
-        * mark_rts.c (GC_push_current_stack, GC_push_gc_structures): Ditto.
-        * include/private/gc_priv.h (GC_stopped_mark, GC_finish_collection):
-        Move the prototypes to alloc.c, make STATIC.
-        * include/private/gc_priv.h (GC_push_current_stack,
-        GC_push_gc_structures, GC_push_regs_and_stack): Remove prototypes
-        (move the comments to the places where these functions are defined).
-        * mach_dep.c (GC_push_regs_and_stack): Move to mark_rts.c and define
-        as STATIC.
-        * alloc.c (GC_timeout_stop_func, GC_stopped_mark,
-        GC_print_heap_sects): Convert a group of printf() calls into
-        a single one (for output atomicity).
-        * mark_rts.c (GC_print_static_roots): Ditto.
-        * alloc.c (GC_stopped_mark): Output blank line (when logging) for
-        convenience to delimit collections.
-        * alloc.c (GC_clear_a_few_frames): Rename NWORDS to CLEAR_NWORDS;
-        make "frames" local variable volatile (to prevent optimization).
-        * alloc.c (GC_try_to_collect_inner, GC_stopped_mark,
-        GC_finish_collection, GC_allocobj): Remove outdated comments about
-        disabling signals.
-        * include/private/gc_priv.h (GC_register_displacement_inner,
-        GC_gcollect_inner): Ditto.
-        * alloc.c (GC_try_to_collect_inner, GC_stopped_mark,
-        GC_finish_collection): Initialize "start_time" local variable (to 0)
-        to suppress compiler warning.
-        * mark_rts.c (GC_add_roots_inner): Ditto (for "old" variable).
-        * alloc.c (GC_RATE, MAX_PRIOR_ATTEMPTS): Guard with "ifndef".
-        * include/private/gc_priv.h (clock, GC_stop_world, GC_start_world,
-        GC_acquire_mark_lock, GC_release_mark_lock, GC_notify_all_builder,
-        GC_wait_for_reclaim, GC_notify_all_marker, GC_wait_marker): Replace
-        K&R-style function prototypes with ANSI C one.
-        * include/private/gc_priv.h (ABORT): Define as DebugBreak() for
-        Win32/WinCE if SMALL_CONFIG (the same as in GC_abort()).
-        * include/private/gc_priv.h (ROUNDED_UP_WORDS, abs): Remove unused
-        macros.
-        * include/private/gc_priv.h (GC_noop): Declare for Borland C the
-        same as for Watcom.
-        * mark_rts.c (GC_push_conditional_with_exclusions): Add ARGSUSED tag.
+       GC_TIME_LIMIT): New macros (used to control the default initial
+       values of GC_full_freq variable, GC_dont_expand,
+       GC_free_space_divisor, GC_time_limit respectively).
+       * include/private/gc_priv.h (TIME_LIMIT): Remove macro (replaced
+       with GC_TIME_LIMIT in alloc.c).
+       * alloc.c (GC_need_full_gc, GC_stopped_mark, GC_finish_collection):
+       Define as STATIC.
+       * mark_rts.c (GC_push_current_stack, GC_push_gc_structures): Ditto.
+       * include/private/gc_priv.h (GC_stopped_mark, GC_finish_collection):
+       Move the prototypes to alloc.c, make STATIC.
+       * include/private/gc_priv.h (GC_push_current_stack,
+       GC_push_gc_structures, GC_push_regs_and_stack): Remove prototypes
+       (move the comments to the places where these functions are defined).
+       * mach_dep.c (GC_push_regs_and_stack): Move to mark_rts.c and define
+       as STATIC.
+       * alloc.c (GC_timeout_stop_func, GC_stopped_mark,
+       GC_print_heap_sects): Convert a group of printf() calls into
+       a single one (for output atomicity).
+       * mark_rts.c (GC_print_static_roots): Ditto.
+       * alloc.c (GC_stopped_mark): Output blank line (when logging) for
+       convenience to delimit collections.
+       * alloc.c (GC_clear_a_few_frames): Rename NWORDS to CLEAR_NWORDS;
+       make "frames" local variable volatile (to prevent optimization).
+       * alloc.c (GC_try_to_collect_inner, GC_stopped_mark,
+       GC_finish_collection, GC_allocobj): Remove outdated comments about
+       disabling signals.
+       * include/private/gc_priv.h (GC_register_displacement_inner,
+       GC_gcollect_inner): Ditto.
+       * alloc.c (GC_try_to_collect_inner, GC_stopped_mark,
+       GC_finish_collection): Initialize "start_time" local variable (to 0)
+       to suppress compiler warning.
+       * mark_rts.c (GC_add_roots_inner): Ditto (for "old" variable).
+       * alloc.c (GC_RATE, MAX_PRIOR_ATTEMPTS): Guard with "ifndef".
+       * include/private/gc_priv.h (clock, GC_stop_world, GC_start_world,
+       GC_acquire_mark_lock, GC_release_mark_lock, GC_notify_all_builder,
+       GC_wait_for_reclaim, GC_notify_all_marker, GC_wait_marker): Replace
+       K&R-style function prototypes with ANSI C one.
+       * include/private/gc_priv.h (ABORT): Define as DebugBreak() for
+       Win32/WinCE if SMALL_CONFIG (the same as in GC_abort()).
+       * include/private/gc_priv.h (ROUNDED_UP_WORDS, abs): Remove unused
+       macros.
+       * include/private/gc_priv.h (GC_noop): Declare for Borland C the
+       same as for Watcom.
+       * mark_rts.c (GC_push_conditional_with_exclusions): Add ARGSUSED tag.
 
 2009-06-04  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (diff89_cvs, resembling diff3, diff27, diff34, diff38, diff47, diff49,
        diff59, diff60, diff66, diff67, diff68, diff69a, diff70, diff81
        partly)
-        * dbg_mlc.c (GC_store_debug_info, GC_store_debug_info_inner): Remove
-        outdated comment about disabling signals.
-        * mallocx.c (GC_malloc_uncollectable,
-        GC_malloc_atomic_uncollectable): Ditto.
-        * os_dep.c: Ditto.
-        * dbg_mlc.c (GC_debug_change_stubborn, GC_debug_end_stubborn_change):
-        Add ARGSUSED tag.
-        * pthread_stop_world.c (GC_suspend_handler,
-        GC_suspend_handler_inner): Ditto.
-        * dbg_mlc.c (GC_debug_free, GC_debug_realloc): Fix printf message.
-        * dbg_mlc.c (GC_debug_realloc): Set "result" to NULL in the default
-        switch branch to suppress compiler warning.
-        * dyn_load.c (GC_init_dyld): Use ABORT() instead of GC_abort().
-        * include/private/darwin_semaphore.h (sem_init): Ditto.
-        * include/javaxfc.h: Replace "GC_H" with "_GC_H".
-        * include/private/dbg_mlc.h (GC_has_other_debug_info,
-        GC_store_debug_info): Replace K&R-style function prototypes with ANSI
-        C one.
-        * include/private/gcconfig.h (GC_FreeBSDGetDataStart, real_malloc,
-        GC_win32_get_mem, GC_wince_get_mem, GC_unix_get_mem): Ditto.
-        * include/private/pthread_support.h (GC_stop_init): Ditto.
-        * include/private/gcconfig.h: Refine comment about setting
-        GC_stackbottom.
-        * include/private/gcconfig.h (FIXUP_POINTER): Put parentheses in the
-        "right" places.
-        * include/private/pthread_support.h (GC_Thread_Rep): Refine comment
-        for "stack_end" field.
-        * mallocx.c (GC_malloc_uncollectable,
-        GC_malloc_atomic_uncollectable): Remove cast to undefined "hbklk".
-        * os_dep.c (GC_USE_MEM_TOP_DOWN): New macro (for setting
-        GC_mem_top_down to MEM_TOP_DOWN for debug purposes).
-        * os_dep.c (GC_gww_read_dirty, catch_exception_raise): Fix WARN()
-        format specifier (should be word-compliant, "%p" is used w/o "0x").
-        * pthread_stop_world.c (GC_suspend_handler_inner): Ditto.
-        * os_dep.c (GC_dirty_init): Append new-line to printf messages.
-        * os_dep.c (GC_mprotect_thread): Fix GC_err_printf message.
-        * os_dep.c (GC_save_callers): Change GC_ASSERT to GC_STATIC_ASSERT.
-        * pthread_stop_world.c (GC_retry_signals, GC_suspend_ack_sem): Define
-        as STATIC.
-        * pthread_stop_world.c (GC_push_all_stacks): Add assertion for that
-        "thread_blocked" is not set for the current thread.
-        * real_malloc.c: Add "extern GC_quiet" to suppress compiler warning.
-        * reclaim.c (GC_reclaim_all): Initialize "start_time" (to 0) to
-        suppress compiler warning.
-       
+
+       * dbg_mlc.c (GC_store_debug_info, GC_store_debug_info_inner): Remove
+       outdated comment about disabling signals.
+       * mallocx.c (GC_malloc_uncollectable,
+       GC_malloc_atomic_uncollectable): Ditto.
+       * os_dep.c: Ditto.
+       * dbg_mlc.c (GC_debug_change_stubborn, GC_debug_end_stubborn_change):
+       Add ARGSUSED tag.
+       * pthread_stop_world.c (GC_suspend_handler,
+       GC_suspend_handler_inner): Ditto.
+       * dbg_mlc.c (GC_debug_free, GC_debug_realloc): Fix printf message.
+       * dbg_mlc.c (GC_debug_realloc): Set "result" to NULL in the default
+       switch branch to suppress compiler warning.
+       * dyn_load.c (GC_init_dyld): Use ABORT() instead of GC_abort().
+       * include/private/darwin_semaphore.h (sem_init): Ditto.
+       * include/javaxfc.h: Replace "GC_H" with "_GC_H".
+       * include/private/dbg_mlc.h (GC_has_other_debug_info,
+       GC_store_debug_info): Replace K&R-style function prototypes with ANSI
+       C one.
+       * include/private/gcconfig.h (GC_FreeBSDGetDataStart, real_malloc,
+       GC_win32_get_mem, GC_wince_get_mem, GC_unix_get_mem): Ditto.
+       * include/private/pthread_support.h (GC_stop_init): Ditto.
+       * include/private/gcconfig.h: Refine comment about setting
+       GC_stackbottom.
+       * include/private/gcconfig.h (FIXUP_POINTER): Put parentheses in the
+       "right" places.
+       * include/private/pthread_support.h (GC_Thread_Rep): Refine comment
+       for "stack_end" field.
+       * mallocx.c (GC_malloc_uncollectable,
+       GC_malloc_atomic_uncollectable): Remove cast to undefined "hbklk".
+       * os_dep.c (GC_USE_MEM_TOP_DOWN): New macro (for setting
+       GC_mem_top_down to MEM_TOP_DOWN for debug purposes).
+       * os_dep.c (GC_gww_read_dirty, catch_exception_raise): Fix WARN()
+       format specifier (should be word-compliant, "%p" is used w/o "0x").
+       * pthread_stop_world.c (GC_suspend_handler_inner): Ditto.
+       * os_dep.c (GC_dirty_init): Append new-line to printf messages.
+       * os_dep.c (GC_mprotect_thread): Fix GC_err_printf message.
+       * os_dep.c (GC_save_callers): Change GC_ASSERT to GC_STATIC_ASSERT.
+       * pthread_stop_world.c (GC_retry_signals, GC_suspend_ack_sem): Define
+       as STATIC.
+       * pthread_stop_world.c (GC_push_all_stacks): Add assertion for that
+       "thread_blocked" is not set for the current thread.
+       * real_malloc.c: Add "extern GC_quiet" to suppress compiler warning.
+       * reclaim.c (GC_reclaim_all): Initialize "start_time" (to 0) to
+       suppress compiler warning.
+
 2009-06-02  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (adding last bit of diff86_cvs)
+
        * tests/test.c (check_heap_stats): Avoid unbalanced brackets in ifdef.
 
 2009-05-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (diff26)
+
        * win32_threads.c: restructure parallel marking mutex intialization.
        * win32_threads.c, alloc.c, darwin_stop_world.c, mallocx.c, mark.c,
        pthread_stop_world.c, pthread_support.c: Add runtime conditions
 
 2009-05-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (diff39)
+
        * include/private/gcconfig.h: refine MINGW32 test.
        * mark.c: Add win64/gcc tests.
 
 2009-05-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
        (diff86_cvs, resembling diff28, diff32, diff33, diff38, diff68 partly)
+
        * test.c (fork_a_thread, reverse_test, alloc8bytes, tree_test,
-        typed_test, run_one_test, check_heap_stats, main, test): Replace
-        all K&R-style function definitions with ANSI C ones.
-        * trace_test.c (main): Ditto.
-        * test.c (GC_COND_INIT): Define as GC_INIT() also in case of
-        THREAD_LOCAL_ALLOC.
-        * test.c (reverse_test): Call fork_a_thread() only if GC_PTHREADS
-        or GC_WIN32_THREADS; remove fork_a_thread() macros definition.
-        * test.c (reverse_test): Use "volatile" when clearing "b" and "c"
-        local variables (to suppress "assigned value is never used"
-        compiler warning).
-        * test.c (tree_test): Use public GC_noop1() instead of private
-        GC_noop().
-        * test.c (typed_test): Ditto.
-        * test.c (check_heap_stats): Define and assign value to
-        "late_finalize_count" local variable only if its value is used
-        (if FINALIZE_ON_DEMAND defined).
-        * test.c (main): Remove DJGPP-specific initialization of
-        GC_stackbottom (not needed anymore, handled in gcconfig.h).
-        * trace_test.c: Guard #define GC_DEBUG with #ifndef.
-        * trace_test.c: Include "gc_backptr.h".
-        * trace_test.c (main): Call GC_INIT().
-        * trace_test.c (main): Add "return 0" statement.
+       typed_test, run_one_test, check_heap_stats, main, test): Replace
+       all K&R-style function definitions with ANSI C ones.
+       * trace_test.c (main): Ditto.
+       * test.c (GC_COND_INIT): Define as GC_INIT() also in case of
+       THREAD_LOCAL_ALLOC.
+       * test.c (reverse_test): Call fork_a_thread() only if GC_PTHREADS
+       or GC_WIN32_THREADS; remove fork_a_thread() macros definition.
+       * test.c (reverse_test): Use "volatile" when clearing "b" and "c"
+       local variables (to suppress "assigned value is never used"
+       compiler warning).
+       * test.c (tree_test): Use public GC_noop1() instead of private
+       GC_noop().
+       * test.c (typed_test): Ditto.
+       * test.c (check_heap_stats): Define and assign value to
+       "late_finalize_count" local variable only if its value is used
+       (if FINALIZE_ON_DEMAND defined).
+       * test.c (main): Remove DJGPP-specific initialization of
+       GC_stackbottom (not needed anymore, handled in gcconfig.h).
+       * trace_test.c: Guard #define GC_DEBUG with #ifndef.
+       * trace_test.c: Include "gc_backptr.h".
+       * trace_test.c (main): Call GC_INIT().
+       * trace_test.c (main): Add "return 0" statement.
 
 2009-05-25  Hans Boehm <Hans.Boehm@hp.com> (Really Petter Urkedal)
+
        * dyn_load.c (GC_register_dynlib_callback): Use new index j
        instead of i in the inner loop.
 
-2009-05-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski, diff85)
+2009-05-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff85)
+
        * tests/test.c: Increment n_tests with fetch_and_add when possible,
        avoiding need to export lock.
 
-2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski, diff63,diff65)
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff63,diff65)
+
        * include/gc_pthread_redirects.h:
                - dlfcn.h is included for dlopen() proto before undefining
                "dlopen" (so, it's possible now to include dlfcn.h after
                (before closing "extern C").
        * pthread_support.c: Fix out of memory handling for Thread_Reps.
        * win32_threads.c: Don't include process.h on winCE,
-       improve out of memory handling for thread structures, dont
+       improve out of memory handling for thread structures, don't
        define GC_beginthreadex and GC_endthreadex for winCE.
 
-2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski, diff71)
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski
+       (diff71)
+
        * tests/test.c: Change gcj vtable decriptor type from size_t to
        GC_word.
 
 2009-05-22  Hans Boehm <Hans.Boehm@hp.com>
+
        * gcj_mlc.c: Add comment.
        * tests/test.c: Change NTEST to NTHREADS.  Fork 5 threads by default.
        Run reverse_test a second time in each thread.Add comments.
-       Dont rely on AO_fetch_and_add.
+       Don't rely on AO_fetch_and_add.
 
 2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Largely from Ludovic Cortes)
+
        * dyn_load.c (GC_register_dynlib_callback,
        GC_register_dynamic_libraries_dl_iterate_phdr): Add support
        for GNU_PT_RELRO relocations.
 
-2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski, diff61)
+2009-05-22  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+       (diff61)
+
        * Makefile, Makefile.direct: GC_SOLARIS_PTHREADS was replaced
        by GC_SOLARIS_THREADS.
        * include/gc.h: Improve finalizer documentation.
        * mips_sgi_mach_dep.s: Replace _MIPS_SIM_ABI32 with _ABIO32.
        * pthread_stop_world.c, Makefile.dj: Fix typos.
 
-2009-05-21  Hans Boehm <Hans.Boehm@hp.com> 
+2009-05-21  Hans Boehm <Hans.Boehm@hp.com>
+
        * win32_threads.c (GC_new_thread): Make first_thread
        visible to the whole file.
        (UNPROTECT): New macro.
        (GC_remove_protection): Check if already unprotected.
 
 2009-05-20  Hans Boehm <Hans.Boehm@hp.com> (really Ivan Maidanski)
+
        * doc/README.win32: Add OpenWatcom warning.
        * include/private/gcconfig.h: Really check it in.
 
 2009-05-19  Hans Boehm <Hans.Boehm@hp.com> (Mostly Ivan Maidanski, Dave Korn)
+
        * os_dep.c (GC_get_stack_base, windows): Replace with Dave Korn's
        code from gcc version.
        * os_dep.c: make gc compilable (optionally) for Cygwin with
-       GetWriteWatch-based virtual dirty bit implementation ("os_dep.c" file). 
+       GetWriteWatch-based virtual dirty bit implementation ("os_dep.c" file).
        * os_dep.c: Make non-win32 GC_write_fault_handler STATIC.
        * mark.c (GC_noop): fix declaration definition mismatch for DMC.
        * include/private/gcconfig.h: Enable MPROTECT_VDB and GWW_VDB for
        Watcom (Win32 only).  It works.
 
-       and GWW_VDB.  It works.
+2009-05-07  Hans Boehm <Hans.Boehm@hp.com> (and Mark Sibly)
 
-2009-05-07  Hans Boehm <Hans.Boehm@hp.com> and Mark Sibly
        * mach_dep.c: Don't use __builtin_unwind_init for register
        state on PowerPC/Darwin.
 
 2009-04-24  Hans Boehm <Hans.Boehm@hp.com>
+
        * doc/gcdescr.html: Improve description of object freelist
        structure.
        * include/private/gc_priv.h: Fix comment for _size_map.
 
 2009-03-16  Hans Boehm <Hans.Boehm@hp.com>
+
        * os_dep.c (GC_linux_stack_base): Relax sanity test.
 
-2009-03-11  Hans Boehm <Hans.Boehm@hp.com>  (Really Ivan Maidanski)
+2009-03-11  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * include/private/gc_pmark.h (PUSH_CONTENTS_HDR for
        MARK_BIT_PER_OBJ): Add missing backslash before eoln.
 
 2009-02-28  Hans Boehm <Hans.Boehm@hp.com>
+
        * misc.c (GC_set_warn_proc): Implicitly intialize GC on
        non-Cygwin win32.
 
 2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (Really Petr Krajca)
+
        * configure.ac: Enable thread-local allocation for sparc-linux.
        * configure: Regenerate.
 
 2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * alloc.c (GC_try_to_collect): Remove duplicate initialization
        check.
        * malloc.c (GC_generic_malloc): Remove lw to eliminate single-
        * mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
 
 2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (Mostly Ivan Maidansky)
+
        * allchblk.c, backgraph.c, dbg_mlc.c, dyn_load.c,
        finalize.c, include/private/gc_pmark.h, malloc.c, mark.c,
        os_dep.c, pthread_stop_world.c, pthread_support.c, reclaim.c,
        * misc.c: Refine comment.
 
 2009-02-28  Hans Boehm <Hans.Boehm@hp.com>
+
        * os_dep.c: Define GC_GWW_BUF_LEN more intelligently.  Add FIXME
        comment.
 
 2009-02-28  Hans Boehm <Hans.Boehm@hp.com> (With input from Ivan Maidansky)
+
        * win32_threads.c (GC_push_stack_for): Yet another attempt
        at the stack_min finding logic.  Try to clean up the existing code
        while minimizing VirtualQuery calls.
        *include/gc.h: Update obsolete comments.
 
 2009-02-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * tests/test.c:
        (gcj_class_struct2): Use cast instead of l suffix.
        Cast GetLastError to int in various places.
        Cast GC_gc_no to unsigned in printf.
 
 2009-02-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * include/gc.h: Fix two typos in comments.
 
 2009-02-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * finalize.c: Fix typo in comment.
 
 2008-12-03  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * blacklst.c (GC_print_source_pointer): Don't call GC_print_heap_obj
        with lock.
 
 2008-12-01  Hans Boehm <Hans.Boehm@hp.com>
+
        * reclaim.c: (GC_reclaim_block): Scan even nearly full blocks
        if we are checking for leaks.
 
 2008-11-12  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidansky)
+
        * win32_threads.c: Remove mark lock spinning.
        * win32_threads.c, pthread_support.c: Update GC_unlocked_count,
        GC_spin_count, and GC_block_count using atomic operations.
 
 2008-11-11  Hans Boehm <Hans.Boehm@hp.com>
        (Really almost entirely Ivan Maidansky)
+
        * win32_threads.c: Support PARALLEL_MARK.  Make printf arg
        types agree with format specifiers.  Add missing copyright header.
        Add STATIC for GC_threads.
        * include/private/gcconfig.h: Add FIXME comment.
        * tests/test.c (run_ine_test): Replace LOCK/UNLOCK use with
        AO_fetch_and_add1_full.  Declare n_tests as AO_t.
-       (WinMain): Dont call GC_use_DllMain.
+       (WinMain): Don't call GC_use_DllMain.
        with PARALLEL_MARK or THREAD_LOCAL_ALLOC.
 
 2008-11-10  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * alloc.c (GC_try_to_collect_inner): Don't print redundant
        GC_bytes_allocd and GC_gc_no.
        (GC_stopped_mark): Print average world stop time.
        * include/private/gc_priv.h (MS_TIME_DIFF): Add cast.
 
 2008-11-10  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidansky)
+
        * misc.c, doc/README.environment: Add support  for
        GC_FREE_SPACE_DIVISOR and GC-disable-incremental.
        * include/gc.h: Make GC_set_free_space_divisor correspond to
        (somewhat unfortunate) reality.
 
 2008-11-07  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        (Mostly improves LLP64 support.)
        * backgraph.c, checksums.c, dbg_mlc.c, finalize.c, mark.c,
        misc.c, reclaim.c: Changed some int and long type to word or size_t
        * mark.c (GC_check_dirty): Move declaration out of func body.
 
 2008-11-06  Hans Boehm <Hans.Boehm@hp.com>
+
        * doc/gcinterface.html: Improve REDIRECT_MALLOC documentation.
        * include/gc.h (GC_register_my_thread): Improve comment.
 
 2008-11-04  Hans Boehm <Hans.Boehm@hp.com>
+
        * Makefile.direct: Add comment for -DCHECKSUMS.
 
 2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * thread_local_alloc.c, include/private/thread_local_alloc.h:
        Fix typos in comments.
        * finalize.c: Declare mark_procs and GC_register_finalizer_inner
        * malloc.c (GC_free): Move size calculation below assertion.
 
 2008-10-27  Hans Boehm <Hans.Boehm@hp.com>
+
        * win32_threads.c (GC_get_stack_min, GC_may_be_in_stack):
        Add one entry VirtualQuery cache, I_HOLD_LOCK assertions.
        (GC_push_stack_for, GC_get_next_stack) : Hopefully fix WINCE support.
 
-2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Thanks to Klaus Treichel.)
+2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Thanks to Klaus Treichel)
+
        * finalize.c (GC_general_register_disappearing_link): Add
        assertion.
        * malloc.c (GC_generic_malloc): Round lb to granules, not words.
        granules, not words.
 
 2008-10-27  Hans Boehm <Hans.Boehm@hp.com> (Really Rex Dieter and
-       Petr Krajca)
+                                           Petr Krajca)
+
        * mach_dep.c (NO_GETCONTEXT): Define for sparc linux.
        * configure.ac: Define mach_dep for sparc-linux.
        * configure: Regenerate.
 
 2008-10-25  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidansky)
+
        * mark_rts.c (GC_approx_sp): Use volatile to avoid common
        warning.
 
 2008-10-25  Hans Boehm <Hans.Boehm@hp.com>
+
        * dyn_load.c (GC_cond_add_roots): Fix GC_get_next_stack argument
        order.
 
 2008-10-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * alloc.c, dbg_mlc.c, dyn_load.c, finalize.c, gcj_mlc.c,
        include/gc.h, include/gc_config_macros.h, include/gc_cpp.h,
        include/gc_gcj.h, include/gc_mark.h, include/gc_typed.h,
 
 2008-10-24  Hans Boehm <Hans.Boehm@hp.com>
        (Partially based loosely on patch from Ivan Maidanski)
+
        * win32_threads.c (GC_may_be_in_stack): New.  (GC_Thread_Rep):
        Add last_stack_min.  (GC_push_stack_for): Use last_stack_min.
        (GC_get_next_stack): Add limit argument, use_last_stack_min.
        * Makefile.in: Regenerate.
 
 2008-10-21  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * include/private/gc_locks.h, include/private/gc_pmark.h,
        include/private/gc_priv.h, include/private/gcconfig.h,
        mach_dep.c, mark_rts.c, misc.c, os_dep.c, pthread_stop_world.c,
        Fix comments.
 
 2008-10-21  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * pthread_support.c: Comment out LOCK_STATS.
        * include/gc.h: Fix comments.
 
 2008-10-20  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * misc.c (GC_init_inner): Enable GC_LOG_FILE on Cygwin.
        * include/private/gcconfig.h: Consider USE_MMAP for Cygwin.
        * os_dep.c (GC_get_main_stack_base): Use alternate definition
        * include/private/gc_priv.h: Sometimes define SETJMP on Cygwin.
 
 2008-10-20  Hans Boehm <Hans.Boehm@hp.com>
+
        * doc/README: Make it clearer when Makefile.direct is assumed.
        * cord/cord.am: install include/cord.h.
        * Makefile.in: Regenerate.
 
 2008-09-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * win32_threads.c (GC_pthread_join, GC_pthread_start_inner):
        Remove unused variables.
        * darwin_stop_world.c: Always declare GC_thr_init().
-       * dbg_mlc.c (GC_debug_free_inner): Dont touch oh_sz if
+       * dbg_mlc.c (GC_debug_free_inner): Don't touch oh_sz if
        SHORT_DBG_HDRS is defined.
        * include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET, parallel
        mark, USE_MARK_BITS version): Refer to correct parameter name.
 
 2008-09-24  Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)
+
        * finalize.c (GC_general_register_disappearing_link): Remove
        redundant code.
        * gcj_mlc.c (GC_init_gcj_malloc): Add cast to signed.
        defined for X86. (STATIC): Define as "static" with NO_DEBUGGING.
 
 2008-09-24  Hans Boehm <Hans.Boehm@hp.com>
+
        * include/private/gc_priv.h: Update MAX_HEAP_SECTS.
 
 2008-09-10  Hans Boehm <Hans.Boehm@hp.com>
+
        * dbg_mlc.c (GC_print_smashed_obj): Increase robustness with
        smashed string, (GC_debug_free_inner): Mark as free.
        * mallocx.c (GC_malloc_many): Always clear new block if
        * tests/test.c: Don't define GC_DEBUG if already defined.
 
 2008-08-27  Hans Boehm <Hans.Boehm@hp.com>
+
        * doc/simple_example.html: update --enable-full-debug reference,
        Make HTML formatting standards compliant.
        * doc/debugging.html, doc/leak.html: Fix HTML formatting bugs.
        * doc/gcinterface.html: specify encoding.
 
 2008-08-27  Hans Boehm <Hans.Boehm@hp.com> (with help from Marco Maggi)
+
        * doc/simple_example.html: Update thread-local allocation
        description.
 
 2008-08-26  Hans Boehm <Hans.Boehm@hp.com> (with help from Marco Maggi)
+
        * configure.ac: Check for gc-debug earlier; replace remaining
        full-debug tests.
        * configure: Regenerate.
        * tests/test.c: Minimally test GC_..._INCR and friends.
 
 2008-08-21  Hans Boehm <Hans.Boehm@hp.com>
+
        * mark.c: (GC_push_next_marked, GC_push_next_marked_dirty,
        GC_push_next_marked_uncollectable): Never invoke GC_push_marked
        on free hblk.
        * include/private/gc_pmark.h: (PUSH_OBJ): Add assertion.
 
 2008-08-21  Hans Boehm <Hans.Boehm@hp.com>
+
        * alloc.c, include/gc_mark.h, Makefile.direct: Improve comments.
 
 2008-08-01  Hans Boehm <Hans.Boehm@hp.com> (Really Klaus Treichel)
+
        * configure.ac: Set win32_threads on MinGW.
        * configure: Regenerate.
 
 2008-07-25  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)
+
        Ivan's description of the patch follows. Note that a few pieces like
        the GC_malloc(0) patch, were not applied since an alternate had been
        previously applied.  A few differed stylistically from the rest of
        naming bugs (as a few did), where replaced by STATIC, which is
        ignored by default.
 
-        - minor bug fixing (for FreeBSD, for THREAD_LOCAL_ALLOC and for
-         GC_malloc(0));
-        - addition of missing getter/setter functions for public variables
-         (may be useful if compiled as Win32 DLL);
-        - addition of missing GC_API for some exported functions;
-        - addition of missing "static" declarator for internal functions
-          and variables (where possible);
-        - replacement of all remaining K&R-style definitions with ANSI
-         C ones (__STDC__ macro is not used anymore);
-        - addition of some Win32 macro definitions (that may be missing in
-         the standard headers supplied with a compiler) for GWW_VDB mode;
-        - elimination of most compiler warnings (except for
-         "uninitialized data" warning);
-        - several typos correction;
-        - missing parenthesis addition in macros in some header files of
-         "libatomic_ops" module.
+       - minor bug fixing (for FreeBSD, for THREAD_LOCAL_ALLOC and for
+       GC_malloc(0));
+       - addition of missing getter/setter functions for public variables
+       (may be useful if compiled as Win32 DLL);
+       - addition of missing GC_API for some exported functions;
+       - addition of missing "static" declarator for internal functions
+       and variables (where possible);
+       - replacement of all remaining K&R-style definitions with ANSI
+       C ones (__STDC__ macro is not used anymore);
+       - addition of some Win32 macro definitions (that may be missing in
+       the standard headers supplied with a compiler) for GWW_VDB mode;
+       - elimination of most compiler warnings (except for
+       "uninitialized data" warning);
+       - several typos correction;
+       - missing parenthesis addition in macros in some header files of
+       "libatomic_ops" module.
 
        My highlights based on reading the patch:
 
        * allchblk.c: Remove GC_freehblk_ptr decl.
        Make free_list_index_of() static.
-       * include/gc.h: Use __int64 on win64, define GC_oom_func, 
+       * include/gc.h: Use __int64 on win64, define GC_oom_func,
        GC_finalizer_notifier_proc, GC_finalizer_notifier_proc,
        add getter and setters: GC_get_gc_no, GC_get_parallel,
        GC_set_oom_fn, GC_set_finalize_on_demand,
        blacklist printing.
        * misc.c: Fix log file naming based on environment variable
        for Windows.  Make GC_set_warn_proc and GC_set_free_space_divisor
-       just return current value with 0 argument.  Add DONT_USER_USER32_DLL.
+       just return current value with 0 argument.  Add DONT_USE_USER32_DLL.
        Add various getters and setters as in gc.h.
        * os_dep.c: Remove no longer used GC_disable/enable_signals
        implementations.  (GC_get_stack_base): Add pthread_attr_destroy
        call GC_init_thread_local.
 
 2008-07-21  Hans Boehm <Hans.Boehm@hp.com>
+
        * Makefile.direct, mach_dep.c: Add support for NO_GETCONTEXT.
        * mach_dep.c: Include signal.h.
        * gc_priv.h: Factor out INLINE declaration.
        * include/gc_inline.h: Fix comments.
 
 2008-05-03  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc_version.h, configure.ac, doc/README:
        Change to version 7.2alpha1.
        * configure: Regenerate.
 [7.1]
 
 2008-05-03  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc_version.h, configure.ac, doc/README:
        Change to version 7.1.
        * configure: Regenerate.
        * include/private/gc_priv.h: Comment hb_sz range limit.
 
 2008-01-29  Hans Boehm <Hans.Boehm@hp.com>  (with help from Manuel Serrano)
-       
+
        * mark.c (GC_push_next_marked): correct comment.
        * Makefile.direct: document NO_PROC_STAT.
        * include/private/gcconfig.h: Accomodate NO_PROC_STAT.
 
 2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc_version.h, configure.ac, doc/README:
        Change to version 7.1alpha3.
        * configure: Regenerate.
 [7.1alpha2]
 
 2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc_version.h, configure.ac, doc/README:
        Change to version 7.1alpha2.
        * configure: Regenerate.
 
 2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * Makefile.am: Mention atomic_ops.c and atomic_ops_sysdeps.S
        again.  Refer to build directory as ".".
        * Makefile.in: Regenerate.
-       
+
 2008-01-10  Hans Boehm <Hans.Boehm@hp.com>
 
        * configure.ac: Ignore --enable-parallel-mark on Darwin for now.
 2007-12-23  Hans Boehm <Hans.Boehm@hp.com>
 
        * Makefile.am: Add NT_X64_THREADS_MAKEFILE.
+
 2007-12-23  Hans Boehm <Hans.Boehm@hp.com> (Really mostly Friedrich Dominicus)
 
        * NT_X64_STATIC_THREADS_MAKEFILE: Clean up obsolete comment.
 
        * configure.ac: Put libatomic_ops links in build directory.
        * configure: Regenerate.
-       * Makefile.am: Dont mention atomic_ops.c and atomic_ops_sysdeps.S
+       * Makefile.am: Don't mention atomic_ops.c and atomic_ops_sysdeps.S
        as nodist sources.
 
 2007-12-20  Hans Boehm <Hans.Boehm@hp.com>
        GC_NO_THREAD_DECLS, don't test explicitly for GC_SOLARIS_THREADS.
 
 2007-12-20  Hans Boehm <Hans.Boehm@hp.com>
-       
-       * alloc.c: Deal correctly with address wrapping for 
+
+       * alloc.c: Deal correctly with address wrapping for
        GC_greatest_plausible_heap_addr and GC_least_plausible_heap_addr.
        * finalize.c, include/gc.h (GC_register_disappearing_link,
        GC_register_finalizer_inner): Improve out-of-memory handling.
        * allchblk.c, configure.ac (add --enable-munmap)
        * configure: Regenerate.
 
-2007-12-10  Andreas Tobler  <a.tobler@schweiz.org>
+2007-12-10  Andreas Tobler <a.tobler@schweiz.org>
 
        * dyn_load.c (GC_dyld_image_add): Remove ifdef clause and use the macro
        GC_GETSECTBYNAME instead.
        * Makefile.in: Regenerate.
 
 2007-08-15  Hans Boehm <Hans.Boehm@hp.com> (really Samuel Thibault)
-       
+
        * pthread_support.c (GC_thr_init): Use sysconf(_SC_NPROCESSORS_ONLN)
        for HURD.
 
        No longer test for RS6000.
 
 2007-08-03  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * alloc.c, backgraph.c, headers.c, include/private/gc_priv.h:
        Maintain GC_our_memory and GC_n_memory.
        * dbg_mlc.c (GC_print_smashed_obj): Improve message.
        exist.
 
 2007-07-02  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * version.h, configure.ac, doc/README: Change to version 7.1alpha1.
        * configure: Regenerate.
 
 2007-07-02  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * version.h, configure.ac, doc/README: Change to version 7.0.
        * configure: Regenerate.
 
 
        * backgraph.c (per_object_func): Make argument types consistent.
        (GC_traverse_back_graph): Mark GC_deepest_obj.
-       
+
 2007-06-29  Hans Boehm <Hans.Boehm@hp.com>
 
        * finalize.c (GC_finalize): Change dl_size and fo_size to size_t.
        * Makefile.am, Makefile.direct: Add NT_X64_STATIC_THREADS_MAKEFILE.
        * Makefile.in: Regenerate.
        * NT_X64_STATIC_THREADS_MAKEFILE: Fix warning flags.
-       * allochblk.c, alloc.c, blacklst.c, dbg_malc.c, dyn_load.c,
+       * allochblk.c, alloc.c, blacklst.c, dbg_mlc.c, dyn_load.c,
        finalize.c, headers.c, mach_dep.c, malloc.c, mark.c, misc.c,
        obj_map.c, os_dep.c, ptr_chck.c, reclaim.c, typd_mlc.c,
        win32_threads.c, cord/de_win.c, include/gc_mark.h,
        * msvc_dbg.c(GetModuleBase): Replace strcat with strcat_s.
 
 2007-06-06  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * include/gc.h: (GC_word, GC_signed_word): Fix win64 definitions.
        Don't include windows.h in an extern "C" context.
        * include/private/gcconfig.h: Fix win64/X86_64 configuration.
        * cord/cord.am, tests/tests.am: Add better library dependencies.
        Remove now unnecessary dependencies.
        * Makefile.in: Regenerate.
-       * include/gc.h (GC_begin_thread_ex, GC_endthreadex, GC_ExitThread):
+       * include/gc.h (GC_beginthreadex, GC_endthreadex, GC_ExitThread):
        Move to define on all Windows platforms.  (_beginthread): define
        to generate error if used.
 
        * include/private/gc_locks.h: Format to 80 columns.
 
 2007-05-22  Hans Boehm <Hans.Boehm@hp.com>
-       
+
        * malloc.c(GC_free): Ignore bad frees on MSWIN32 with REDIRECT_MALLOC.
        * NT_MAKEFILE: msvc_dbg.h is in include/private.  Don't use cvars
        rc.
        * tests/thread_leak_test.c: Don't unconditionally define
        GC_LINUX_THREADS.
 
-2007-05-21  Andreas Tobler  <a.tobler@schweiz.org>
+2007-05-21  Andreas Tobler <a.tobler@schweiz.org>
 
        * Makefile.am: Remove extra_ldflags_libgc definition.
        * Makefile.in: Regenerate.
 
 2007-05-08  Hans Boehm <Hans.Boehm@hp.com>
 
-       * Makefile.am: Dont distribute copied atomic_ops files.  Include
+       * Makefile.am: Don't distribute copied atomic_ops files.  Include
        libatomic_ops with "make dist".
        * Makefile.in: Regenerate.
        * configure: Regenerate.
        * include/gc.h: Remove more SRC_M3 references.
        * include/private/gcconfig.h: Remove still more SRC_M3 references.
        GC_SOLARIS_THREADS no longer needs to be checked separately.
-       
+
 2007-05-08  Hans Boehm <Hans.Boehm@hp.com>
 
        * thread_local_alloc.c, include/private/thread_local_alloc.h:
        * win32_threads.c: Include stdint.h for Mingw.  Add GC_API for DllMain.
        (GC_use_DllMain): Fix assertion.
 
-2007-02-14  Andreas Tobler  <a.tobler@schweiz.org>
+2007-02-14  Andreas Tobler <a.tobler@schweiz.org>
 
        * configure.ac: Introduce extra_ldflags_libgc. Use it for Darwin.
        * configure: Regenerate.
        targets. Remove comments.
        Prepare ppc64 support for Darwin.
 
-2007-01-29  Andreas Tobler  <a.tobler@schweiz.org>
+2007-01-29  Andreas Tobler <a.tobler@schweiz.org>
 
        * darwin_stop_world.c: Clean up and reformat code.
 
-2007-01-28  Andreas Tobler  <a.tobler@schweiz.org>
+2007-01-28  Andreas Tobler <a.tobler@schweiz.org>
 
        * darwin_stop_world.c (GC_push_all_stacks): Fix compiler warnings.
        Make i unsigned.
        * configure: Regenerate.
        * README.changes: Point to ChangeLog.
 
-2007-01-25  Andreas Tobler  <a.tobler@schweiz.org>
+2007-01-25  Andreas Tobler <a.tobler@schweiz.org>
 
        * darwin_stop_world.c: Move THREAD_FLD defines to ...
        * include/private/gc_priv.h: ... here.
        * os_dep.c (catch_exception_raise): Use THREAD_FLD for exc_state member
        access.
 
-2007-01-18  Andreas Tobler  <a.tobler@schweiz.org>
+2007-01-18  Andreas Tobler <a.tobler@schweiz.org>
 
        * os_dep.c (if defined(MPROTECT_VDB) && defined(DARWIN)): Clean up and
        reformat code.
        Correct email reference.
 
-2007-01-11  Andreas Tobler  <a.tobler@schweiz.org>
+2007-01-11  Andreas Tobler <a.tobler@schweiz.org>
 
        * configure.ac (i?86*-*-darwin*): Replaced HAS_I386_THREAD_STATE_* with
        HAS_X86_THREAD_STATE32_*.
        X86_64 Darwin. Replaced old i386_EXCEPTION_STATE_* definition with
        x86_EXCEPTION_STATE32_*. Add X86_64 for exc_state.faultvaddr.
 
-2007-01-09  Andreas Tobler  <a.tobler@schweiz.org>
+2007-01-09  Andreas Tobler <a.tobler@schweiz.org>
 
        * libtool.m4: Update to version from libtool-1.5.22.
        * ltmain.sh: Likewise.
        * ChangeLog: Created.
 
 See doc/README.changes for earlier changes.
-