aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorKen Brown2014-08-28 10:48:02 -0400
committerKen Brown2014-08-28 10:48:02 -0400
commitea652500776aacbb8cb64f9ecca16a2d2c7add80 (patch)
treec759fc62dfa422e8fb636aef6dbb04df2c68cc7e /src/lisp.h
parenta7ef7a0e53ae1f391f4bda207bb5e9b9d833d354 (diff)
downloademacs-ea652500776aacbb8cb64f9ecca16a2d2c7add80.tar.gz
emacs-ea652500776aacbb8cb64f9ecca16a2d2c7add80.zip
Add support for HYBRID_MALLOC, allowing the use of gmalloc before
dumping and the system malloc after dumping. (Bug#18222) * configure.ac (HYBRID_MALLOC): New macro; define to use gmalloc before dumping and the system malloc after dumping. Define on Cygwin. * src/conf_post.h (malloc, realloc, calloc, free) [HYBRID_MALLOC]: Define as macros, expanding to hybrid_malloc, etc. (HYBRID_GET_CURRENT_DIR_NAME): New macro. (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Define as macro. * src/gmalloc.c: Set up the infrastructure for HYBRID_MALLOC, with a full implementation on Cygwin. Remove Cygwin-specific code that is no longer needed. (malloc, realloc, calloc, free, aligned_alloc) [HYBRID_MALLOC]: Redefine as macros expanding to gmalloc, grealloc, etc. (DUMPED, ALLOCATED_BEFORE_DUMPING) [CYGWIN]: New macros. (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Undefine. (USE_PTHREAD, posix_memalign) [HYBRID_MALLOC]: Don't define. (hybrid_malloc, hybrid_calloc, hybrid_free, hybrid_realloc) [HYBRID_MALLOC]: (hybrid_get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: (hybrid_aligned_alloc) [HYBRID_MALLOC && (HAVE_ALIGNED_ALLOC || HAVE_POSIX_MEMALIGN)]: New functions. * src/alloc.c (aligned_alloc) [HYBRID_MALLOC && (ALIGNED_ALLOC || HAVE_POSIX_MEMALIGN)]: Define as macro expanding to hybrid_aligned_alloc; declare. (USE_ALIGNED_ALLOC) [HYBRID_MALLOC && (ALIGNED_ALLOC || HAVE_POSIX_MEMALIGN)]: Define. (refill_memory_reserve) [HYBRID_MALLOC]: Do nothing. * src/sysdep.c (get_current_dir_name) [HYBRID_GET_CURRENT_DIR_NAME]: Define as macro, expanding to gget_current_dir_name, and define the latter. * src/emacs.c (main) [HYBRID_MALLOC]: Don't call memory_warnings() or malloc_enable_thread(). Don't initialize malloc. * src/lisp.h (NONPOINTER_BITS) [CYGWIN]: Define (because GNU_MALLOC is no longer defined on Cygwin). (refill_memory_reserve) [HYBRID_MALLOC]: Don't declare. * src/sheap.c (bss_sbrk_buffer_end): New variable. * src/unexcw.c (__malloc_initialized): Remove variable. * src/ralloc.c: Throughout, treat HYBRID_MALLOC the same as SYSTEM_MALLOC. * src/xdisp.c (decode_mode_spec) [HYBRID_MALLOC]: Don't check Vmemory_full.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/lisp.h b/src/lisp.h
index b9f456b3745..98734a55812 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -88,7 +88,8 @@ DEFINE_GDB_SYMBOL_END (GCTYPEBITS)
88 2. We know malloc returns a multiple of 8. */ 88 2. We know malloc returns a multiple of 8. */
89#if (defined alignas \ 89#if (defined alignas \
90 && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \ 90 && (defined GNU_MALLOC || defined DOUG_LEA_MALLOC || defined __GLIBC__ \
91 || defined DARWIN_OS || defined __sun || defined __MINGW32__)) 91 || defined DARWIN_OS || defined __sun || defined __MINGW32__ \
92 || defined CYGWIN))
92# define NONPOINTER_BITS 0 93# define NONPOINTER_BITS 0
93#else 94#else
94# define NONPOINTER_BITS GCTYPEBITS 95# define NONPOINTER_BITS GCTYPEBITS
@@ -3629,7 +3630,7 @@ extern _Noreturn void memory_full (size_t);
3629extern _Noreturn void buffer_memory_full (ptrdiff_t); 3630extern _Noreturn void buffer_memory_full (ptrdiff_t);
3630extern bool survives_gc_p (Lisp_Object); 3631extern bool survives_gc_p (Lisp_Object);
3631extern void mark_object (Lisp_Object); 3632extern void mark_object (Lisp_Object);
3632#if defined REL_ALLOC && !defined SYSTEM_MALLOC 3633#if defined REL_ALLOC && !defined SYSTEM_MALLOC && !defined HYBRID_MALLOC
3633extern void refill_memory_reserve (void); 3634extern void refill_memory_reserve (void);
3634#endif 3635#endif
3635extern const char *pending_malloc_warning; 3636extern const char *pending_malloc_warning;