2009-06-11 Hans Boehm <Hans.Boehm@hp.com>
* win32_threads.c (GC_release_mark_lock): Correct misspelling of
AO_load in assertion.
2009-06-11 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)
(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 (GC_mark_mutex_waitcnt): Fix comment, always
access atomically.
* misc.c: Change GC_THREADS tests back to THREADS.
* 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).
* 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
with ENOMEM.
* thread_local_alloc.c (return_single_freelist): Convert "for" loop
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).
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.
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.
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
on GC_parallel were appropriate.
* pthread_support.c: Condition marker_bsp on ia64.
(GC_segment_is_thread_stack): Fix loop upper bound.
* reclaim.c: Limit some assertions to PARALLEL_MARK.
* pthread_support.c: Don't acquire mark lock for thread-local
allocation.
* include/private/gc_priv.h: Don't define parallel mark sync
support just for THREAD_LOCAL_ALLOC.
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.
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)
* 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)
* 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
gc.h from user code);
- GC_dlopen() proto is added (except for Darwin as
it's missing there);
- "dlopen" is explicitly undefined (before its redefinition).
* include/gc.h:
- "process.h" is included besides "windows.h"
(for _beginthreadex/_endthreadex); win32 only.
- GC_NO_THREAD_DECLS is moved to the right place
(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
define GC_beginthreadex and GC_endthreadex for winCE.
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.
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)
* 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>
* win32_threads.c (GC_new_thread): Make first_thread
visible to the whole file.
(UNPROTECT): New macro.
(GC_push_stack_for, GC_suspend, GC_start_world): unprotect
thread structures before writing.
(GC_suspend): Acquire GC_fault_handler_lock before suspending
thread.
* os_dep.c: export GC_fault_handler_lock.
(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).
* 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
* 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)
* 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-
threaded warnings.
* mallocx.c (GC_generic_malloc_ignore_off_page): Ditto.
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.
(GC_win32_start_inner): Register thread before GC_printf.
Produce more output with DEBUG_THREADS.
*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.
Avoid unused result warning from incr/decr macros.
Add cast for fake_gcj_mark_proc.
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.
* tests/test.c: Declare n_tests as AO_t only if we have threads.
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.
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
(and vice versa where appropriate)
* gcj_mlc.c, include/private/dbg_mlc.h, include/private/gcconfig.h,
include/private/thread_local_alloc.h, mark.c,
misc.c, thread_local_alloc.c, win32_threads.c: Added intermediate
casts to word type when casting from int to pointer (or pointer
to int, or data pointer to code pointer) - just to remove the
corresponding compiler warning.
* ptr_chck.c (GC_is_visible): cast int const to word type to
prevent left shift overflow.
* os_dep.c: change the type of GC_mem_top_down global var
(containing a flag) to DWORD.
* include/gc_config_macros.h: define GC_SOLARIS_THREADS if GC_THREADS
is defined on SunOS x86_64.
* misc.c (GC_init_size_map): Ifdef out GC_ASSERT as a workaround
for VC++ 2008 amd64 (v15.00.21022.08 for x64) compiler bug
(the compiler gets hung if invoked with -Ox -D
ALL_INTERIOR_POINTERS -D GC_ASSERTIONS)
* backgraph.c: cast GC_gc_no value to unsigned short when
assigned/compared to height_gc_no field of back_edges.
* os_dep.c (GC_remove_protection): Add ARGSUSED.
* win32_threads.c (GC_thread_exit_proc): Remove unused local var.
* mark.c (GC_check_dirty): Move declaration out of func body.
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.
* mallocx.c (GC_generic_malloc_ignore_off_page): Round lb to
granules, not words.
2008-10-27 Hans Boehm <Hans.Boehm@hp.com> (Really Rex Dieter and
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-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
with USE_MMAP.
* 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
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.
* os_dep.c: (GC_write_fault_handler): Remove remaining
references to deleted variable "code". Remove redundant
FREEBSD definitions.
* include/private/gcconfig.h (GWW_VDB): Define for X86_64 when
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
GC_debugging_started.
* reclaim.c: Move GC_debugging_started from
GC_reclaim_small_nonempty_block() to GC_reclaim_generic(),
which is also called directly.
* doc/README: Fix spelling error. Update license summary.
* include/gc.h (GC_PRE_INCR3, GC_POST_INCR3): add (void **) casts.
* 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.
* include/gc.h, ptr_chck.c (GC_pre_incr, GC_post_incr):
Use signed offset type. Use ptr_t internally.
* doc/gcinterface.html: Update LOCAL_MALLOC description.
* doc/README.autoconf, doc/leak.html, doc/README.DGUX386:
Fix full-debug reference.
* include/gc.h: Rewrite GC_..._INCR and friends.
* 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.
* headers.c: Test COUNT_HDR_CACHE_HITS not USE_HDR_CACHE.
(GC_header_cache_miss): Always blacklist pointers for free
hblks. Add assertion and comment.
* pthread_support.c (GC_register_my_thread): Fix #if indentation.
* include/private/gc_hdrs.h: USE_HDR_CACHE is no longer tested.
Delete it.
* 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: Reg