summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend_alloc.c29
-rw-r--r--Zend/zend_alloc.h3
-rw-r--r--Zend/zend_globals.h1
-rw-r--r--Zend/zend_language_parser.y2
4 files changed, 11 insertions, 24 deletions
diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c
index 077f4d8a6e..8dbc4a1462 100644
--- a/Zend/zend_alloc.c
+++ b/Zend/zend_alloc.c
@@ -93,10 +93,8 @@ static long mem_block_end_magic = MEM_BLOCK_END_MAGIC;
#define REMOVE_POINTER_FROM_LIST(p) \
- if (!p->persistent && p==AG(head)) { \
+ if (p==AG(head)) { \
AG(head) = p->pNext; \
- } else if (p->persistent && p==AG(phead)) { \
- AG(phead) = p->pNext; \
} else { \
p->pLast->pNext = p->pNext; \
} \
@@ -105,19 +103,11 @@ static long mem_block_end_magic = MEM_BLOCK_END_MAGIC;
}
#define ADD_POINTER_TO_LIST(p) \
- if (p->persistent) { \
- p->pNext = AG(phead); \
- if (AG(phead)) { \
- AG(phead)->pLast = p; \
- } \
- AG(phead) = p; \
- } else { \
- p->pNext = AG(head); \
- if (AG(head)) { \
- AG(head)->pLast = p; \
- } \
- AG(head) = p; \
- } \
+ p->pNext = AG(head); \
+ if (AG(head)) { \
+ AG(head)->pLast = p; \
+ } \
+ AG(head) = p; \
p->pLast = (zend_mem_header *) NULL;
#define DECLARE_CACHE_VARS() \
@@ -157,7 +147,6 @@ ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
AG(cache_stats)[CACHE_INDEX][1]++;
memcpy((((char *) p) + sizeof(zend_mem_header) + MEM_HEADER_PADDING + size), &mem_block_end_magic, sizeof(long));
#endif
- p->persistent = 0;
p->cached = 0;
p->size = size;
return (void *)((char *)p + sizeof(zend_mem_header) + MEM_HEADER_PADDING);
@@ -182,7 +171,7 @@ ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
HANDLE_UNBLOCK_INTERRUPTIONS();
return (void *)p;
}
- p->persistent = p->cached = 0;
+ p->cached = 0;
ADD_POINTER_TO_LIST(p);
p->size = size; /* Save real size for correct cache output */
#if ZEND_DEBUG
@@ -233,7 +222,7 @@ ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
#endif
if (!ZEND_DISABLE_MEMORY_CACHE
- && !p->persistent && (CACHE_INDEX < MAX_CACHED_MEMORY) && (AG(cache_count)[CACHE_INDEX] < MAX_CACHED_ENTRIES)) {
+ && (CACHE_INDEX < MAX_CACHED_MEMORY) && (AG(cache_count)[CACHE_INDEX] < MAX_CACHED_ENTRIES)) {
AG(cache)[CACHE_INDEX][AG(cache_count)[CACHE_INDEX]++] = p;
p->cached = 1;
#if ZEND_DEBUG
@@ -408,7 +397,7 @@ ZEND_API void start_memory_manager(TSRMLS_D)
#endif
#endif
- AG(phead) = AG(head) = NULL;
+ AG(head) = NULL;
#if MEMORY_LIMIT
AG(memory_limit) = 1<<30; /* ridiculous limit, effectively no limit */
diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h
index 0cbe9a801c..66b394bf76 100644
--- a/Zend/zend_alloc.h
+++ b/Zend/zend_alloc.h
@@ -45,8 +45,7 @@ typedef struct _zend_mem_header {
#endif
struct _zend_mem_header *pNext;
struct _zend_mem_header *pLast;
- unsigned int size:30;
- unsigned int persistent:1;
+ unsigned int size:31;
unsigned int cached:1;
} zend_mem_header;
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index 046b0619ce..fa9cde9cf1 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -213,7 +213,6 @@ struct _zend_executor_globals {
struct _zend_alloc_globals {
zend_mem_header *head; /* standard list */
- zend_mem_header *phead; /* persistent list */
void *cache[MAX_CACHED_MEMORY][MAX_CACHED_ENTRIES];
unsigned int cache_count[MAX_CACHED_MEMORY];
void *fast_cache_list_head[MAX_FAST_CACHE_TYPES];
diff --git a/Zend/zend_language_parser.y b/Zend/zend_language_parser.y
index a6a6fc7a83..ea8b781f69 100644
--- a/Zend/zend_language_parser.y
+++ b/Zend/zend_language_parser.y
@@ -608,7 +608,7 @@ common_scalar:
static_scalar: /* compile-time evaluated scalars */
common_scalar { $$ = $1; }
| T_STRING { zend_do_fetch_constant(&$$, NULL, &$1, ZEND_CT TSRMLS_CC); }
- | '+' static_scalar { $$ = $1; }
+ | '+' static_scalar { $$ = $2; }
| '-' static_scalar { zval minus_one; minus_one.type = IS_LONG; minus_one.value.lval = -1; mul_function(&$2.u.constant, &$2.u.constant, &minus_one TSRMLS_CC); $$ = $2; }
| T_ARRAY '(' static_array_pair_list ')' { $$ = $3; $$.u.constant.type = IS_CONSTANT_ARRAY; }
| parse_class_name_entry T_STRING { zend_do_fetch_constant(&$$, &$1, &$2, ZEND_CT TSRMLS_CC); }