summaryrefslogtreecommitdiff
path: root/Zend/zend_globals.h
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2010-04-20 11:05:54 +0000
committerDmitry Stogov <dmitry@php.net>2010-04-20 11:05:54 +0000
commitdd5c478be61a0ef94b54837cfa875c964356e14f (patch)
treeafdce3c072b3c27f7721c6f24895a147a9f825b4 /Zend/zend_globals.h
parent94dd83722b57c4613ccf8371a3c4f50ffc274584 (diff)
downloadphp-git-dd5c478be61a0ef94b54837cfa875c964356e14f.tar.gz
Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed.
Diffstat (limited to 'Zend/zend_globals.h')
-rw-r--r--Zend/zend_globals.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/Zend/zend_globals.h b/Zend/zend_globals.h
index 368e88ec39..19be67d1de 100644
--- a/Zend/zend_globals.h
+++ b/Zend/zend_globals.h
@@ -140,6 +140,18 @@ struct _zend_compiler_globals {
HashTable *labels;
zend_stack labels_stack;
+ /* interned strings */
+ char *interned_strings_start;
+ char *interned_strings_end;
+ char *interned_strings_top;
+ char *interned_strings_snapshot_top;
+
+ HashTable interned_strings;
+
+ char *(*new_interned_string)(char *str, int len, int free_src TSRMLS_DC);
+ void (*interned_strings_snapshot)(TSRMLS_D);
+ void (*interned_strings_restore)(TSRMLS_D);
+
#ifdef ZEND_MULTIBYTE
zend_encoding **script_encoding_list;
size_t script_encoding_list_size;