| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
| |
of blocks while reallocating, if shrinking by more than one page.
(relocate_blocs, resize_blocs): Added failsafe to protect future
calling of these routines when in frozen state.
(r_alloc_thaw): Added call to r_alloc_init.
(relocate_blocks, resize_bloc, r_alloc_sbrk, r_alloc_thaw): Extended
functionality to let ralloc package work in frozen state, allowing
for the existence of unused blocks.
|
| |
|
|
|
|
|
| |
(r_alloc_freeze): Initialize if it hasn't been done.
(r_re_alloc, r_alloc_free, r_alloc_sbrk): Likewise.
|
| |
|
|
|
|
|
|
| |
Include getpagesize.h unconditionally.
(free_bloc): Don't die if bloc->next or bloc->prev is null.
[!emacs] (bzero): New macro definition.
|
|
|
|
| |
(r_alloc_free): Call refill_memory_reserve.
|
| |
|
|
|
|
|
|
|
|
|
| |
(struct bp): New field heap.
(get_bloc, free_bloc, obtain, r_alloc_sbrk): Update new fields.
(reorder_bloc): New function.
(update_heap_bloc_correspondence):
Renamed from update_heap_free_pointers. Update new fields.
(relinquish): Add error check for new fields.
|
|
|
|
|
|
|
|
|
| |
(struct heap): New slot `free'.
(obtain): Set `free' for new heap.
(get_bloc): Update `free'.
(find_heap): New function.
(update_heap_free_pointers): New function.
(resize_bloc, r_alloc_sbrk): Call update_heap_free_pointers.
|
|
|
|
| |
where the C library makes calls to sbrk directly.
|
|
|
|
|
| |
(r_alloc_freeze, r_alloc_thaw): New functions.
(r_alloc_sbrk): Refuse to move blocs, if frozen.
|
|
|
|
| |
to allocate the entire incomplete page.
|
| |
|
|
|
|
| |
casting addresses and sizes. It matters on the 64-bit Alpha.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
(free_bloc): This can now be simplified.
* ralloc.c (r_alloc_sbrk): When we allocate new space for the
malloc heap, zero it out even if we don't have any blocs in the
free list.
|
|
|
|
|
|
|
|
|
|
| |
(r_alloc_sbrk): Provide hysteresis in relocating the blocs.
(relinquish): Never free less than extra_bytes;
keep extra_bytes of empty space.
(obtain): Always get extra_bytes additional space.
(r_alloc_init): Set extra_bytes and page_size.
(ALIGNED, ROUNDUP, ROUND_TO_PAGE): Use page_size.
|
|
|
|
| |
[!emacs]: Delete definition of EXCEEDS_LISP_PTR.
|
|
|
|
|
|
| |
[emacs]: Moved #undef NULL and #include "getpagesize.h" here.
[! emacs]: #include <unistd.h>, <malloc.h>, <string.h>.
(r_alloc_init): Use NIL, not NULL.
|
|
|
|
|
|
|
|
|
|
|
| |
(real_morecore): New static variable.
(warnlevel, warn_function, check_memory_limits): Removed.
(obtain): Don't call check_memory_limits.
(obtain, relinquish, r_alloc_sbrk): Use (*real_morecore) in place of sbrk;
it returns 0 for errors, not -1.
(r_alloc_init): Set real_morecore to old value of __morecore.
Don't initialize lim_data or warnlevel, and don't call get_lim_data.
(memory_warnings): Function removed.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(memory_warnings): New function; just set warning data.
Use start_of_data if start is 0.
[!emacs]: Don't include config.h or lisp.h;
instead, use stddef.h. Define POINTER, SIZE, EXCEEDS_LISP_PTR.
[!emacs] (safe_bcopy): Define as macro using memmove.
(r_alloc_free): Clear *ptr.
(r_alloc_init): Renamed from malloc_init. Take no args.
Make it static; declare at top of file.
(r_alloc): Call r_alloc_init, if not initialized yet.
(r_alloc_initialized): Renamed from malloc_initialized; moved to top.
(ROUNDUP): Subtract 1, in case arg is already aligned.
(check_memory_limits): EXCEEDS_LISP_PTR renamed from EXCEEDS_ELISP_PTR.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
handle memory exhaustion, it's better to return an error code to
them than to call abort.
(obtain): If we cannot allocate more memory, don't call
abort. Instead, return non-zero iff the allocation is successful.
(get_more_space): If obtain fails, return zero.
(get_bloc): Return zero if we can't allocate the new bloc.
(r_alloc_sbrk): Return zero if we can't allocate more memory.
(r_alloc): If we can't allocate more memory, set *PTR to zero and
return zero.
(r_re_alloc): If we can't allocate more memory, leave *PTR
unchanged, and return zero.
* ralloc.c (warnfunction): Renamed to warn_function; users changed.
|
| |
|
|
|
|
|
|
|
|
| |
end of the heap, copying the data to it, and then freeing the
original bloc, just expand the original block. This saves a copy
and a call to sbrk, and also removes the large spike in memory
allocation that would occur when resizing large buffers. And it's
less code.
|
|
|
|
|
|
| |
NIL to (POINTER *).
(malloc_init): Give warning if sbrk returns zero. Wonder what
that's supposed to mean.
|
| |
|
| |
|
| |
|
| |
|
|
|