| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
(syms_of_alloc): defsubr it.
|
| |
|
|
| |
value of the slots.
|
| | |
|
| |
|
|
|
|
| |
mallopt.
* ralloc.c (r_alloc_init): Ditto.
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
| |
(Fgarbage_collect): Call mark_fringe_data.
(overrun_check_free): Invalidate freed memory if
XMALLOC_CLEAR_FREE_MEMORY is defined.
|
| |
|
|
|
| |
(emacs_blocked_free, emacs_blocked_malloc, emacs_blocked_realloc)
(reset_malloc_hooks, uninterrupt_malloc) [SYNC_INPUT]: Don't define.
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
(overrun_check_malloc, overrun_check_realloc): Only add
overhead and write check pattern if check_depth is 1 (to handle
recursive calls). Increase/decrease check_depth in entry/exit.
(overrun_check_free): Only check for overhead if check_depth is 1.
Increase/decrease check_depth in entry/exit.
|
| |
|
|
|
|
|
| |
Call that at the very start.
(undo_limit, undo_strong_limit, undo_outer_limit): To undo.c.
(syms_of_alloc): Don't define undo-limit,
undo-strong-limit and undo-outer-limit here.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(SIGNAL_THREAD_CHECK): New macro.
* keyboard.c (input_available_signal): Move thread checking code
to macro SIGNAL_THREAD_CHECK and call that macro.
(interrupt_signal): Call SIGNAL_THREAD_CHECK.
* alloc.c (uninterrupt_malloc): Move main_thread to emacs.c.
* emacs.c: Define main_thread.
(main): Initialize main_thread.
(handle_USR1_signal, handle_USR2_signal, fatal_error_signal)
(memory_warning_signal): Call SIGNAL_THREAD_CHECK.
* floatfns.c (float_error): Call SIGNAL_THREAD_CHECK.
* dispnew.c (window_change_signal): Call SIGNAL_THREAD_CHECK.
* sysdep.c (select_alarm): Call SIGNAL_THREAD_CHECK.
* process.c (send_process_trap, sigchld_handler): Call
SIGNAL_THREAD_CHECK.
* data.c (arith_error): Call SIGNAL_THREAD_CHECK.
* atimer.c (alarm_signal_handler): Call SIGNAL_THREAD_CHECK.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(xg_get_file_name): Block and unblock __SIGRTMIN if defined.
* alloc.c: If HAVE_GTK_AND_PTHREAD, include pthread.h,
new variables main_thread and alloc_mutex,
define (UN)BLOCK_INPUT_ALLOC to use alloc_mutex to protect
emacs_blocked_* calls and only do (UN)BLOCK_INPUT in the main thread.
If not HAVE_GTK_AND_PTHREAD, (UN)BLOCK_INPUT_ALLOC is the same as
(UN)BLOCK_INPUT.
(emacs_blocked_free, emacs_blocked_malloc)
(emacs_blocked_realloc): Use (UN)BLOCK_INPUT_ALLOC.
(uninterrupt_malloc): Initialize main_thread and alloc_mutex.
(reset_malloc_hooks): New function.
* lisp.h: Declare reset_malloc_hooks.
* emacs.c (Fdump_emacs): Call reset_malloc_hooks.
* keyboard.c: Conditionally include pthread.h
(handle_async_inpu, input_available_signalt): If not in the main
thread, block signal, send signal to main thread and return.
|
| |
|
|
|
|
|
|
|
|
| |
(XMALLOC_PUT_SIZE, XMALLOC_GET_SIZE): New macros to handle
sizeof(size_t) != 4.
(overrun_check_malloc, overrun_check_realloc, overrun_check_free):
Use them. Also clear header and trailer of freed memory.
(GC_STRING_OVERRUN_COOKIE_SIZE): Rename from GC_STRING_EXTRA.
(string_overrun_cookie): Rename from string_overrun_pattern.
(GC_STRING_EXTRA): Define from GC_STRING_OVERRUN_COOKIE_SIZE.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
(XMALLOC_OVERRUN_CHECK_SIZE, xmalloc_overrun_check_header)
xmalloc_overrun_check_trailer, overrun_check_malloc)
overrun_check_realloc, overrun_check_free): Add.
(GC_STRING_EXTRA, string_overrun_pattern): Add.
(check_sblock, allocate_string_data, compact_small_strings):
Set and check string_overrun_pattern if GC_CHECK_STRING_OVERRUN.
(check_cons_list): Condition on GC_CHECK_CONS_LIST.
(check_string_free_list): Add.
(allocate_string, sweep_strings): Call check_string_free_list.
|
| | |
|
| | |
|
| |
|
|
| |
before doing the mark_stack_check_gcpros since they are not on the stack.
|
| | |
|
| | |
|
| |
|
|
|
| |
(free_misc): New function.
(safe_alloca_unwind, free_marker): Use it.
|
| |
|
|
|
| |
(make_save_value): Init new dogc member.
(mark_object): Mark Lisp_Save_Value pointer array if dogc is set.
|
| | |
|
| |
|
|
|
| |
(syms_of_alloc): Defvar it.
(Fgarbage_collect): Pass undo_outer_limit to truncate_undo_list.
|
| |
|
|
| |
Clean up HAVE_POSIX_MEMALIGN handling of `err'.
|
| |
|
|
|
|
|
|
|
|
| |
(marker_blocks_pending_free): Remove.
(Fgarbage_collect): Sweep after cleaning up undo-lists.
Mark the undo lists after claning them up.
Don't free block in marker_blocks_pending_free.
(mark_buffer): Don't mark undo_list.
(gc_sweep): Sweep hash-tables and strings first.
Do free marker blocks that are empty.
|
| |
|
|
| |
(Fgarbage_collect): Use the new mark_backtrace.
|
| |
|
|
|
| |
(gc_sweep): Store free marker blocks on that list.
(Fgarbage_collect): Free them after undo-list cleanup.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
| |
(Fgarbage_collect): Clear out buffer undo_list markers after gc_sweep.
Identify those markers as Lisp_Misc_Free objects. Clear car and cdr of
the removed cons cells.
(mark_object): Undo previous change - disallow Lisp_Misc_Free objects.
(gc_sweep): Clear cons_blocks before sweeping strings, so we don't have
any cons cells pointing to unallocated stings.
Do not lisp_free any marker blocks, as there may still be pointers
to them from buffer undo lists at this stage of GC.
|
| |
|
|
| |
unmarked elements of the undo list.
|
| | |
|
| |
|
|
| |
Such objects may be freed markers which still exist on an undo list.
|
| |
|
|
| |
BITS_PER_CHAR for bool vectors.
|
| | |
|
| |
|
|
|
| |
Don't check range of malloc address.
(pure_alloc) [USE_LSB_TAG]: Enforce alignment.
|
| |
|
|
|
|
|
| |
(struct symbol_block, struct marker_block, live_string_p)
(live_cons_p, live_symbol_p, live_float_p, live_misc_p):
Better preserve alignment for objects in blocks.
(FLOAT_BLOCK_SIZE): Adjust for possible alignment padding.
|
| |
|
|
| |
BLOCK/UNBLOCK_INPUT.
|
| |
|
|
|
|
| |
(make_float, Fcons, Fmake_symbol, allocate_misc): Move the increment
of block_index outside of the macro call.
(Fgarbage_collect): Remove null code.
|
| | |
|
| | |
|
| | |
|
| |
|
|
| |
(Fgarbage_collect, mark_object): Ignore the markbit.
|
| |
|
|
| |
avoid warning.
|
| | |
|
| | |
|
| |
|
|
|
| |
allocating ablocks, which also avoids freeing a pointer into an
ablocks structure.
|