summaryrefslogtreecommitdiff
path: root/typd_mlc.c
Commit message (Collapse)AuthorAgeFilesLines
...
* Eliminate warning and simplify expression in GC_init_explicit_typingIvan Maidanski2012-10-231-4/+2
| | | | | | | | | | * typd_mlc.c (GC_init_explicit_typing): Cast -1 argument of WORDS_TO_BYTES() to word (instead of casting its result) to avoid "overflow in signed shift operation" warning (issued by some static code analysis tools). * typd_mlc.c (GC_init_explicit_typing): Simplify expression for computing GC_bm_table elements (remove redundant right shift of unsigned -1 before left shift for the same amount of bits).
* Enable 'Force GC at every GC_malloc' debug-related functionalityIvan Maidanski2012-09-111-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | * doc/README.environment (GC_COLLECT_AT_MALLOC): Document. * doc/README.macros (GC_COLLECT_AT_MALLOC): Likewise. * fnlz_mlc.c (GC_core_finalized_malloc): Insert GC_DBG_COLLECT_AT_MALLOC invocation (before LOCK). * gcj_mlc.c (GC_core_gcj_malloc, GC_gcj_malloc_ignore_off_page): Likewise. * malloc.c (GC_generic_malloc, GC_malloc_atomic, GC_malloc, GC_malloc_uncollectable): Likewise. * mallocx.c (GC_generic_malloc_ignore_off_page, GC_generic_malloc_many, GC_malloc_atomic_uncollectable): Likewise. * typd_mlc.c (GC_malloc_explicitly_typed, GC_malloc_explicitly_typed_ignore_off_page): Likewise. * include/private/gc_priv.h (GC_COLLECT_AT_MALLOC): Recognize new macro. (GC_dbg_collect_at_malloc_min_lb): New global variable declaration (only if GC_COLLECT_AT_MALLOC defined). (GC_DBG_COLLECT_AT_MALLOC): Define new macro (invoking GC_gcollect). * malloc.c (GC_dbg_collect_at_malloc_min_lb): New global variable (only if GC_COLLECT_AT_MALLOC defined). * misc.c (GC_init): Test "GC_COLLECT_AT_MALLOC" environment variable and alter default GC_dbg_collect_at_malloc_min_lb value (only if GC_COLLECT_AT_MALLOC macro defined).
* Replace pointer relational comparisons with non-pointer onesIvan Maidanski2012-03-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * allchblk.c (GC_dump_regions, GC_allochblk_nth): Cast pointers to word type in relational (less-greater) comparisons. * alloc.c (GC_add_to_heap, GC_print_heap_sects, GC_expand_hp_inner): Likewise. * backgraph.c (ensure_struct, add_back_edges): Likewise. * blacklst.c (GC_number_stack_black_listed): Likewise. * checksums.c (GC_checksum, GC_check_dirty): Likewise. * darwin_stop_world.c (GC_push_all_stacks): Likewise. * dbg_mlc.c (GC_get_back_ptr_info, GC_print_smashed_obj, GC_check_heap_block): Likewise. * dyn_load.c (sort_heap_sects, GC_register_map_entries, GC_register_dynlib_callback, GC_register_dynamic_libraries_dl_iterate_phdr, GC_register_dynamic_libraries, GC_cond_add_roots): Likewise. * finalize.c (GC_ignore_self_finalize_mark_proc): Likewise. * headers.c (GC_scratch_alloc, GC_install_counts, GC_remove_counts): Likewise. * include/private/gc_pmark.h (PUSH_OBJ, PUsH_CONTENTS_HDR, GC_PUSH_ONE_STACK, GC_PUSH_ONE_HEAP, GC_mark_stack_empty): Likewise. * include/private/gc_priv.h (MAKE_COOLER, COOLER_THAN): Likewise. * mach_dep.c (GC_with_callee_saves_pushed): Likewise. * malloc.c (calloc, free): Likewise. * mark.c (GC_mark_some_inner, GC_mark_from, GC_steal_mark_stack, GC_return_mark_stack, GC_do_local_mark, GC_mark_local, GC_push_all, GC_push_selected, GC_push_all_eager, GC_push_marked1, GC_push_marked2, GC_push_marked4, GC_push_marked, GC_push_unconditionally): Likewise. * mark_rts.c (GC_is_static_root, GC_add_roots_inner, GC_remove_roots_inner, GC_is_tmp_root, GC_exclude_static_roots_inner, GC_push_conditional_with_exclusions, GC_push_all_register_sections, GC_push_all_stack_sections, GC_push_all_stack_partially_eager, GC_push_all_stack_part_eager_sections, GC_push_current_stack): Likewise. * misc.c (GC_clear_stack_inner, GC_clear_stack, GC_base, GC_call_with_gc_active): Likewise. * new_hblk.c (GC_build_fl_clear2, GC_build_fl_clear4, GC_build_fl2, GC_build_fl4, GC_build_fl): Likewise. * os_dep.c (GC_enclosing_mapping, GC_text_mapping, tiny_sbrk, GC_find_limit_openbsd, GC_skip_hole_openbsd, GC_find_limit_with_bound, GC_get_main_stack_base, GC_get_stack_base, GC_least_described_address, GC_register_root_section, GC_register_data_segments, GC_unmap_start, GC_gww_read_dirty, GC_remove_protection, GC_protect_heap, GC_unprotect_range, GC_read_dirty, GC_page_was_dirty, GC_save_callers, GC_print_callers): Likewise. * pcr_interface.c (GC_enumerate_block): Likewise. * pthread_support.c (GC_is_thread_tsd_valid, GC_segment_is_thread_stack, GC_greatest_stack_base_below, GC_call_with_gc_active): Likewise. * ptr_chck.c (GC_same_obj, GC_is_valid_displacement, GC_on_stack, GC_is_visible): Likewise. * reclaim.c (GC_reclaim_clear, GC_reclaim_uninit, GC_disclaim_and_reclaim, GC_reclaim_check, GC_start_reclaim): Likewise. * tests/test.c (cons): Likewise. * tools/setjmp_t.c (main): Likewise. * typd_mlc.c (GC_typed_mark_proc): Likewise. * win32_threads.c (GC_is_thread_tsd_valid, GC_call_with_gc_active, GC_push_stack_for, GC_get_next_stack): Likewise. * extra/msvc_dbg.c (GetDescriptionFromAddress, GetDescriptionFromStack): Cast pointers to GC_ULONG_PTR in relational comparisons. * include/gc.h (GC_DATASTART, GC_DATAEND): Cast pointers to GC_word in relational comparisons. * misc.c (GC_init): Remove static assertion on ((ptr_t)-1 > 0) since no longer required; add the comment. * pcr_interface.c: Expand tabs to spaces.
* Add assertion ensuring proper alignment of 'pushed' GC symbolsIvan Maidanski2012-02-161-0/+1
| | | | | | | | | | | | * finalize.c (GC_push_finalizer_structures): Assert word alignment of dl_head, fo_head, GC_finalize_now. * pthread_support.c (GC_thr_init): Assert word alignment of GC_threads (passed to GC_push_all). * win32_threads.c (GC_thr_init): Likewise. * thread_local_alloc.c (GC_init_thread_local): Assert word alignment of GC_thread_key. * typd_mlc.c (GC_add_ext_descriptor): Assert word alignment of GC_ext_descriptors.
* Allow to exclude finalization support by GC_NO_FINALIZATION macroIvan Maidanski2012-02-061-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/README.macros (GC_NO_FINALIZATION): Document. * alloc.c (GC_finish_collection): Do not call GC_finalize and GC_print_finalization_stats if GC_NO_FINALIZATION. * dbg_mlc.c (closure, GC_make_closure, GC_debug_invoke_finalizer, OFN_UNSET, store_old, GC_debug_register_finalizer, GC_debug_register_finalizer_no_order, GC_debug_register_finalizer_unreachable, GC_debug_register_finalizer_ignore_self): Do not define if GC_NO_FINALIZATION. * finalize.c: Skip all definitions if GC_NO_FINALIZATION. * finalize.c (GC_call_with_alloc_lock): Move to misc.c. * include/private/gc_priv.h (GC_INVOKE_FINALIZERS): Define to empty if GC_NO_FINALIZATION. * include/private/gc_priv.h (GC_notify_or_invoke_finalizers, GC_push_finalizer_structures, GC_finalize, GC_print_finalization_stats): Do not declare if GC_NO_FINALIZATION. * mark_rts.c (GC_push_gc_structures): Do not call GC_push_finalizer_structures if GC_NO_FINALIZATION. * misc.c (GC_call_with_alloc_lock): Move from "finalize" module. * tests/test.c (mktree): Do not declare "my_index" and "new_link" local variables, do not update live_indicators_count, do not call GC_REGISTER_FINALIZER, GC_GENERAL_REGISTER_DISAPPEARING_LINK, GC_move_disappearing_link, GC_unregister_disappearing_link if GC_NO_FINALIZATION. * tests/test.c (check_heap_stats): Do not declare "still_live", "late_finalize_count" local variables and do not check finalization for failures if GC_NO_FINALIZATION.
* Use union of AO_t and word for mse_descr to avoid type castingIvan Maidanski2012-01-291-5/+5
| | | | | | | | | | | | | | | | | (which breaks 'strict-aliasing' compiler optimization) * include/private/gc_pmark.h (GC_ms_entry): Change type of mse_descr from word to word_ptr_ao_u. * include/private/gc_pmark.h (GC_mark_stack_top): Add FIXME. * include/private/gc_pmark.h (OR_WORD_EXIT_IF_SET): Add 'volatile' keyword to type cast for AO_or argument. * include/private/gc_priv.h (counter_t): Add 'volatile' in case of defining as AO_t (replace typedef with a macro). * include/private/gc_priv.h (word_ptr_ao_u): New union type. * include/private/gc_pmark.h (PUSH_OBJ): Add ".w" suffix to mse_descr. * mark.c (GC_mark_from, GC_steal_mark_stack, GC_push_all): Likewise. * mark.c (GC_steal_mark_stack): Use "ao" element of union to load and clear mse_descr atomically; remove pointer type casts.
* Replace ABORTs followed by statement with ABORT_RET having dummyIvan Maidanski2012-01-231-4/+4
| | | | | | | | | | | | | | condition (to suppress 'statement unreachable' compiler warnings caused by abort tagged as 'no-return') * dbg_mlc.c (GC_debug_realloc): Replace ABORT() with ABORT_RET(). * gcj_mlc.c (mark_stack_limit): Likewise. * os_dep.c (catch_exception_raise_state, catch_exception_raise_state_identity): Likewise. * typd_mlc.c (GC_descr_obj_size, GC_push_complex_descriptor): Likewise. * include/private/gc_priv.h (ABORT_RET): New macro. * mark.c (GC_mark_from): Put ABORT_RET instead of "cannot happen" comment.
* Use EXPECT in malloc result testing for NULLIvan Maidanski2012-01-181-3/+6
| | | | | | | | | | | * gcj_mlc.c (GC_gcj_malloc_ignore_off_page): Use EXPECT to test "op" value for NULL. * malloc.c (GC_generic_malloc_inner, GC_malloc_uncollectable): Likewise. * mallocx.c (GC_generic_malloc_many, GC_posix_memalign): Likewise. * typd_mlc.c (GC_malloc_explicitly_typed, GC_malloc_explicitly_typed_ignore_off_page, GC_calloc_explicitly_typed): Likewise.
* Add 'const' qualifier for GC_make_descriptor bitmap argumentIvan Maidanski2012-01-101-2/+2
| | | | | | | | * include/gc_typed.h (GC_make_descriptor): Make bm pointer const (replace GC_bitmap type with "const GC_word*"). * typd_mlc.c (GC_add_ext_descriptor, GC_make_descriptor): Likewise. * tests/test.c (bm_huge): Make array const to test updated GC_make_descriptor declaration.
* Use EXPECT for checking various 'initialized' boolean variablesIvan Maidanski2011-12-291-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * alloc.c (GC_try_to_collect_general, GC_expand_hp): Use "expect true" for GC_is_initialized value. * gcj_mlc.c (maybe_finalize): Likewise. * malloc.c (GC_alloc_large, GC_generic_malloc_inner, malloc): Likewise. * mallocx.c (GC_generic_malloc_many): Likewise. * mark_rts.c (GC_add_roots, GC_clear_roots): Likewise. * misc.c (GC_base, GC_init): Likewise. * ptr_chck.c (GC_same_obj, GC_is_valid_displacement, GC_is_visible): Likewise. * darwin_stop_world.c (GC_push_all_stacks): Use "expect true" for GC_thr_initialized value. * pthread_stop_world.c (GC_push_all_stacks): Likewise. * pthread_support.c (pthread_create): Likewise. * dyn_load.c (GC_register_dynamic_libraries_dl_iterate_phdr): Use "expect true" for excluded_segs value. * include/private/gc_priv.h (COND_DUMP): Use "expect false" for GC_dump_regularly value. * malloc.c (GC_generic_malloc): Use "expect false" for GC_have_errors value. * mallocx.c (GC_generic_malloc_ignore_off_page, GC_generic_malloc_many): Likewise. * malloc.c (calloc): Use "expect true" for lib_bounds_set value. * os_dep.c (GC_unix_mmap_get_mem): Use "expect true" for "initialized" value. * pthread_stop_world.c (GC_nacl_initialize_gc_thread): Use "expect true" for GC_nacl_thread_parking_inited value. * pthread_support.c (INIT_REAL_SYMS): Use "expect true" for GC_syms_initialized value; remove redundant trailing ';'. * pthread_support.c (GC_new_thread): Use "expect true" for first_thread_used value. * win32_threads.c (GC_new_thread): Likewise. * pthread_support.c (pthread_create): Use "expect true" for parallel_initialized value. * win32_threads.c (GC_CreateThread, GC_beginthreadex, GC_pthread_join, GC_pthread_create, GC_pthread_sigmask, GC_pthread_detach): Likewise. * pthread_support.c (pthread_create): Use "expect false" for "si" value to be NULL. * thread_local_alloc.c (GC_init_thread_local): Use "expect true" for keys_initialized value. * typd_mlc.c (GC_make_descriptor): Use "expect true" for GC_explicit_typing_initialized value.
* Replace ARGSUSED comment-based annotation with GCC 'unused' attribute.Ivan Maidanski2011-09-141-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Turn on unused-parameter checking for GCC. * alloc.c (GC_try_to_collect_general): Add GC_ATTR_UNUSED attribute to an argument. * tests/test.c (tiny_reverse_test, thr_run_one_test): Likewise. * backgraph.c (reset_back_edge, update_max_height): Replace ARGSUSED annotation with GC_ATTR_UNUSED attribute for some arguments. * checksums.c (GC_add_block): Likewise. * dbg_mlc.c (GC_debug_change_stubborn, GC_debug_end_stubborn_change, GC_check_heap_block): Likewise. * finalize.c (GC_null_finalize_mark_proc): Likewise. * gcj_mlc.c (GC_gcj_fake_mark_proc): Likewise. * mark.c (GC_noop, clear_marks_for_block, GC_mark_and_push): Likewise. * mark_rts.c (GC_push_conditional_with_exclusions, GC_push_current_stack): Likewise. * misc.c (GC_default_oom_fn, GC_do_blocking_inner): Likewise. * os_dep.c (GC_fault_handler_openbsd, GC_fault_handler, GC_remove_protection, GC_page_was_dirty, GC_page_was_ever_dirty): Likewise. * pthread_stop_world.c (GC_suspend_handler, GC_suspend_handler_inner): Likewise. * pthread_support.c (GC_do_blocking_inner): Likewise. * stubborn.c (GC_change_stubborn, GC_end_stubborn_change): Likewise. * tests/test.c (fail_proc1): Likewise. * typd_mlc.c (GC_array_mark_proc): Likewise. * win32_threads.c (GC_do_blocking_inner, DllMain): Likewise. * include/private/gc_priv.h (GC_ATTR_UNUSED): Define new macro. * cordxtra.c (CORD_ATTR_UNUSED): Likewise. * cordxtra.c (CORD_nul_func, CORD_lf_close_proc): Replace ARGSUSED annotation with CORD_ATTR_UNUSED attribute for an argument. * mach_dep.c (GC_clear_stack_inner): Remove ARGSUSED annotation and use "limit" argument in the function (to suppress compiler warning). * misc.c (GC_clear_stack_inner): Remove ARGSUSED. * tests/threadkey_test.c (on_thread_exit_inner, on_thread_exit): Use all function arguments (to suppress compiler warning). * configure.ac (CFLAGS): Remove "-Wno-unused-parameter" option.
* Resolve "comparison of signed and unsigned values" compiler warnings.Ivan Maidanski2011-08-211-3/+4
| | | | | | | | | | | | | | | | | * allchblk.c (GC_allochblk_nth): Cast MAX_BLACK_LIST_ALLOC and HBLKSIZE to signed_word. * mallocx.c (GC_generic_malloc_many): Cast my_bytes_allocd to word. * mark.c (GC_do_local_mark): Cast the result of local_top minus local_mark_stack to word (since is non-negative). * misc.c (GC_base): Declare sz as unsigned word. * misc.c (GC_enable_incremental): Cast bytes_written to size_t in comparison to len. * obj_map.c (GC_initialize_offsets): Declare 'i' as unsigned. * os_dep.c (GC_or_pages): Ditto. * typd_mlc.c (GC_init_explicit_typing): Ditto. * ptr_chck.c (GC_is_visible): Cast the result of p minus base to word. * typd_mlc.c (GC_make_descriptor): Cast last_set_bit to word (since non-negative) when compared to BITMAP_BITS.
* 2009-10-21 Ivan Maidanski <ivmai@mail.ru>ivmai2011-07-261-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-17 Ivan Maidanski <ivmai@mail.ru>ivmai2011-07-261-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-09-30 Ivan Maidanski <ivmai@mail.ru>ivmai2011-07-261-11/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-26 Ivan Maidanski <ivmai@mail.ru>ivmai2011-07-261-8/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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-20 Ivan Maidanski <ivmai@mail.ru>ivmai2011-07-261-18/+17
| | | | | | | | | * 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-16 Ivan Maidanski <ivmai@mail.ru>ivmai2011-07-261-236/+236
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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>ivmai2011-07-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | (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-06-12 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)hboehm2011-07-261-13/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 GC_finalizer_notifier directly, instead 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).
* 2009-06-09 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)hboehm2011-07-261-11/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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. * 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.
* 2008-10-24 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)hboehm2011-07-261-4/+6
| | | | | | | | | | | | * 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, include/javaxfc.h, include/private/gc_locks.h, include/private/gc_priv.h, malloc.c, mallocx.c, mark.c, mark_rts.c, misc.c, obj_map.c, os_dep.c, pthread_support.c, ptr_chck.c, stubborn.c, tests/test.c, thread_local_alloc.c, typd_mlc.c win32_threads.c: Add GC_CALL and GC_CALLBACK macro invocations. * test.c: Remove some old K&R code.
* 2008-10-21 Hans Boehm <Hans.Boehm@hp.com> (Really Ivan Maidanski)hboehm2011-07-261-1/+1
| | | | | | | | * 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, pthread_support.c, thread_local_alloc.c, typd_mlc.c, win32_threads.c: Fix comments.
* 2008-07-25 Hans Boehm <Hans.Boehm@hp.com> (Really mostly Ivan Maidanski)hboehm2011-07-261-29/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 the code (mostly casts to void * instead of target type), or were classified as too minor to bother. Note that all of Ivan's static declarations which did not correct outright 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. 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, 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, GC_set_java_finalization, GC_set_dont_expand, GC_set_no_dls, GC_set_max_retries, GC_set_dont_precollect, GC_set_finalizer_notifier. Always define GC_win32_free_heap. gc_config_macros.h: Define _REENTRANT after processing GC_THREADS. * include/gc_cpp.h: Improve GC_PLACEMENT_DELETE test, handling of operator new[] for old Windows compilers. * include/gc_inline.h (GC_MALLOC_FAST_GRANS): Add parentheses around arguments. * dbg_mlc.c, malloc.c, misc.c: Add many GC_API specs. * mark.c (GC_mark_and_push_stack): Fix source argument for 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. 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. No longer set GC_old_bus_handler in DARWIN workaround. * pthread_support.c: GC_register_my_thread must also call GC_init_thread_local.
* 2008-02-06 Hans Boehm <Hans.Boehm@hp.com> (mostly from Henning Makholm)hboehm2011-07-261-1/+8
| | | | | * include/private/gc_priv.h, mark_rts.c, typd_mlc.c: Add GC_push_typed_structures() to push GC_ext_descriptors.
* 2007-06-06 Hans Boehm <Hans.Boehm@hp.com>hboehm2011-07-261-3/+3
| | | | | | | | | | | | | | | | | | | * 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, 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, include/private/gc_hdrs.h, include/private/gc_pmark.h, include/private/gc_priv.h, tests/test_cpp.cc: Replace old style function declarations. Clean up integral types. Remove register declarations. The change in malloc.c and the "int descr" declaration in mark.c are the most likely to have been real bugs outside of win64. * msvc_dbg.c: Disable on win64. * win32_threads.c: Add AMD64 support. * include/gc.h: no backtrace on AMD64 for now.
* gc7.0alpha5 tarball importgc7_0alpha5Ivan Maidanski2011-07-261-12/+12
|
* gc7.0alpha1 tarball importgc7_0alpha1Ivan Maidanski2011-07-261-190/+103
|
* gc6.3alpha5 tarball importgc6_3alpha5Ivan Maidanski2011-07-261-36/+12
|
* gc6.2 tarball importgc6_2Ivan Maidanski2011-07-261-3/+4
|
* gc6.0 tarball importgc6_0Ivan Maidanski2011-07-261-43/+58
|
* gc5.3 tarball importgc5_3Ivan Maidanski2011-07-261-3/+6
|
* gc4.14 tarball importgc4_14Ivan Maidanski2011-07-261-3/+3
|
* gc4.13 tarball importgc4_13Ivan Maidanski2011-07-261-4/+5
|
* gc4.12 tarball importgc4_12Ivan Maidanski2011-07-261-3/+50
|
* gc4.11 tarball importgc4_11Ivan Maidanski2011-07-261-8/+11
|
* gc4.8 tarball importgc4_8Ivan Maidanski2011-07-261-24/+10
|
* gc4.1 tarball importgc4_1Ivan Maidanski2011-07-261-0/+777