dash patch
Nikola Vladov <[email protected]> Sat, 23 May 2009 18:04:40 +0300
| Newsgroups | gmane.comp.misc.pape.general |
|---|---|
| Message-ID | <[email protected]> |
Next patch rediced memory usage for dash. It works with 80k
also after: echo /bin/* /usr/bin/* /dev/* /etc/*
504 is too big for most mallocs!
SHELL_ALIGN(504 + sizeof(void*) + sizeof(malloc_header)) > 512
The definition of XXXSIZE is obvious.
Regards, Nikola
diff -urN dash-0.5.5.1/src/memalloc.c dash-0.5.5.1_nv/src/memalloc.c
--- dash-0.5.5.1/src/memalloc.c Wed Jan 14 01:37:13 2009
+++ dash-0.5.5.1_nv/src/memalloc.c Sat May 23 17:46:08 2009
@@ -97,7 +97,10 @@
*/
/* minimum size of a block */
-#define MINSIZE SHELL_ALIGN(504)
+/* #define MINSIZE SHELL_ALIGN(504) */
+typedef struct { void *next; size_t size; } __alloc_t;
+#define MINSIZE (512 - SHELL_ALIGN(sizeof(void*) + sizeof(__alloc_t)))
+#define XXXSIZE (4096 - SHELL_ALIGN(sizeof(void*) + sizeof(__alloc_t)))
struct stack_block {
struct stack_block *prev;
@@ -123,6 +126,10 @@
struct stack_block *sp;
blocksize = aligned;
+#if defined(__dietlibc__) || defined(MALLOC_USES_MMAP_FOR_BIG_BLOCKS)
+ if (stackp != &stackbase && blocksize < XXXSIZE)
+ blocksize = XXXSIZE;
+#endif
if (blocksize < MINSIZE)
blocksize = MINSIZE;
len = sizeof(struct stack_block) - MINSIZE + blocksize;