diff options
-rw-r--r-- | Zend/zend_alloc.c | 29 | ||||
-rw-r--r-- | Zend/zend_alloc.h | 3 | ||||
-rw-r--r-- | Zend/zend_globals.h | 1 | ||||
-rw-r--r-- | Zend/zend_language_parser.y | 2 |
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); } |