aboutsummaryrefslogtreecommitdiffstats
path: root/src/lisp.h
diff options
context:
space:
mode:
authorPaul Eggert2020-01-03 17:14:00 -0800
committerPaul Eggert2020-01-03 17:15:44 -0800
commitcadf985cb68a760ef342d61572620cb215cf86fb (patch)
treee27b62837d480907fff649ad5bc23047ec1be6d6 /src/lisp.h
parent98ab70bc5185e8d767a9076f4f9796c1fa1a9262 (diff)
downloademacs-cadf985cb68a760ef342d61572620cb215cf86fb.tar.gz
emacs-cadf985cb68a760ef342d61572620cb215cf86fb.zip
Let the OS clear new large strings of NUL
On my platform, this sped up (make-string 4000000000 0) from 2.5 to 0.015 seconds (not that people should want to do this much :-). * src/alloc.c (allocate_string_data): New arg CLEARIT. Callers changed. (Fmake_string): Prefer calloc to malloc+memset when allocating a large string of NUL bytes. (make_clear_string): New function. (make_uninit_string): Use it. (make_clear_multibyte_string): New function. (make_uninit_multibyte_string): Use it.
Diffstat (limited to 'src/lisp.h')
-rw-r--r--src/lisp.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/lisp.h b/src/lisp.h
index 36bb79d67e1..9be7bfec5c0 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3812,7 +3812,8 @@ extern void parse_str_as_multibyte (const unsigned char *, ptrdiff_t,
3812/* Defined in alloc.c. */ 3812/* Defined in alloc.c. */
3813extern void *my_heap_start (void); 3813extern void *my_heap_start (void);
3814extern void check_pure_size (void); 3814extern void check_pure_size (void);
3815extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT); 3815extern void allocate_string_data (struct Lisp_String *, EMACS_INT, EMACS_INT,
3816 bool);
3816extern void malloc_warning (const char *); 3817extern void malloc_warning (const char *);
3817extern AVOID memory_full (size_t); 3818extern AVOID memory_full (size_t);
3818extern AVOID buffer_memory_full (ptrdiff_t); 3819extern AVOID buffer_memory_full (ptrdiff_t);