summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_alloc.c10
-rw-r--r--Zend/zend_alloc.h14
-rw-r--r--Zend/zend_smart_str.h17
3 files changed, 16 insertions, 25 deletions
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index 16fd42e80f..6701ca4902 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -287,6 +287,16 @@ struct _zend_mm_bin {
char bytes[ZEND_MM_PAGE_SIZE * 8];
};
+#if ZEND_DEBUG
+typedef struct _zend_mm_debug_info {
+ size_t size;
+ const char *filename;
+ const char *orig_filename;
+ uint lineno;
+ uint orig_lineno;
+} zend_mm_debug_info;
+#endif
+
struct _zend_mm_free_slot {
zend_mm_free_slot *next_free_slot;
};
diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h
index 0cb3a71d34..6d89884f0d 100644
--- a/Zend/zend_alloc.h
+++ b/Zend/zend_alloc.h
@@ -50,20 +50,6 @@ typedef struct _zend_leak_info {
uint orig_lineno;
} zend_leak_info;
-#if ZEND_DEBUG
-typedef struct _zend_mm_debug_info {
- size_t size;
- const char *filename;
- const char *orig_filename;
- uint lineno;
- uint orig_lineno;
-} zend_mm_debug_info;
-
-# define ZEND_MM_OVERHEAD ZEND_MM_ALIGNED_SIZE(sizeof(zend_mm_debug_info))
-#else
-# define ZEND_MM_OVERHEAD 0
-#endif
-
BEGIN_EXTERN_C()
ZEND_API char* ZEND_FASTCALL zend_strndup(const char *s, size_t length) ZEND_ATTRIBUTE_MALLOC;
diff --git a/Zend/zend_smart_str.h b/Zend/zend_smart_str.h
index 4a37dd66f0..c18b133dfe 100644
--- a/Zend/zend_smart_str.h
+++ b/Zend/zend_smart_str.h
@@ -22,19 +22,14 @@
#include <zend.h>
#include "zend_smart_str_public.h"
-#define SMART_STR_OVERHEAD (ZEND_MM_OVERHEAD + _STR_HEADER_SIZE)
-
-#ifndef SMART_STR_PAGE
-# define SMART_STR_PAGE 4096
+#ifndef SMART_STR_PREALLOC
+#define SMART_STR_PREALLOC 128
#endif
#ifndef SMART_STR_START_SIZE
-# define SMART_STR_START_SIZE (256 - SMART_STR_OVERHEAD - 1)
+#define SMART_STR_START_SIZE 78
#endif
-#define SMART_STR_NEW_SIZE(newlen) \
- (((newlen + SMART_STR_OVERHEAD + SMART_STR_PAGE) & ~(SMART_STR_PAGE - 1)) - SMART_STR_OVERHEAD - 1)
-
#define smart_str_appends_ex(dest, src, what) \
smart_str_appendl_ex((dest), (src), strlen(src), (what))
#define smart_str_appends(dest, src) \
@@ -60,14 +55,14 @@ static zend_always_inline size_t smart_str_alloc(smart_str *str, size_t len, zen
newlen = len;
str->a = newlen < SMART_STR_START_SIZE
? SMART_STR_START_SIZE
- : SMART_STR_NEW_SIZE(newlen);
+ : newlen + SMART_STR_PREALLOC;
str->s = zend_string_alloc(str->a, persistent);
str->s->len = 0;
} else {
newlen = str->s->len + len;
if (newlen >= str->a) {
- str->a = SMART_STR_NEW_SIZE(newlen);
- str->s = (zend_string *) perealloc2(str->s, _STR_HEADER_SIZE + str->a + 1, _STR_HEADER_SIZE + str->s->len + 1, persistent);
+ str->a = newlen + SMART_STR_PREALLOC;
+ str->s = (zend_string *) perealloc(str->s, _STR_HEADER_SIZE + str->a + 1, persistent);
}
}
return newlen;