summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXuefer <xuefer@gmail.com>2013-07-08 08:00:36 +0000
committerXuefer <xuefer@gmail.com>2013-07-08 08:00:36 +0000
commitc7492e6c3a468aa33b5426cc792327d8e40e38c9 (patch)
tree22b0cc7e47c452e3527d41cbd5ee9b0765cb659d
parentc8b77e8be67fe7c17242f729052182183d973e11 (diff)
downloadxcache-c7492e6c3a468aa33b5426cc792327d8e40e38c9.tar.gz
xcache-c7492e6c3a468aa33b5426cc792327d8e40e38c9.zip
remove php 4 support completely
git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1281 c26eb9a1-5813-0410-bd6c-c2e55f420ca7
-rw-r--r--ChangeLog3
-rw-r--r--Makefile.frag.deps4
-rw-r--r--NEWS2
-rw-r--r--devel/prepare.cfg.example1
-rw-r--r--devel/prepare.mak10
-rwxr-xr-xdevel/run6
-rw-r--r--lib/Decompiler.class.php20
-rw-r--r--mod_cacher/xc_cache.h16
-rw-r--r--mod_cacher/xc_cacher.c79
-rw-r--r--mod_coverager/xc_coverager.c5
-rw-r--r--mod_disassembler/xc_disassembler.c11
-rw-r--r--mod_optimizer/xc_optimizer.c31
-rw-r--r--processor/head.m410
-rw-r--r--processor/processor.m4110
-rw-r--r--xcache.c16
-rw-r--r--xcache/xc_compatibility.c12
-rw-r--r--xcache/xc_compatibility.h38
-rw-r--r--xcache/xc_const_string.c4
-rw-r--r--xcache/xc_const_string_opcodes_php4.x.h116
-rw-r--r--xcache/xc_const_string_opcodes_php5.3.h2
-rw-r--r--xcache/xc_ini.h3
-rw-r--r--xcache/xc_opcode_spec.c6
-rw-r--r--xcache/xc_opcode_spec_def.h63
-rw-r--r--xcache/xc_sandbox.c6
-rw-r--r--xcache/xc_utils.c61
-rw-r--r--xcache/xc_utils.h2
26 files changed, 93 insertions, 544 deletions
diff --git a/ChangeLog b/ChangeLog
index 62b4191..38e8ed2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,12 +1,13 @@
3.1.0 2013-??-??
ChangeLog
========
+ * drop support for PHP_4 in source code
* disassembler: fixes crash with nested sandbox
* adds support for PHP_5_5
* compatible with fcntl fork
* support for __FILE__ __DIR__ handling after files moved/hardlinked (without xcache.experimental)
-3.0.3 2013-16.18
+3.0.3 2013-16-18
========
* clean files in release (fix htdocs config)
diff --git a/Makefile.frag.deps b/Makefile.frag.deps
index aaacf0b..015f601 100644
--- a/Makefile.frag.deps
+++ b/Makefile.frag.deps
@@ -5,14 +5,14 @@ mod_coverager/xc_coverager.lo $(builddir)/mod_coverager/xc_coverager.lo: $(srcdi
mod_decoder/xc_decoder.lo $(builddir)/mod_decoder/xc_decoder.lo:
mod_disassembler/xc_disassembler.lo $(builddir)/mod_disassembler/xc_disassembler.lo: $(srcdir)/mod_cacher/xc_cache.h $(srcdir)/mod_disassembler/xc_disassembler.h $(srcdir)/xcache.h $(srcdir)/xcache/xc_allocator.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_ini.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_sandbox.h $(srcdir)/xcache/xc_shm.h $(srcdir)/xcache/xc_utils.h $(XCACHE_PROC_H)
mod_encoder/xc_encoder.lo $(builddir)/mod_encoder/xc_encoder.lo:
-mod_optimizer/xc_optimizer.lo $(builddir)/mod_optimizer/xc_optimizer.lo: $(srcdir)/mod_optimizer/xc_optimizer.h $(srcdir)/util/xc_stack.h $(srcdir)/util/xc_trace.h $(srcdir)/xcache_globals.h $(srcdir)/xcache.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_extension.h $(srcdir)/xcache/xc_ini.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_shm.h $(srcdir)/xcache/xc_utils.h
+mod_optimizer/xc_optimizer.lo $(builddir)/mod_optimizer/xc_optimizer.lo: $(srcdir)/mod_cacher/xc_cache.h $(srcdir)/mod_optimizer/xc_optimizer.h $(srcdir)/util/xc_stack.h $(srcdir)/util/xc_trace.h $(srcdir)/xcache_globals.h $(srcdir)/xcache.h $(srcdir)/xcache/xc_allocator.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_const_string.h $(srcdir)/xcache/xc_extension.h $(srcdir)/xcache/xc_ini.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_shm.h $(srcdir)/xcache/xc_utils.h $(XCACHE_PROC_H)
util/xc_stack.lo $(builddir)/util/xc_stack.lo: $(srcdir)/util/xc_stack.h $(srcdir)/util/xc_trace.h
util/xc_trace.lo $(builddir)/util/xc_trace.lo: $(srcdir)/util/xc_trace.h
xcache.lo $(builddir)/xcache.lo: $(srcdir)/util/xc_foreachcoresig.h $(srcdir)/util/xc_stack.h $(srcdir)/xcache_globals.h $(srcdir)/xcache.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_const_string.h $(srcdir)/xcache/xc_extension.h $(srcdir)/xcache/xc_ini.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_opcode_spec.h $(srcdir)/xcache/xc_shm.h $(srcdir)/xcache/xc_utils.h
xcache/xc_allocator_bestfit.lo $(builddir)/xcache/xc_allocator_bestfit.lo: $(srcdir)/util/xc_align.h $(srcdir)/util/xc_trace.h $(srcdir)/xcache/xc_allocator.h $(srcdir)/xcache/xc_shm.h
xcache/xc_allocator.lo $(builddir)/xcache/xc_allocator.lo: $(srcdir)/xcache/xc_allocator.h $(srcdir)/xcache/xc_shm.h
xcache/xc_compatibility.lo $(builddir)/xcache/xc_compatibility.lo: $(srcdir)/xcache/xc_compatibility.h
-xcache/xc_const_string.lo $(builddir)/xcache/xc_const_string.lo: $(srcdir)/xcache.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_const_string.h $(srcdir)/xcache/xc_const_string_opcodes_php5.5.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_shm.h
+xcache/xc_const_string.lo $(builddir)/xcache/xc_const_string.lo: $(srcdir)/xcache.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_const_string.h $(srcdir)/xcache/xc_const_string_opcodes_php5.0.h $(srcdir)/xcache/xc_const_string_opcodes_php5.1.h $(srcdir)/xcache/xc_const_string_opcodes_php5.3.h $(srcdir)/xcache/xc_const_string_opcodes_php5.4.h $(srcdir)/xcache/xc_const_string_opcodes_php5.5.h $(srcdir)/xcache/xc_const_string_opcodes_php6.x.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_shm.h
xcache/xc_extension.lo $(builddir)/xcache/xc_extension.lo: $(srcdir)/util/xc_stack.h $(srcdir)/util/xc_trace.h $(srcdir)/xcache.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_extension.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_shm.h
xcache/xc_ini.lo $(builddir)/xcache/xc_ini.lo: $(srcdir)/xcache/xc_ini.h
xcache/xc_lock.lo $(builddir)/xcache/xc_lock.lo: $(srcdir)/xcache.h $(srcdir)/xcache/xc_compatibility.h $(srcdir)/xcache/xc_lock.h $(srcdir)/xcache/xc_shm.h
diff --git a/NEWS b/NEWS
index e03b5e2..43f88d5 100644
--- a/NEWS
+++ b/NEWS
@@ -5,7 +5,7 @@
* compatible with fcntl fork
* support for __FILE__ __DIR__ handling after files moved/hardlinked
-3.0.3 2013-16.18
+3.0.3 2013-16-18
========
* clean files in release (fix htdocs config)
diff --git a/devel/prepare.cfg.example b/devel/prepare.cfg.example
index 0968403..78382d3 100644
--- a/devel/prepare.cfg.example
+++ b/devel/prepare.cfg.example
@@ -1,5 +1,4 @@
# copy this file as prepare.cfg before modifying
-PHP4_x_DIR=
PHP5_0_DIR=
PHP5_1_DIR=
PHP5_3_DIR=
diff --git a/devel/prepare.mak b/devel/prepare.mak
index 2f826c0..4f74ce7 100644
--- a/devel/prepare.mak
+++ b/devel/prepare.mak
@@ -17,7 +17,6 @@ clean_xc_const_string:
.PHONY: xc_const_string
xc_const_string: \
- xcache/xc_const_string_opcodes_php4.x.h \
xcache/xc_const_string_opcodes_php5.0.h \
xcache/xc_const_string_opcodes_php5.1.h \
xcache/xc_const_string_opcodes_php5.3.h \
@@ -34,15 +33,6 @@ xcache/xc_opcode_spec_def.h: ${EA_DIR}/opcodes.c
mv "$@".tmp "$@"
endif
-ifeq (${PHP4_x_DIR},)
-xcache/xc_const_string_opcodes_php4.x.h: dummy
- @echo "Skipped $@: PHP_4_x_DIR not set"
-else
-xcache/xc_const_string_opcodes_php4.x.h: ${PHP4_x_DIR}/Zend/zend_compile.h
- $(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
- mv "$@.tmp" "$@"
-endif
-
ifeq (${PHP5_0_DIR},)
xcache/xc_const_string_opcodes_php5.0.h: dummy
@echo "Skipped $@: PHP_5_0_DIR not set"
diff --git a/devel/run b/devel/run
index 85bfef2..5c93c5c 100755
--- a/devel/run
+++ b/devel/run
@@ -96,6 +96,12 @@ updatedeps() { # {{{1
esac
case "$dependency" in
+ *xc_const_string_opcodes_php*)
+ for dependency in xcache/xc_const_string_*.h; do
+ echo '$(srcdir)/'$dependency
+ done
+ ;;
+
/*) ;;
$sourceFile) ;;
diff --git a/lib/Decompiler.class.php b/lib/Decompiler.class.php
index 8ed2180..f78d59d 100644
--- a/lib/Decompiler.class.php
+++ b/lib/Decompiler.class.php
@@ -1407,9 +1407,6 @@ class Decompiler
$EX['object'] = (int) $res['var'];
$EX['called_scope'] = null;
$EX['fbc'] = 'new ' . unquoteName($this->getOpVal($op1, $EX), $EX);
- if (!ZEND_ENGINE_2) {
- $resvar = '$new object$';
- }
break;
// }}}
case XC_THROW: // {{{
@@ -1480,7 +1477,7 @@ class Decompiler
$fetchtype = ($ext & ZEND_FETCH_TYPE_MASK);
}
else {
- $fetchtype = $op2[!ZEND_ENGINE_2 ? 'fetch_type' : 'EA.type'];
+ $fetchtype = $op2['EA.type'];
}
switch ($fetchtype) {
case ZEND_FETCH_STATIC_MEMBER:
@@ -1701,7 +1698,7 @@ class Decompiler
}
}
- switch ((!ZEND_ENGINE_2 ? $op['op2']['var'] /* constant */ : $ext) & (ZEND_ISSET|ZEND_ISEMPTY)) {
+ switch (($ext & (ZEND_ISSET|ZEND_ISEMPTY))) {
case ZEND_ISSET:
$rvalue = "isset(" . str($rvalue) . ")";
break;
@@ -1754,9 +1751,6 @@ class Decompiler
case XC_INIT_NS_FCALL_BY_NAME:
case XC_INIT_FCALL_BY_NAME: // {{{
array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope']));
- if (!ZEND_ENGINE_2 && ($ext & ZEND_CTOR_CALL)) {
- break;
- }
$EX['object'] = null;
$EX['called_scope'] = null;
$EX['fbc'] = $this->getOpVal($op2, $EX);
@@ -2475,10 +2469,7 @@ class Decompiler
}
$mangled = false;
- if (!ZEND_ENGINE_2) {
- echo 'var ';
- }
- else if (!isset($info)) {
+ if (!isset($info)) {
echo 'public ';
}
else {
@@ -2639,7 +2630,6 @@ define('ZEND_ENGINE_2_4', PHP_VERSION >= "5.3.99");
define('ZEND_ENGINE_2_3', ZEND_ENGINE_2_4 || PHP_VERSION >= "5.3.");
define('ZEND_ENGINE_2_2', ZEND_ENGINE_2_3 || PHP_VERSION >= "5.2.");
define('ZEND_ENGINE_2_1', ZEND_ENGINE_2_2 || PHP_VERSION >= "5.1.");
-define('ZEND_ENGINE_2', ZEND_ENGINE_2_1 || PHP_VERSION >= "5.0.");
define('ZEND_ACC_STATIC', 0x01);
define('ZEND_ACC_ABSTRACT', 0x02);
@@ -2737,10 +2727,10 @@ define('BYREF_FORCE_REST', 3);
define('IS_NULL', 0);
define('IS_LONG', 1);
define('IS_DOUBLE', 2);
-define('IS_BOOL', ZEND_ENGINE_2 ? 3 : 6);
+define('IS_BOOL', 3);
define('IS_ARRAY', 4);
define('IS_OBJECT', 5);
-define('IS_STRING', ZEND_ENGINE_2 ? 6 : 3);
+define('IS_STRING', 6);
define('IS_RESOURCE', 7);
define('IS_CONSTANT', 8);
define('IS_CONSTANT_ARRAY', 9);
diff --git a/mod_cacher/xc_cache.h b/mod_cacher/xc_cache.h
index b90c6ea..33afe93 100644
--- a/mod_cacher/xc_cache.h
+++ b/mod_cacher/xc_cache.h
@@ -36,16 +36,16 @@ typedef struct {
/* {{{ xc_classinfo_t */
typedef struct {
#ifdef IS_UNICODE
- zend_uchar type;
+ zend_uchar type;
#endif
- const24_zstr key;
- zend_uint key_size;
- ulong h;
- zend_uint methodinfo_cnt;
+ const24_zstr key;
+ zend_uint key_size;
+ ulong h;
+ zend_uint methodinfo_cnt;
xc_op_array_info_t *methodinfos;
- xc_cest_t cest;
+ zend_class_entry *class_entry;
#ifndef ZEND_COMPILE_DELAYED_BINDING
- int oplineno;
+ int oplineno;
#endif
} xc_classinfo_t;
/* }}} */
@@ -189,10 +189,8 @@ zend_bool xc_is_ro(const void *p);
zend_bool xc_is_shm(const void *p);
/* {{{ xc_gc_op_array_t */
typedef struct {
-#ifdef ZEND_ENGINE_2
zend_uint num_args;
zend_arg_info *arg_info;
-#endif
#ifdef ZEND_ENGINE_2_4
zend_literal *literals;
#endif
diff --git a/mod_cacher/xc_cacher.c b/mod_cacher/xc_cacher.c
index 49b4d17..08a7606 100644
--- a/mod_cacher/xc_cacher.c
+++ b/mod_cacher/xc_cacher.c
@@ -762,11 +762,6 @@ static zend_op_array *xc_entry_install(xc_entry_php_t *entry_php TSRMLS_DC) /* {
zend_uint i;
xc_entry_data_php_t *p = entry_php->php;
zend_op_array *old_active_op_array = CG(active_op_array);
-#ifndef ZEND_ENGINE_2
- ALLOCA_FLAG(use_heap)
- /* new ptr which is stored inside CG(class_table) */
- xc_cest_t **new_cest_ptrs = (xc_cest_t **)xc_do_alloca(sizeof(xc_cest_t*) * p->classinfo_cnt, use_heap);
-#endif
CG(active_op_array) = p->op_array;
@@ -789,21 +784,11 @@ static zend_op_array *xc_entry_install(xc_entry_php_t *entry_php TSRMLS_DC) /* {
/* install class */
for (i = 0; i < p->classinfo_cnt; i ++) {
xc_classinfo_t *ci = &p->classinfos[i];
-#ifndef ZEND_ENGINE_2
- zend_class_entry *ce = CestToCePtr(ci->cest);
- /* fix pointer to the be which inside class_table */
- if (ce->parent) {
- zend_uint class_idx = (/* class_num */ (int) (long) ce->parent) - 1;
- assert(class_idx < i);
- ci->cest.parent = new_cest_ptrs[class_idx];
- }
- new_cest_ptrs[i] =
-#endif
#ifdef ZEND_COMPILE_DELAYED_BINDING
- xc_install_class(entry_php->entry.name.str.val, &ci->cest, -1,
+ xc_install_class(entry_php->entry.name.str.val, ci->class_entry, -1,
UNISW(0, ci->type), ci->key, ci->key_size, ci->h TSRMLS_CC);
#else
- xc_install_class(entry_php->entry.name.str.val, &ci->cest, ci->oplineno,
+ xc_install_class(entry_php->entry.name.str.val, ci->class_entry, ci->oplineno,
UNISW(0, ci->type), ci->key, ci->key_size, ci->h TSRMLS_CC);
#endif
}
@@ -825,14 +810,6 @@ static zend_op_array *xc_entry_install(xc_entry_php_t *entry_php TSRMLS_DC) /* {
CG(zend_lineno) = 0;
#endif
- i = 1;
-#ifndef ZEND_ENGINE_2_2
- zend_hash_add(&EG(included_files), entry_php->entry.name.str.val, entry_php->entry.name.str.len+1, (void *)&i, sizeof(int), NULL);
-#endif
-
-#ifndef ZEND_ENGINE_2
- xc_free_alloca(new_cest_ptrs, use_heap);
-#endif
CG(active_op_array) = old_active_op_array;
return p->op_array;
}
@@ -1297,12 +1274,12 @@ static void xc_cache_early_binding_class_cb(zend_op *opline, int oplineno, void
char *class_name;
zend_uint i;
int class_len;
- xc_cest_t cest;
+ zend_class_entry *class_entry;
xc_entry_data_php_t *php = (xc_entry_data_php_t *) data;
class_name = Z_OP_CONSTANT(opline->op1).value.str.val;
class_len = Z_OP_CONSTANT(opline->op1).value.str.len;
- if (zend_hash_find(CG(class_table), class_name, class_len, (void **) &cest) == FAILURE) {
+ if (zend_hash_find(CG(class_table), class_name, class_len, (void **) &class_entry) == FAILURE) {
assert(0);
}
TRACE("got ZEND_DECLARE_INHERITED_CLASS: %s", class_name + 1);
@@ -1745,15 +1722,13 @@ static void xc_compile_php(xc_compiler_t *compiler, zend_file_handle *h, int typ
} while(0)
#ifdef HAVE_XCACHE_CONSTANT
- b = EG(zend_constants)->pListHead; COPY_H(xc_constinfo_t, constinfos, constinfo_cnt, constant, zend_constant);
+ b = EG(zend_constants)->pListHead; COPY_H(xc_constinfo_t, constinfos, constinfo_cnt, constant, zend_constant);
#endif
- b = CG(function_table)->pListHead; COPY_H(xc_funcinfo_t, funcinfos, funcinfo_cnt, func, zend_function);
- b = CG(class_table)->pListHead; COPY_H(xc_classinfo_t, classinfos, classinfo_cnt, cest, xc_cest_t);
+ b = CG(function_table)->pListHead; COPY_H(xc_funcinfo_t, funcinfos, funcinfo_cnt, func, zend_function);
+ b = CG(class_table)->pListHead; COPY_H(xc_classinfo_t, classinfos, classinfo_cnt, class_entry, zend_class_entry *);
#undef COPY_H
- /* for ZE1, cest need to be fixed inside store */
-
#ifdef ZEND_ENGINE_2_1
/* scan for acatived auto globals */
i = 0;
@@ -1790,8 +1765,7 @@ static void xc_compile_php(xc_compiler_t *compiler, zend_file_handle *h, int typ
for (i = 0; i < compiler->new_php.classinfo_cnt; i ++) {
xc_classinfo_t *classinfo = &compiler->new_php.classinfos[i];
- zend_class_entry *ce = CestToCePtr(classinfo->cest);
- classinfo->methodinfo_cnt = ce->function_table.nTableSize;
+ classinfo->methodinfo_cnt = classinfo->class_entry->function_table.nTableSize;
if (classinfo->methodinfo_cnt) {
int j;
@@ -1800,7 +1774,7 @@ static void xc_compile_php(xc_compiler_t *compiler, zend_file_handle *h, int typ
goto err_alloc;
}
- for (j = 0, b = ce->function_table.pListHead; b; j ++, b = b->pListNext) {
+ for (j = 0, b = classinfo->class_entry->function_table.pListHead; b; j ++, b = b->pListNext) {
xc_collect_op_array_info(compiler, &const_usage, &classinfo->methodinfos[j], (zend_op_array *) b->pData TSRMLS_CC);
}
}
@@ -2000,11 +1974,7 @@ static zend_op_array *xc_compile_file_sandboxed(void *data TSRMLS_DC) /* {{{ */
sandboxed_compiler->stored_php = stored_php;
/* discard newly compiled result, restore from stored one */
if (compiler->new_php.op_array) {
-#ifdef ZEND_ENGINE_2
destroy_op_array(compiler->new_php.op_array TSRMLS_CC);
-#else
- destroy_op_array(compiler->new_php.op_array);
-#endif
efree(compiler->new_php.op_array);
compiler->new_php.op_array = NULL;
}
@@ -2268,7 +2238,6 @@ static void xc_gc_op_array(void *pDest) /* {{{ */
{
xc_gc_op_array_t *op_array = (xc_gc_op_array_t *) pDest;
zend_uint i;
-#ifdef ZEND_ENGINE_2
if (op_array->arg_info) {
for (i = 0; i < op_array->num_args; i++) {
efree((char *) ZSTR_V(op_array->arg_info[i].name));
@@ -2278,7 +2247,6 @@ static void xc_gc_op_array(void *pDest) /* {{{ */
}
efree(op_array->arg_info);
}
-#endif
if (op_array->opcodes) {
efree(op_array->opcodes);
}
@@ -2794,8 +2762,8 @@ static void xc_holds_destroy(TSRMLS_D) /* {{{ */
static void xc_request_init(TSRMLS_D) /* {{{ */
{
if (!XG(internal_table_copied)) {
- zend_function tmp_func;
- xc_cest_t tmp_cest;
+ zend_function dummy_func;
+ zend_class_entry *dummy_class_entry;
#ifdef HAVE_XCACHE_CONSTANT
zend_hash_destroy(&XG(internal_constant_table));
@@ -2812,16 +2780,14 @@ static void xc_request_init(TSRMLS_D) /* {{{ */
#ifdef HAVE_XCACHE_CONSTANT
xc_copy_internal_zend_constants(&XG(internal_constant_table), EG(zend_constants));
#endif
- zend_hash_copy(&XG(internal_function_table), CG(function_table), NULL, &tmp_func, sizeof(tmp_func));
- zend_hash_copy(&XG(internal_class_table), CG(class_table), NULL, &tmp_cest, sizeof(tmp_cest));
+ zend_hash_copy(&XG(internal_function_table), CG(function_table), NULL, &dummy_func, sizeof(dummy_func));
+ zend_hash_copy(&XG(internal_class_table), CG(class_table), NULL, &dummy_class_entry, sizeof(dummy_class_entry));
XG(internal_table_copied) = 1;
}
xc_holds_init(TSRMLS_C);
xc_var_namespace_init(TSRMLS_C);
-#ifdef ZEND_ENGINE_2
zend_llist_init(&XG(gc_op_arrays), sizeof(xc_gc_op_array_t), xc_gc_op_array, 0);
-#endif
#if PHP_API_VERSION <= 20041225
XG(request_time) = time(NULL);
@@ -2842,9 +2808,7 @@ static void xc_request_shutdown(TSRMLS_D) /* {{{ */
xc_gc_expires_var(TSRMLS_C);
xc_gc_deletes(TSRMLS_C);
xc_var_namespace_destroy(TSRMLS_C);
-#ifdef ZEND_ENGINE_2
zend_llist_destroy(&XG(gc_op_arrays));
-#endif
}
/* }}} */
@@ -3775,16 +3739,10 @@ static PHP_RINIT_FUNCTION(xcache_cacher) /* {{{ */
return SUCCESS;
}
/* }}} */
-/* {{{ static PHP_RSHUTDOWN_FUNCTION(xcache_cacher) */
-#ifndef ZEND_ENGINE_2
-static PHP_RSHUTDOWN_FUNCTION(xcache_cacher)
-#else
+/* {{{ static ZEND_MODULE_POST_ZEND_DEACTIVATE_D(xcache_cacher) */
static ZEND_MODULE_POST_ZEND_DEACTIVATE_D(xcache_cacher)
-#endif
{
-#ifdef ZEND_ENGINE_2
TSRMLS_FETCH();
-#endif
xc_request_shutdown(TSRMLS_C);
return SUCCESS;
@@ -3797,22 +3755,13 @@ static zend_module_entry xcache_cacher_module_entry = { /* {{{ */
PHP_MINIT(xcache_cacher),
PHP_MSHUTDOWN(xcache_cacher),
PHP_RINIT(xcache_cacher),
-#ifndef ZEND_ENGINE_2
- PHP_RSHUTDOWN(xcache_cacher),
-#else
NULL,
-#endif
PHP_MINFO(xcache_cacher),
XCACHE_VERSION,
#ifdef PHP_GINIT
NO_MODULE_GLOBALS,
#endif
-#ifdef ZEND_ENGINE_2
ZEND_MODULE_POST_ZEND_DEACTIVATE_N(xcache_cacher),
-#else
- NULL,
- NULL,
-#endif
STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
diff --git a/mod_coverager/xc_coverager.c b/mod_coverager/xc_coverager.c
index db29f49..3b73a65 100644
--- a/mod_coverager/xc_coverager.c
+++ b/mod_coverager/xc_coverager.c
@@ -702,12 +702,7 @@ static zend_module_entry xcache_coverager_module_entry = { /* {{{ */
#ifdef PHP_GINIT
NO_MODULE_GLOBALS,
#endif
-#ifdef ZEND_ENGINE_2
NULL,
-#else
- NULL,
- NULL,
-#endif
STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
diff --git a/mod_disassembler/xc_disassembler.c b/mod_disassembler/xc_disassembler.c
index cffb9e2..42f2847 100644
--- a/mod_disassembler/xc_disassembler.c
+++ b/mod_disassembler/xc_disassembler.c
@@ -75,7 +75,7 @@ static void xc_dasm(zval *output, zend_op_array *op_array TSRMLS_DC) /* {{{ */
ALLOC_INIT_ZVAL(zv);
array_init(zv);
- xc_dasm_zend_class_entry(&dasm, zv, CestToCePtr(*(xc_cest_t *)b->pData) TSRMLS_CC);
+ xc_dasm_zend_class_entry(&dasm, zv, *(zend_class_entry **)b->pData TSRMLS_CC);
keysize = BUCKET_KEY_SIZE(b) + 2;
if (keysize > bufsize) {
@@ -150,11 +150,7 @@ zend_op_array *xc_dasm_sandboxed(void *data TSRMLS_DC) /* {{{ */
xc_dasm(sandboxed_dasm->output, op_array TSRMLS_CC);
/* free */
-#ifdef ZEND_ENGINE_2
destroy_op_array(op_array TSRMLS_CC);
-#else
- destroy_op_array(op_array);
-#endif
efree(op_array);
return NULL;
@@ -250,12 +246,7 @@ static zend_module_entry xcache_disassembler_module_entry = { /* {{{ */
#ifdef PHP_GINIT
NO_MODULE_GLOBALS,
#endif
-#ifdef ZEND_ENGINE_2
- NULL,
-#else
NULL,
- NULL,
-#endif
STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
diff --git a/mod_optimizer/xc_optimizer.c b/mod_optimizer/xc_optimizer.c
index 00e89b8..e909aae 100644
--- a/mod_optimizer/xc_optimizer.c
+++ b/mod_optimizer/xc_optimizer.c
@@ -1,4 +1,4 @@
-#if 1
+#if 0
# define XCACHE_DEBUG
#endif
@@ -43,9 +43,7 @@ typedef struct _bb_t {
int size;
bbid_t fall;
-#ifdef ZEND_ENGINE_2
bbid_t catch;
-#endif
#ifdef ZEND_ENGINE_2_5
bbid_t finally;
#endif
@@ -299,9 +297,7 @@ static bb_t *bb_new_ex(zend_op *opcodes, int count) /* {{{ */
bb_t *bb = (bb_t *) ecalloc(sizeof(bb_t), 1);
bb->fall = BBID_INVALID;
-#ifdef ZEND_ENGINE_2
bb->catch = BBID_INVALID;
-#endif
#ifdef ZEND_ENGINE_2_5
bb->finally = BBID_INVALID;
#endif
@@ -335,12 +331,12 @@ static void bb_print(bb_t *bb, zend_op_array *op_array) /* {{{ */
int line = bb->opcodes - op_array->opcodes;
op_flowinfo_t fi;
zend_op *last = bb->opcodes + bb->count - 1;
- bbid_t catchbbid = ZESW(BBID_INVALID, bb->catch);
+ bbid_t catchbbid = bb->catch;
bbid_t finallybbid;
#ifdef ZEND_ENGINE_2_5
- finallybbid = BBID_INVALID;
-#else
finallybbid = bb->finally;
+#else
+ finallybbid = BBID_INVALID;
#endif
op_get_flowinfo(&fi, last);
@@ -412,9 +408,7 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
typedef struct {
zend_bool isbbhead;
bbid_t bbid;
-#ifdef ZEND_ENGINE_2
bbid_t catchbbid;
-#endif
#ifdef ZEND_ENGINE_2_5
bbid_t finallybbid;
#endif
@@ -441,12 +435,10 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
}
}
}
-#ifdef ZEND_ENGINE_2
/* mark try start */
for (i = 0; i < op_array->last_try_catch; i ++) {
oplineinfos[op_array->try_catch_array[i].try_op].isbbhead = 1;
}
-#endif
/* }}} */
/* {{{ fill op lines with newly allocated id */
for (i = 0; i < count; i ++) {
@@ -462,7 +454,6 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
TRACE("bbids[%d] = %d", i, id);
}
/* }}} */
-#ifdef ZEND_ENGINE_2
/* {{{ fill op lines with catch id */
for (i = 0; i < count; i ++) {
oplineinfos[i].catchbbid = BBID_INVALID;
@@ -493,7 +484,6 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
}
#endif
/* }}} */
-#endif
/* {{{ create basic blocks */
start = 0;
id = 0;
@@ -505,9 +495,7 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
opline = op_array->opcodes + start;
bb = bbs_new_bb_ex(bbs, opline, i - start);
-#ifdef ZEND_ENGINE_2
bb->catch = oplineinfos[start].catchbbid;
-#endif
#ifdef ZEND_ENGINE_2_5
bb->finally = oplineinfos[start].finallybbid;
#endif
@@ -548,10 +536,8 @@ static int bbs_build_from(bbs_t *bbs, zend_op_array *op_array, int count) /* {{{
static void bbs_restore_opnum(bbs_t *bbs, zend_op_array *op_array) /* {{{ */
{
int i;
-#ifdef ZEND_ENGINE_2
bbid_t lasttrybbid;
bbid_t lastcatchbbid;
-#endif
#ifdef ZEND_ENGINE_2_5
bbid_t lastfinallybbid;
#endif
@@ -577,7 +563,6 @@ static void bbs_restore_opnum(bbs_t *bbs, zend_op_array *op_array) /* {{{ */
}
}
-#ifdef ZEND_ENGINE_2
lasttrybbid = BBID_INVALID;
lastcatchbbid = BBID_INVALID;
#ifdef ZEND_ENGINE_2_5
@@ -607,7 +592,6 @@ static void bbs_restore_opnum(bbs_t *bbs, zend_op_array *op_array) /* {{{ */
}
}
/* it is impossible to have last bb catched */
-#endif
}
/* }}} */
@@ -623,6 +607,7 @@ static int xc_optimize_op_array(zend_op_array *op_array TSRMLS_DC) /* {{{ */
}
#ifdef XCACHE_DEBUG
+ xc_fix_opcode(op_array TSRMLS_CC);
# if 0
TRACE("optimize file: %s", op_array->filename);
xc_dprint_zend_op_array(op_array, 0 TSRMLS_CC);
@@ -653,6 +638,7 @@ static int xc_optimize_op_array(zend_op_array *op_array TSRMLS_DC) /* {{{ */
xc_dprint_zend_op_array(op_array, 0 TSRMLS_CC);
# endif
op_print(op_array, 0, op_array->opcodes, op_array->opcodes + op_array->last);
+ xc_undo_fix_opcode(op_array TSRMLS_CC);
#endif
return 0;
}
@@ -736,12 +722,7 @@ static zend_module_entry xcache_optimizer_module_entry = { /* {{{ */
#ifdef PHP_GINIT
NO_MODULE_GLOBALS,
#endif
-#ifdef ZEND_ENGINE_2
NULL,
-#else
- NULL,
- NULL,
-#endif
STANDARD_MODULE_PROPERTIES_EX
};
/* }}} */
diff --git a/processor/head.m4 b/processor/head.m4
index 59b4171..a5b1b27 100644
--- a/processor/head.m4
+++ b/processor/head.m4
@@ -247,8 +247,8 @@ static zend_ulong xc_get_class_num(xc_processor_t *processor, zend_class_entry *
return processor->cache_class_index + 1;
}
for (i = 0; i < php->classinfo_cnt; i ++) {
- ceptr = CestToCePtr(php->classinfos[i].cest);
- if (ZCEP_REFCOUNT_PTR(ceptr) == ZCEP_REFCOUNT_PTR(ce)) {
+ ceptr = php->classinfos[i].class_entry;
+ if (ceptr == ce) {
processor->cache_ce = ceptr;
processor->cache_class_index = i;
return i + 1;
@@ -260,16 +260,13 @@ static zend_ulong xc_get_class_num(xc_processor_t *processor, zend_class_entry *
define(`xc_get_class_num', `xc_get_class_numNOTDEFINED')
/* }}} */
/* {{{ xc_get_class */
-#ifdef ZEND_ENGINE_2
static zend_class_entry *xc_get_class(xc_processor_t *processor, zend_ulong class_num) {
/* must be parent or currrent class */
assert(class_num <= processor->active_class_index + 1);
- return CestToCePtr(processor->php_dst->classinfos[class_num - 1].cest);
+ return processor->php_dst->classinfos[class_num - 1].class_entry;
}
-#endif
define(`xc_get_class', `xc_get_classNOTDEFINED')
/* }}} */
-#ifdef ZEND_ENGINE_2
/* fix method on store */
static void xc_fix_method(xc_processor_t *processor, zend_op_array *dst TSRMLS_DC) /* {{{ */
{
@@ -344,7 +341,6 @@ static void xc_fix_method(xc_processor_t *processor, zend_op_array *dst TSRMLS_D
}
}
/* }}} */
-#endif
/* {{{ call op_array ctor handler */
extern zend_bool xc_have_op_array_ctor;
static void xc_zend_extension_op_array_ctor_handler(zend_extension *extension, zend_op_array *op_array TSRMLS_DC)
diff --git a/processor/processor.m4 b/processor/processor.m4
index e0f4c6e..3a1527d 100644
--- a/processor/processor.m4
+++ b/processor/processor.m4
@@ -11,9 +11,7 @@ DECL_STRUCT_P_FUNC(`zend_constant')
DECL_STRUCT_P_FUNC(`zend_function')
DECL_STRUCT_P_FUNC(`xc_entry_var_t')
DECL_STRUCT_P_FUNC(`xc_entry_php_t')
-#ifdef ZEND_ENGINE_2
DECL_STRUCT_P_FUNC(`zend_property_info')
-#endif
/* }}} */
dnl ====================================================
#ifdef IS_CV
@@ -33,18 +31,6 @@ DEF_STRUCT_P_FUNC(`zend_uint', , `dnl {{{
DONE_SIZE(sizeof(src[0]))
')
dnl }}}
-#ifndef ZEND_ENGINE_2
-DEF_STRUCT_P_FUNC(`int', , `dnl {{{
- IFCOPY(`*dst = *src;')
- IFDPRINT(`
- INDENT()
- fprintf(stderr, "%d\n", src[0]);
- ')
- DONE_SIZE(sizeof(src[0]))
-')
-dnl }}}
-#endif
-#ifdef ZEND_ENGINE_2
DEF_STRUCT_P_FUNC(`zend_try_catch_element', , `dnl {{{
PROCESS(zend_uint, try_op)
PROCESS(zend_uint, catch_op)
@@ -54,7 +40,6 @@ DEF_STRUCT_P_FUNC(`zend_try_catch_element', , `dnl {{{
#endif
')
dnl }}}
-#endif
DEF_STRUCT_P_FUNC(`zend_brk_cont_element', , `dnl {{{
#ifdef ZEND_ENGINE_2_2
PROCESS(int, start)
@@ -66,9 +51,7 @@ DEF_STRUCT_P_FUNC(`zend_brk_cont_element', , `dnl {{{
dnl }}}
DEF_HASH_TABLE_FUNC(`HashTable_zval_ptr', `zval_ptr')
DEF_HASH_TABLE_FUNC(`HashTable_zend_function', `zend_function')
-#ifdef ZEND_ENGINE_2
DEF_HASH_TABLE_FUNC(`HashTable_zend_property_info', `zend_property_info')
-#endif
DEF_STRUCT_P_FUNC(`zval', , `dnl {{{
IFDASM(`do {
zval_dtor(dst);
@@ -132,10 +115,6 @@ proc_unicode:
case IS_OBJECT:
IFNOTMEMCPY(`IFCOPY(`memcpy(dst, src, sizeof(src[0]));')')
dnl STRUCT(value.obj)
-#ifndef ZEND_ENGINE_2
- STRUCT_P(zend_class_entry, value.obj.ce)
- STRUCT_P(HashTable, value.obj.properties, HashTable_zval_ptr)
-#endif
break;
default:
@@ -153,10 +132,8 @@ dnl }}}
#ifdef ZEND_ENGINE_2_3
PROCESS(zend_uint, refcount__gc)
-#elif defined(ZEND_ENGINE_2)
- PROCESS(zend_uint, refcount)
#else
- PROCESS(zend_ushort, refcount)
+ PROCESS(zend_uint, refcount)
#endif
')dnl IFDASM
')
@@ -225,7 +202,6 @@ DEF_STRUCT_P_FUNC(`zval_ptr_nullable', , `dnl {{{
DONE_SIZE(sizeof(zval_ptr_nullable))
')
dnl }}}
-#ifdef ZEND_ENGINE_2
DEF_STRUCT_P_FUNC(`zend_arg_info', , `dnl {{{
PROCESS(zend_uint, name_len)
PROC_ZSTRING_L(, name, name_len)
@@ -244,7 +220,6 @@ DEF_STRUCT_P_FUNC(`zend_arg_info', , `dnl {{{
#endif
')
dnl }}}
-#endif
#ifdef HAVE_XCACHE_CONSTANT
DEF_STRUCT_P_FUNC(`zend_constant', , `dnl {{{
STRUCT(zval, value)
@@ -278,7 +253,6 @@ DEF_STRUCT_P_FUNC(`zend_function', , `dnl {{{
DONE_SIZE(sizeof(src[0]))
')
dnl }}}
-#ifdef ZEND_ENGINE_2
DEF_STRUCT_P_FUNC(`zend_property_info', , `dnl {{{
PROCESS(zend_uint, flags)
PROCESS(int, name_length)
@@ -297,7 +271,6 @@ DEF_STRUCT_P_FUNC(`zend_property_info', , `dnl {{{
#endif
')
dnl }}}
-#endif
#ifdef ZEND_ENGINE_2_4
DEF_STRUCT_P_FUNC(`zend_trait_method_reference', , `dnl {{{
PROCESS(unsigned int, mname_len)
@@ -360,31 +333,14 @@ DEF_STRUCT_P_FUNC(`zend_class_entry', , `dnl {{{
PROCESS(char, type)
PROCESS(zend_uint, name_length)
PROC_ZSTRING_L(, name, name_length)
- IFRESTORE(`
-#ifndef ZEND_ENGINE_2
- /* just copy parent and resolve on install_class */
- COPY(parent)
-#else
- PROC_CLASS_ENTRY_P(parent)
-#endif
- ', `
- PROC_CLASS_ENTRY_P(parent)
- ')
-#ifdef ZEND_ENGINE_2
+ PROC_CLASS_ENTRY_P(parent)
PROCESS(int, refcount)
-#else
- STRUCT_P(int, refcount)
-#endif
#ifndef ZEND_ENGINE_2_4
PROCESS(zend_bool, constants_updated)
#endif
-#ifdef ZEND_ENGINE_2
PROCESS(zend_uint, ce_flags)
-#endif
-#ifdef ZEND_ENGINE_2
STRUCT(HashTable, properties_info, HashTable_zend_property_info)
-#endif
#ifdef ZEND_ENGINE_2_4
STRUCT_ARRAY(int, default_properties_count, zval_ptr_nullable, default_properties_table)
@@ -401,12 +357,11 @@ DEF_STRUCT_P_FUNC(`zend_class_entry', , `dnl {{{
STRUCT(HashTable, default_static_members, HashTable_zval_ptr)
IFCOPY(`dst->static_members = &dst->default_static_members;')
DONE(static_members)
-# elif defined(ZEND_ENGINE_2)
+# else
STRUCT_P(HashTable, static_members, HashTable_zval_ptr)
# endif
#endif /* ZEND_ENGINE_2_4 */
-#ifdef ZEND_ENGINE_2
STRUCT(HashTable, constants_table, HashTable_zval_ptr)
#ifdef ZEND_ENGINE_2_2
@@ -489,11 +444,6 @@ DEF_STRUCT_P_FUNC(`zend_class_entry', , `dnl {{{
/* # NOT DONE */
COPY(module)
# endif
-#else /* ZEND_ENGINE_2 */
- COPY(handle_function_call)
- COPY(handle_property_get)
- COPY(handle_property_set)
-#endif
dnl must do after SETNULL(constructor) and dst->parent
STRUCT(HashTable, function_table, HashTable_zend_function)
IFRESTORE(`dst->function_table.pDestructor = ZEND_FUNCTION_DTOR;')
@@ -600,9 +550,6 @@ DEF_STRUCT_P_FUNC(`znode', , `dnl {{{
case IS_UNUSED:
IFDASM(`PROCESS(zend_uint, u.var)')
PROCESS(zend_uint, u.opline_num)
-#ifndef ZEND_ENGINE_2
- PROCESS(zend_uint, u.fetch_type)
-#endif
PROCESS(zend_uint, u.EA.type)
break;
')
@@ -664,11 +611,9 @@ DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{
#ifdef ZEND_FAST_CALL
case ZEND_FAST_CALL:
#endif
-#ifdef ZEND_ENGINE_2
assert(Z_OP(src->op1).jmp_addr >= processor->active_op_array_src->opcodes && Z_OP(src->op1).jmp_addr - processor->active_op_array_src->opcodes < processor->active_op_array_src->last);
Z_OP(dst->op1).jmp_addr = processor->active_op_array_dst->opcodes + (Z_OP(src->op1).jmp_addr - processor->active_op_array_src->opcodes);
assert(Z_OP(dst->op1).jmp_addr >= processor->active_op_array_dst->opcodes && Z_OP(dst->op1).jmp_addr - processor->active_op_array_dst->opcodes < processor->active_op_array_dst->last);
-#endif
break;
case ZEND_JMPZ:
@@ -681,11 +626,9 @@ DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{
#ifdef ZEND_JMP_SET_VAR
case ZEND_JMP_SET_VAR:
#endif
-#ifdef ZEND_ENGINE_2
assert(Z_OP(src->op2).jmp_addr >= processor->active_op_array_src->opcodes && Z_OP(src->op2).jmp_addr - processor->active_op_array_src->opcodes < processor->active_op_array_src->last);
Z_OP(dst->op2).jmp_addr = processor->active_op_array_dst->opcodes + (Z_OP(src->op2).jmp_addr - processor->active_op_array_src->opcodes);
assert(Z_OP(dst->op2).jmp_addr >= processor->active_op_array_dst->opcodes && Z_OP(dst->op2).jmp_addr - processor->active_op_array_dst->opcodes < processor->active_op_array_dst->last);
-#endif
break;
default:
@@ -740,10 +683,8 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
#endif
/* deep */
STRUCT_P(HashTable, static_variables, HashTable_zval_ptr)
-#ifdef ZEND_ENGINE_2
STRUCT_ARRAY(zend_uint, num_args, zend_arg_info, arg_info)
gc_arg_info = 1;
-#endif
dst->filename = processor->entry_php_src->filepath;
#ifdef ZEND_ENGINE_2_4
if (src->literals) {
@@ -787,9 +728,7 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
#ifdef ZEND_FAST_CALL
case ZEND_FAST_CALL:
#endif
-#ifdef ZEND_ENGINE_2
Z_OP(opline->op1).jmp_addr = &dst->opcodes[Z_OP(opline->op1).jmp_addr - src->opcodes];
-#endif
break;
case ZEND_JMPZ:
@@ -802,9 +741,7 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
#ifdef ZEND_JMP_SET_VAR
case ZEND_JMP_SET_VAR:
#endif
-#ifdef ZEND_ENGINE_2
Z_OP(opline->op2).jmp_addr = &dst->opcodes[Z_OP(opline->op2).jmp_addr - src->opcodes];
-#endif
break;
default:
@@ -818,10 +755,8 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
#endif
) {
xc_gc_op_array_t gc_op_array;
-#ifdef ZEND_ENGINE_2
gc_op_array.num_args = gc_arg_info ? dst->num_args : 0;
gc_op_array.arg_info = gc_arg_info ? dst->arg_info : NULL;
-#endif
gc_op_array.opcodes = gc_opcodes ? dst->opcodes : NULL;
#ifdef ZEND_ENGINE_2_4
gc_op_array.literals = gc_literals ? dst->literals : NULL;
@@ -838,7 +773,6 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
/* Common elements */
PROCESS(zend_uchar, type)
PROC_ZSTRING(, function_name)
-#ifdef ZEND_ENGINE_2
PROCESS(zend_uint, fn_flags)
STRUCT_ARRAY(zend_uint, num_args, zend_arg_info, arg_info)
PROCESS(zend_uint, num_args)
@@ -846,26 +780,6 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
# ifndef ZEND_ENGINE_2_4
PROCESS(zend_bool, pass_rest_by_reference)
# endif
-#else
- if (src->arg_types) {
- ALLOC(dst->arg_types, zend_uchar, src->arg_types[0] + 1)
- IFCOPY(`memcpy(dst->arg_types, src->arg_types, sizeof(src->arg_types[0]) * (src->arg_types[0]+1));')
- IFDASM(`do {
- int i;
- zval *zv;
- ALLOC_INIT_ZVAL(zv);
- array_init(zv);
- for (i = 0; i < src->arg_types[0]; i ++) {
- add_next_index_long(zv, src->arg_types[i + 1]);
- }
- add_assoc_zval_ex(dst, ZEND_STRS("arg_types"), zv);
- } while (0);')
- DONE(arg_types)
- }
- else {
- COPYNULL(arg_types)
- }
-#endif
#ifndef ZEND_ENGINE_2_4
PROCESS(unsigned char, return_reference)
#endif
@@ -916,14 +830,9 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
#ifndef ZEND_ENGINE_2_4
PROCESS(zend_uint, current_brk_cont)
#endif
-#ifndef ZEND_ENGINE_2
- PROCESS(zend_bool, uses_globals)
-#endif
-#ifdef ZEND_ENGINE_2
STRUCT_ARRAY(int, last_try_catch, zend_try_catch_element, try_catch_array)
PROCESS(int, last_try_catch)
-#endif
#ifdef ZEND_ENGINE_2_5
PROCESS(zend_bool, has_finally_block)
#endif
@@ -954,12 +863,10 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
PROC_STRING(script_encoding)
')
#endif
-#ifdef ZEND_ENGINE_2
PROCESS(zend_uint, line_start)
PROCESS(zend_uint, line_end)
PROCESS(int, doc_comment_len)
PROC_ZSTRING_L(, doc_comment, doc_comment_len)
-#endif
#ifdef ZEND_COMPILE_DELAYED_BINDING
PROCESS(zend_uint, early_binding);
#endif
@@ -976,7 +883,6 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
} while (0);
IFRESTORE(`xc_fix_op_array_info(processor->entry_php_src, processor->php_src, dst, shallow_copy, op_array_info TSRMLS_CC);')
-#ifdef ZEND_ENGINE_2
dnl mark it as -1 on store, and lookup parent on restore
IFSTORE(`dst->prototype = (processor->active_class_entry_src && src->prototype) ? (zend_function *) -1 : NULL;', `
IFRESTORE(`do {
@@ -1005,16 +911,12 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
')
DONE(prototype)
-#endif
-
-#ifdef ZEND_ENGINE_2
PROC_CLASS_ENTRY_P(scope)
IFCOPY(`
if (src->scope) {
xc_fix_method(processor, dst TSRMLS_CC);
}
')
-#endif
IFRESTORE(`
if (xc_have_op_array_ctor) {
@@ -1099,11 +1001,7 @@ DEF_STRUCT_P_FUNC(`xc_classinfo_t', , `dnl {{{
processor->active_op_array_infos_src = src->methodinfos;
processor->active_op_array_index = 0;
')
-#ifdef ZEND_ENGINE_2
- STRUCT_P(zend_class_entry, cest)
-#else
- STRUCT(zend_class_entry, cest)
-#endif
+ STRUCT_P(zend_class_entry, class_entry)
#ifndef ZEND_COMPILE_DELAYED_BINDING
PROCESS(int, oplineno)
#endif
diff --git a/xcache.c b/xcache.c
index 64e1291..5528998 100644
--- a/xcache.c
+++ b/xcache.c
@@ -114,17 +114,13 @@ static int xc_init_constant(int module_number TSRMLS_DC) /* {{{ */
}
/* }}} */
/* {{{ PHP_GINIT_FUNCTION(xcache) */
-#pragma GCC push_options
-#pragma GCC diagnostic ignored "-Wshadow"
-
+#define xcache_globals xcacheglobals
#ifdef PHP_GINIT_FUNCTION
static PHP_GINIT_FUNCTION(xcache)
#else
-static void xc_init_globals(zend_xcache_globals* xcache_globals TSRMLS_DC)
+static void xc_init_globals(zend_xcache_globals *xcache_globals TSRMLS_DC)
#endif
{
-#pragma GCC pop_options
-
memset(xcache_globals, 0, sizeof(zend_xcache_globals));
#ifdef HAVE_XCACHE_CONSTANT
@@ -133,10 +129,12 @@ static void xc_init_globals(zend_xcache_globals* xcache_globals TSRMLS_DC)
zend_hash_init_ex(&xcache_globals->internal_function_table, 1, NULL, NULL, 1, 0);
zend_hash_init_ex(&xcache_globals->internal_class_table, 1, NULL, NULL, 1, 0);
}
+#undef xcache_globals
/* }}} */
/* {{{ PHP_GSHUTDOWN_FUNCTION(xcache) */
static
#ifdef PHP_GSHUTDOWN_FUNCTION
+#define xcache_globals xcacheglobals
PHP_GSHUTDOWN_FUNCTION(xcache)
#else
void xc_shutdown_globals(zend_xcache_globals* xcache_globals TSRMLS_DC)
@@ -170,6 +168,7 @@ void xc_shutdown_globals(zend_xcache_globals* xcache_globals TSRMLS_DC)
zend_hash_destroy(&xcache_globals->internal_class_table);
}
}
+#undef xcache_globals
/* }}} */
/* {{{ proto int xcache_get_refcount(mixed variable)
@@ -886,12 +885,7 @@ zend_module_entry xcache_module_entry = {
PHP_GINIT(xcache),
PHP_GSHUTDOWN(xcache),
#endif
-#ifdef ZEND_ENGINE_2
NULL /* ZEND_MODULE_POST_ZEND_DEACTIVATE_N */,
-#else
- NULL,
- NULL,
-#endif
STANDARD_MODULE_PROPERTIES_EX
};
diff --git a/xcache/xc_compatibility.c b/xcache/xc_compatibility.c
index 07ad6f5..22a57c3 100644
--- a/xcache/xc_compatibility.c
+++ b/xcache/xc_compatibility.c
@@ -1,18 +1,6 @@
#include "xc_compatibility.h"
#ifndef ZEND_ENGINE_2_3
-#include "ext/standard/php_string.h"
-size_t xc_dirname(char *path, size_t len) /* {{{ */
-{
-#ifdef ZEND_ENGINE_2
- return php_dirname(path, len);
-#else
- php_dirname(path, len);
- return strlen(path);
-#endif
-}
-/* }}} */
-
long xc_atol(const char *str, int str_len) /* {{{ */
{
long retval;
diff --git a/xcache/xc_compatibility.h b/xcache/xc_compatibility.h
index 694987e..98305f0 100644
--- a/xcache/xc_compatibility.h
+++ b/xcache/xc_compatibility.h
@@ -27,12 +27,7 @@
#endif
#define NOTHING
-/* ZendEngine code Switcher */
-#ifndef ZEND_ENGINE_2
-# define ZESW(v1, v2) v1
-#else
-# define ZESW(v1, v2) v2
-#endif
+/* ZendEngine version code Switcher */
#ifdef ZEND_ENGINE_2_4
# define ZEND_24(pre24, v24) v24
#else
@@ -111,9 +106,9 @@ typedef znode znode_op;
# define Z_CLASS_INFO(className) (className)
-static inline int php_output_start_default(TSRMLS_D) { php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC); }
-static inline int php_output_get_contents(zval *p TSRMLS_DC) { php_ob_get_buffer(p TSRMLS_CC); }
-static inline int php_output_discard(TSRMLS_D) { php_end_ob_buffer(0, 0 TSRMLS_CC); }
+static inline int php_output_start_default(TSRMLS_D) { return php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC); }
+static inline int php_output_get_contents(zval *p TSRMLS_DC) { return php_ob_get_buffer(p TSRMLS_CC); }
+static inline int php_output_discard(TSRMLS_D) { php_end_ob_buffer(0, 0 TSRMLS_CC); return SUCCESS; }
#endif
/* unicode */
@@ -212,24 +207,9 @@ typedef const zstr const_zstr;
#endif
/* }}} */
-/* the class entry type to be stored in class_table */
-typedef ZESW(zend_class_entry, zend_class_entry*) xc_cest_t;
-
-/* xc_cest_t to (zend_class_entry*) */
-#define CestToCePtr(st) (ZESW(\
- &(st), \
- st \
- ) )
-
-/* ZCEP=zend class entry ptr */
-#define ZCEP_REFCOUNT_PTR(pce) (ZESW( \
- (pce)->refcount, \
- &((pce)->refcount) \
- ))
-
#ifndef ZEND_ENGINE_2_3
-size_t xc_dirname(char *path, size_t len);
-#define zend_dirname xc_dirname
+#include "ext/standard/php_string.h"
+static inline size_t zend_dirname(char *path, size_t len) { return php_dirname(path, len); }
long xc_atol(const char *str, int len);
#define zend_atol xc_atol
#endif
@@ -239,11 +219,7 @@ long xc_atol(const char *str, int len);
#endif
#ifndef PHP_FE_END
-# ifdef ZEND_ENGINE_2
-# define PHP_FE_END {NULL, NULL, NULL, 0, 0}
-# else
-# define PHP_FE_END {NULL, NULL, NULL}
-# endif
+# define PHP_FE_END {NULL, NULL, NULL, 0, 0}
#endif
#endif /* XC_COMPATIBILITY_H_54F26ED90198353558718191D5EE244C */
diff --git a/xcache/xc_const_string.c b/xcache/xc_const_string.c
index def49da..ea39838 100644
--- a/xcache/xc_const_string.c
+++ b/xcache/xc_const_string.c
@@ -71,10 +71,8 @@ const char *xc_get_data_type(zend_uchar data_type)
# include "xc_const_string_opcodes_php5.3.h"
#elif defined(ZEND_ENGINE_2_1)
# include "xc_const_string_opcodes_php5.1.h"
-#elif defined(ZEND_ENGINE_2)
-# include "xc_const_string_opcodes_php5.0.h"
#else
-# include "xc_const_string_opcodes_php4.x.h"
+# include "xc_const_string_opcodes_php5.0.h"
#endif
zend_uchar xc_get_opcode_count()
diff --git a/xcache/xc_const_string_opcodes_php4.x.h b/xcache/xc_const_string_opcodes_php4.x.h
deleted file mode 100644
index c40396e..0000000
--- a/xcache/xc_const_string_opcodes_php4.x.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/* size = 113 */
-static const char *const xc_opcode_names[] = {
-/* 0 */ "NOP",
-/* 1 */ "ADD",
-/* 2 */ "SUB",
-/* 3 */ "MUL",
-/* 4 */ "DIV",
-/* 5 */ "MOD",
-/* 6 */ "SL",
-/* 7 */ "SR",
-/* 8 */ "CONCAT",
-/* 9 */ "BW_OR",
-/* 10 */ "BW_AND",
-/* 11 */ "BW_XOR",
-/* 12 */ "BW_NOT",
-/* 13 */ "BOOL_NOT",
-/* 14 */ "BOOL_XOR",
-/* 15 */ "IS_IDENTICAL",
-/* 16 */ "IS_NOT_IDENTICAL",
-/* 17 */ "IS_EQUAL",
-/* 18 */ "IS_NOT_EQUAL",
-/* 19 */ "IS_SMALLER",
-/* 20 */ "IS_SMALLER_OR_EQUAL",
-/* 21 */ "CAST",
-/* 22 */ "QM_ASSIGN",
-/* 23 */ "ASSIGN_ADD",
-/* 24 */ "ASSIGN_SUB",
-/* 25 */ "ASSIGN_MUL",
-/* 26 */ "ASSIGN_DIV",
-/* 27 */ "ASSIGN_MOD",
-/* 28 */ "ASSIGN_SL",
-/* 29 */ "ASSIGN_SR",
-/* 30 */ "ASSIGN_CONCAT",
-/* 31 */ "ASSIGN_BW_OR",
-/* 32 */ "ASSIGN_BW_AND",
-/* 33 */ "ASSIGN_BW_XOR",
-/* 34 */ "PRE_INC",
-/* 35 */ "PRE_DEC",
-/* 36 */ "POST_INC",
-/* 37 */ "POST_DEC",
-/* 38 */ "ASSIGN",
-/* 39 */ "ASSIGN_REF",
-/* 40 */ "ECHO",
-/* 41 */ "PRINT",
-/* 42 */ "JMP",
-/* 43 */ "JMPZ",
-/* 44 */ "JMPNZ",
-/* 45 */ "JMPZNZ",
-/* 46 */ "JMPZ_EX",
-/* 47 */ "JMPNZ_EX",
-/* 48 */ "CASE",
-/* 49 */ "SWITCH_FREE",
-/* 50 */ "BRK",
-/* 51 */ "CONT",
-/* 52 */ "BOOL",
-/* 53 */ "INIT_STRING",
-/* 54 */ "ADD_CHAR",
-/* 55 */ "ADD_STRING",
-/* 56 */ "ADD_VAR",
-/* 57 */ "BEGIN_SILENCE",
-/* 58 */ "END_SILENCE",
-/* 59 */ "INIT_FCALL_BY_NAME",
-/* 60 */ "DO_FCALL",
-/* 61 */ "DO_FCALL_BY_NAME",
-/* 62 */ "RETURN",
-/* 63 */ "RECV",
-/* 64 */ "RECV_INIT",
-/* 65 */ "SEND_VAL",
-/* 66 */ "SEND_VAR",
-/* 67 */ "SEND_REF",
-/* 68 */ "NEW",
-/* 69 */ "JMP_NO_CTOR",
-/* 70 */ "FREE",
-/* 71 */ "INIT_ARRAY",
-/* 72 */ "ADD_ARRAY_ELEMENT",
-/* 73 */ "INCLUDE_OR_EVAL",
-/* 74 */ "UNSET_VAR",
-/* 75 */ "UNSET_DIM_OBJ",
-/* 76 */ "ISSET_ISEMPTY",
-/* 77 */ "FE_RESET",
-/* 78 */ "FE_FETCH",
-/* 79 */ "EXIT",
-/* 80 */ "FETCH_R",
-/* 81 */ "FETCH_DIM_R",
-/* 82 */ "FETCH_OBJ_R",
-/* 83 */ "FETCH_W",
-/* 84 */ "FETCH_DIM_W",
-/* 85 */ "FETCH_OBJ_W",
-/* 86 */ "FETCH_RW",
-/* 87 */ "FETCH_DIM_RW",
-/* 88 */ "FETCH_OBJ_RW",
-/* 89 */ "FETCH_IS",
-/* 90 */ "FETCH_DIM_IS",
-/* 91 */ "FETCH_OBJ_IS",
-/* 92 */ "FETCH_FUNC_ARG",
-/* 93 */ "FETCH_DIM_FUNC_ARG",
-/* 94 */ "FETCH_OBJ_FUNC_ARG",
-/* 95 */ "FETCH_UNSET",
-/* 96 */ "FETCH_DIM_UNSET",
-/* 97 */ "FETCH_OBJ_UNSET",
-/* 98 */ "FETCH_DIM_TMP_VAR",
-/* 99 */ "FETCH_CONSTANT",
-/* 100 */ "DECLARE_FUNCTION_OR_CLASS",
-/* 101 */ "EXT_STMT",
-/* 102 */ "EXT_FCALL_BEGIN",
-/* 103 */ "EXT_FCALL_END",
-/* 104 */ "EXT_NOP",
-/* 105 */ "TICKS",
-/* 106 */ "SEND_VAR_NO_REF",
-/* 107 */ "UNDEF",
-/* 108 */ "UNDEF",
-/* 109 */ "UNDEF",
-/* 110 */ "DO_FCALL_BY_FUNC",
-/* 111 */ "INIT_FCALL_BY_FUNC",
-/* 112 */ "UNDEF"
-};
diff --git a/xcache/xc_const_string_opcodes_php5.3.h b/xcache/xc_const_string_opcodes_php5.3.h
index 585720e..48bea60 100644
--- a/xcache/xc_const_string_opcodes_php5.3.h
+++ b/xcache/xc_const_string_opcodes_php5.3.h
@@ -151,7 +151,9 @@ static const char *const xc_opcode_names[] = {
/* 148 */ "ISSET_ISEMPTY_PROP_OBJ",
/* 149 */ "HANDLE_EXCEPTION",
/* 150 */ "USER_OPCODE",
+#ifdef ZEND_ENGINE_2_3
/* 151 */ "UNDEF",
/* 152 */ "JMP_SET",
/* 153 */ "DECLARE_LAMBDA_FUNCTION"
+#endif
};
diff --git a/xcache/xc_ini.h b/xcache/xc_ini.h
index ee72a96..5086424 100644
--- a/xcache/xc_ini.h
+++ b/xcache/xc_ini.h
@@ -12,8 +12,5 @@ PHP_INI_MH(xcache_OnUpdateDummy);
PHP_INI_MH(xcache_OnUpdateULong);
PHP_INI_MH(xcache_OnUpdateBool);
PHP_INI_MH(xcache_OnUpdateString);
-#ifndef ZEND_ENGINE_2
-#define OnUpdateLong OnUpdateInt
-#endif
#endif /* XC_INI_H_E208B8E597E7FAD950D249BE9C6B6F53 */
diff --git a/xcache/xc_opcode_spec.c b/xcache/xc_opcode_spec.c
index 6497796..b563181 100644
--- a/xcache/xc_opcode_spec.c
+++ b/xcache/xc_opcode_spec.c
@@ -4,11 +4,7 @@
/* {{{ opcode_spec */
#define OPSPEC(ext, op1, op2, res) { OPSPEC_##ext, OPSPEC_##op1, OPSPEC_##op2, OPSPEC_##res },
-#ifdef ZEND_ENGINE_2
-# define OPSPEC_VAR_2 OPSPEC_STD
-#else
-# define OPSPEC_VAR_2 OPSPEC_VAR
-#endif
+#define OPSPEC_VAR_2 OPSPEC_STD
#include "xc_opcode_spec_def.h"
zend_uchar xc_get_opcode_spec_count()
diff --git a/xcache/xc_opcode_spec_def.h b/xcache/xc_opcode_spec_def.h
index 3d0e77a..ba9fcd0 100644
--- a/xcache/xc_opcode_spec_def.h
+++ b/xcache/xc_opcode_spec_def.h
@@ -22,7 +22,6 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( UNUSED, STD, STD, TMP) /* 20 IS_SMALLER_OR_EQUAL */
OPSPEC( CAST, STD, UNUSED, TMP) /* 21 CAST */
OPSPEC( UNUSED, STD, UNUSED, TMP) /* 22 QM_ASSIGN */
-#ifdef ZEND_ENGINE_2
OPSPEC( ASSIGN, STD, STD, VAR) /* 23 ASSIGN_ADD */
OPSPEC( ASSIGN, STD, STD, VAR) /* 24 ASSIGN_SUB */
OPSPEC( ASSIGN, STD, STD, VAR) /* 25 ASSIGN_MUL */
@@ -34,19 +33,6 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( ASSIGN, STD, STD, VAR) /* 31 ASSIGN_BW_OR */
OPSPEC( ASSIGN, STD, STD, VAR) /* 32 ASSIGN_BW_AND */
OPSPEC( ASSIGN, STD, STD, VAR) /* 33 ASSIGN_BW_XOR */
-#else
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
- OPSPEC( UNUSED, VAR, STD, VAR)
-#endif
OPSPEC( UNUSED, VAR, UNUSED, VAR) /* 34 PRE_INC */
OPSPEC( UNUSED, VAR, UNUSED, VAR) /* 35 PRE_DEC */
OPSPEC( UNUSED, VAR, UNUSED, TMP) /* 36 POST_INC */
@@ -55,23 +41,12 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( UNUSED, VAR, VAR, VAR) /* 39 ASSIGN_REF */
OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 40 ECHO */
OPSPEC( UNUSED, STD, UNUSED, TMP) /* 41 PRINT */
-#ifdef ZEND_ENGINE_2
OPSPEC( UNUSED, JMPADDR, UNUSED, UNUSED) /* 42 JMP */
OPSPEC( UNUSED, STD, JMPADDR, UNUSED) /* 43 JMPZ */
OPSPEC( UNUSED, STD, JMPADDR, UNUSED) /* 44 JMPNZ */
-#else
- OPSPEC( UNUSED, OPLINE, UNUSED, UNUSED)
- OPSPEC( UNUSED, STD, OPLINE, UNUSED)
- OPSPEC( UNUSED, STD, OPLINE, UNUSED)
-#endif
OPSPEC( OPLINE, STD, OPLINE, UNUSED) /* 45 JMPZNZ */
-#ifdef ZEND_ENGINE_2
OPSPEC( UNUSED, STD, JMPADDR, TMP) /* 46 JMPZ_EX */
OPSPEC( UNUSED, STD, JMPADDR, TMP) /* 47 JMPNZ_EX */
-#else
- OPSPEC( UNUSED, STD, OPLINE, TMP)
- OPSPEC( UNUSED, STD, OPLINE, TMP)
-#endif
OPSPEC( UNUSED, STD, STD, TMP) /* 48 CASE */
OPSPEC( BIT, STD, UNUSED, UNUSED) /* 49 SWITCH_FREE */
OPSPEC( UNUSED, BRK, STD, UNUSED) /* 50 BRK */
@@ -84,24 +59,15 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( UNUSED, UNUSED, UNUSED, TMP) /* 57 BEGIN_SILENCE */
OPSPEC( UNUSED, TMP, UNUSED, UNUSED) /* 58 END_SILENCE */
OPSPEC(INIT_FCALL, STD, STD, UNUSED) /* 59 INIT_FCALL_BY_NAME */
-#ifdef ZEND_ENGINE_2
OPSPEC( FCALL, STD, OPLINE, VAR) /* 60 DO_FCALL */
OPSPEC( FCALL, STD, OPLINE, VAR) /* 61 DO_FCALL_BY_NAME */
-#else
- OPSPEC( FCALL, STD, UNUSED, VAR)
- OPSPEC( FCALL, STD, UNUSED, VAR)
-#endif
OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 62 RETURN */
OPSPEC( UNUSED, ARG, UNUSED, VAR) /* 63 RECV */
OPSPEC( UNUSED, ARG, STD, VAR) /* 64 RECV_INIT */
OPSPEC( SEND, STD, ARG, UNUSED) /* 65 SEND_VAL */
OPSPEC( SEND, VAR, ARG, UNUSED) /* 66 SEND_VAR */
OPSPEC( SEND, VAR, ARG, UNUSED) /* 67 SEND_REF */
-#ifdef ZEND_ENGINE_2
OPSPEC( UNUSED, CLASS, UNUSED, VAR) /* 68 NEW */
-#else
- OPSPEC( UNUSED, STD, UNUSED, VAR)
-#endif
#ifdef ZEND_ENGINE_2_3
OPSPEC( STD, STD, STD, UNUSED) /* 69 INIT_NS_FCALL_BY_NAME */
#else
@@ -148,10 +114,8 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( UNUSED, STD, STD, VAR) /* 98 FETCH_DIM_TMP_VAR */
#ifdef ZEND_ENGINE_2_3
OPSPEC( UNUSED, VAR_2, STD, TMP) /* 99 FETCH_CONSTANT */
-#elif defined(ZEND_ENGINE_2)
- OPSPEC( UNUSED, UCLASS, STD, TMP) /* 99 FETCH_CONSTANT */
#else
- OPSPEC( UNUSED, STD, UNUSED, TMP) /* 99 FETCH_CONSTANT */
+ OPSPEC( UNUSED, UCLASS, STD, TMP) /* 99 FETCH_CONSTANT */
#endif
#ifdef ZEND_ENGINE_2_3
OPSPEC( STD, JMPADDR, STD, UNUSED) /* 100 GOTO */
@@ -164,7 +128,6 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 104 EXT_NOP */
OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 105 TICKS */
OPSPEC(SEND_NOREF, VAR, ARG, UNUSED) /* 106 SEND_VAR_NO_REF */
-#ifdef ZEND_ENGINE_2
OPSPEC( OPLINE, CLASS, STD, UNUSED) /* 107 CATCH */
OPSPEC( UNUSED, STD, OPLINE, UNUSED) /* 108 THROW */
OPSPEC( FCLASS, STD, STD, CLASS) /* 109 FETCH_CLASS */
@@ -177,11 +140,11 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
#endif
OPSPEC( UNUSED, STD, STD, VAR) /* 112 INIT_METHOD_CALL */
-# ifdef ZEND_ENGINE_2_3
+#ifdef ZEND_ENGINE_2_3
OPSPEC( UNUSED, STD, STD, UNUSED) /* 113 INIT_STATIC_METHOD_CALL */
-# else
+#else
OPSPEC( UNUSED, UCLASS, STD, UNUSED) /* 113 INIT_STATIC_METHOD_CALL */
-# endif
+#endif
OPSPEC( ISSET, STD, FETCH, TMP) /* 114 ISSET_ISEMPTY_VAR */
OPSPEC( ISSET, STD, STD, TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ */
@@ -233,31 +196,23 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( ISSET, STD, STD, TMP) /* 148 ISSET_ISEMPTY_PROP_OBJ */
OPSPEC( STD, UNUSED, UNUSED, STD) /* 149 HANDLE_EXCEPTION */
OPSPEC( STD, UNUSED, UNUSED, STD) /* 150 USER_OPCODE */
-# ifdef ZEND_ENGINE_2_3
+#ifdef ZEND_ENGINE_2_3
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 151 UNDEF */
OPSPEC( UNUSED, STD, JMPADDR, TMP) /* 152 JMP_SET */
OPSPEC( UNUSED, STD, STD, TMP) /* 153 DECLARE_LAMBDA_FUNCTION */
-# endif
-# ifdef ZEND_ENGINE_2_4
+#endif
+#ifdef ZEND_ENGINE_2_4
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 154 ADD_TRAIT */
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 155 BIND_TRAITS */
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 156 SEPARATE */
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 157 QM_ASSIGN_VAR */
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 158 JMP_SET_VAR */
-# endif
-# ifdef ZEND_ENGINE_2_5
+#endif
+#ifdef ZEND_ENGINE_2_5
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 159 DISCARD_EXCEPTION */
OPSPEC( UNUSED, STD, STD, UNUSED) /* 160 YIELD */
OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 161 GENERATOR_RETURN */
OPSPEC( UNUSED, JMPADDR, UNUSED, UNUSED) /* 162 FAST_CALL */
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 163 FAST_RET */
-# endif
-#else
- OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 107 UNDEF */
- OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 108 UNDEF */
- OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 109 UNDEF */
- OPSPEC( FCALL, STD, OPLINE, VAR) /* 61 DO_FCALL_BY_FUNC */
- OPSPEC(INIT_FCALL, STD, STD, UNUSED) /* 111 INIT_FCALL_BY_FUNC */
- OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 112 UNDEF */
#endif
};
diff --git a/xcache/xc_sandbox.c b/xcache/xc_sandbox.c
index ff038a3..fb56250 100644
--- a/xcache/xc_sandbox.c
+++ b/xcache/xc_sandbox.c
@@ -194,8 +194,8 @@ static xc_sandbox_t *xc_sandbox_init(xc_sandbox_t *sandbox, ZEND_24(NOTHING, con
zend_hash_init_ex(&TG(class_table), 16, NULL, ZEND_CLASS_DTOR, h->persistent, h->bApplyProtection);
#if 0 && TODO
{
- xc_cest_t tmp_cest;
- zend_hash_copy(&TG(class_table), &XG(internal_class_table), NULL, (void *) &tmp_cest, sizeof(tmp_cest));
+ zend_class_entry *dummy_class_entry;
+ zend_hash_copy(&TG(class_table), &XG(internal_class_table), NULL, (void *) &dummy_class_entry, sizeof(dummy_class_entry));
}
#endif
TG(internal_class_tail) = TG(class_table).pListTail;
@@ -277,7 +277,7 @@ static void xc_sandbox_install(xc_sandbox_t *sandbox TSRMLS_DC) /* {{{ */
b = TG(internal_class_tail) ? TG(internal_class_tail)->pListNext : TG(class_table).pListHead;
/* install class */
while (b != NULL) {
- xc_install_class(sandbox->filename, (xc_cest_t*) b->pData, -1,
+ xc_install_class(sandbox->filename, *(zend_class_entry **)b->pData, -1,
BUCKET_KEY_TYPE(b), ZSTR(BUCKET_KEY_S(b)), b->nKeyLength, b->h TSRMLS_CC);
b = b->pListNext;
}
diff --git a/xcache/xc_utils.c b/xcache/xc_utils.c
index d649445..ca4f299 100644
--- a/xcache/xc_utils.c
+++ b/xcache/xc_utils.c
@@ -77,35 +77,20 @@ typedef struct {
int xc_apply_method(zend_function *zf, xc_apply_method_info *mi TSRMLS_DC) /* {{{ */
{
/* avoid duplicate apply for shadowed method */
-#ifdef ZEND_ENGINE_2
if (mi->ce != zf->common.scope) {
/* fprintf(stderr, "avoided duplicate %s\n", zf->common.function_name); */
return 0;
}
-#else
- char *name = zf->common.function_name;
- int name_s = strlen(name) + 1;
- zend_class_entry *ce;
- zend_function *ptr;
-
- for (ce = mi->ce->parent; ce; ce = ce->parent) {
- if (zend_hash_find(&ce->function_table, name, name_s, (void **) &ptr) == SUCCESS) {
- if (ptr->op_array.refcount == zf->op_array.refcount) {
- return 0;
- }
- }
- }
-#endif
return xc_apply_function(zf, &mi->fi TSRMLS_CC);
}
/* }}} */
-static int xc_apply_cest(xc_cest_t *cest, xc_apply_func_info *fi TSRMLS_DC) /* {{{ */
+static int xc_apply_class(zend_class_entry **ce, xc_apply_func_info *fi TSRMLS_DC) /* {{{ */
{
xc_apply_method_info mi;
mi.fi = *fi;
- mi.ce = CestToCePtr(*cest);
- zend_hash_apply_with_argument(&(CestToCePtr(*cest)->function_table), (apply_func_arg_t) xc_apply_method, &mi TSRMLS_CC);
+ mi.ce = *ce;
+ zend_hash_apply_with_argument(&((*ce)->function_table), (apply_func_arg_t) xc_apply_method, &mi TSRMLS_CC);
return 0;
}
/* }}} */
@@ -114,7 +99,7 @@ int xc_apply_op_array(xc_compile_result_t *cr, apply_func_t applyer TSRMLS_DC) /
xc_apply_func_info fi;
fi.applyer = applyer;
zend_hash_apply_with_argument(cr->function_table, (apply_func_arg_t) xc_apply_function, &fi TSRMLS_CC);
- zend_hash_apply_with_argument(cr->class_table, (apply_func_arg_t) xc_apply_cest, &fi TSRMLS_CC);
+ zend_hash_apply_with_argument(cr->class_table, (apply_func_arg_t) xc_apply_class, &fi TSRMLS_CC);
return applyer(cr->op_array TSRMLS_CC);
}
@@ -277,7 +262,6 @@ int xc_redo_pass_two(zend_op_array *op_array TSRMLS_DC) /* {{{ */
static void xc_fix_opcode_ex_znode(int tofix, xc_op_spec_t spec, Z_OP_TYPEOF_TYPE *op_type, znode_op *op, int type TSRMLS_DC) /* {{{ */
{
-#ifdef ZEND_ENGINE_2
if ((*op_type != IS_UNUSED && (spec == OPSPEC_UCLASS || spec == OPSPEC_CLASS)) ||
spec == OPSPEC_FETCH) {
if (tofix) {
@@ -303,7 +287,6 @@ static void xc_fix_opcode_ex_znode(int tofix, xc_op_spec_t spec, Z_OP_TYPEOF_TYP
Z_OP(*op).var *= sizeof(temp_variable);
}
}
-#endif
}
/* }}} */
@@ -379,17 +362,9 @@ int xc_foreach_early_binding_class(zend_op_array *op_array, xc_foreach_early_bin
opline = opline_end;
break;
-#ifdef ZEND_ENGINE_2
case ZEND_DECLARE_INHERITED_CLASS:
callback(opline, opline - begin, data TSRMLS_CC);
break;
-#else
- case ZEND_DECLARE_FUNCTION_OR_CLASS:
- if (opline->extended_value == ZEND_DECLARE_INHERITED_CLASS) {
- callback(opline, opline - begin, data TSRMLS_CC);
- }
- break;
-#endif
}
if (opline < next) {
@@ -414,7 +389,6 @@ int xc_do_early_binding(zend_op_array *op_array, HashTable *class_table, int opl
opline = &(op_array->opcodes[oplineno]);
switch (opline->opcode) {
-#ifdef ZEND_ENGINE_2
case ZEND_DECLARE_INHERITED_CLASS:
{
zval *parent_name;
@@ -463,12 +437,6 @@ int xc_do_early_binding(zend_op_array *op_array, HashTable *class_table, int opl
abstract_op->opcode = ZEND_NOP;
ZEND_VM_SET_OPCODE_HANDLER(abstract_op);
}
-#else
- case ZEND_DECLARE_FUNCTION_OR_CLASS:
- if (do_bind_function_or_class(opline, NULL, class_table, 1) == FAILURE) {
- return FAILURE;
- }
-#endif
break;
default:
@@ -530,7 +498,7 @@ void xc_install_function(ZEND_24(NOTHING, const) char *filename, zend_function *
func, sizeof(zend_op_array),
NULL
) == FAILURE) {
- CG(zend_lineno) = ZESW(func->op_array.opcodes[0].lineno, func->op_array.line_start);
+ CG(zend_lineno) = func->op_array.line_start;
#ifdef IS_UNICODE
zend_error(E_ERROR, "Cannot redeclare %R()", type, key);
#else
@@ -540,11 +508,9 @@ void xc_install_function(ZEND_24(NOTHING, const) char *filename, zend_function *
}
}
/* }}} */
-ZESW(xc_cest_t *, void) xc_install_class(ZEND_24(NOTHING, const) char *filename, xc_cest_t *cest, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC) /* {{{ */
+void xc_install_class(ZEND_24(NOTHING, const) char *filename, zend_class_entry *ce, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC) /* {{{ */
{
zend_bool istmpkey;
- zend_class_entry *cep = CestToCePtr(*cest);
- ZESW(void *stored_ce_ptr, NOTHING);
#ifdef IS_UNICODE
istmpkey = (type == IS_STRING && ZSTR_S(key)[0] == 0) || ZSTR_U(key)[0] == 0;
@@ -553,8 +519,8 @@ ZESW(xc_cest_t *, void) xc_install_class(ZEND_24(NOTHING, const) char *filename,
#endif
if (istmpkey) {
zend_u_hash_quick_update(CG(class_table), type, key, len, h,
- cest, sizeof(xc_cest_t),
- ZESW(&stored_ce_ptr, NULL)
+ ce, sizeof(zend_class_entry *),
+ NULL
);
#ifndef ZEND_COMPILE_DELAYED_BINDING
if (oplineno != -1) {
@@ -563,18 +529,17 @@ ZESW(xc_cest_t *, void) xc_install_class(ZEND_24(NOTHING, const) char *filename,
#endif
}
else if (zend_u_hash_quick_add(CG(class_table), type, key, len, h,
- cest, sizeof(xc_cest_t),
- ZESW(&stored_ce_ptr, NULL)
+ ce, sizeof(zend_class_entry *),
+ NULL
) == FAILURE) {
- CG(zend_lineno) = ZESW(0, Z_CLASS_INFO(*cep).line_start);
+ CG(zend_lineno) = Z_CLASS_INFO(*ce).line_start;
#ifdef IS_UNICODE
- zend_error(E_ERROR, "Cannot redeclare class %R", type, cep->name);
+ zend_error(E_ERROR, "Cannot redeclare class %R", type, ce->name);
#else
- zend_error(E_ERROR, "Cannot redeclare class %s", cep->name);
+ zend_error(E_ERROR, "Cannot redeclare class %s", ce->name);
#endif
assert(oplineno == -1);
}
- ZESW(return (xc_cest_t *) stored_ce_ptr, NOTHING);
}
/* }}} */
diff --git a/xcache/xc_utils.h b/xcache/xc_utils.h
index 9951cf7..84ad288 100644
--- a/xcache/xc_utils.h
+++ b/xcache/xc_utils.h
@@ -39,7 +39,7 @@ int xc_foreach_early_binding_class(zend_op_array *op_array, xc_foreach_early_bin
void xc_install_constant(ZEND_24(NOTHING, const) char *filename, zend_constant *constant, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
#endif
void xc_install_function(ZEND_24(NOTHING, const) char *filename, zend_function *func, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
-ZESW(xc_cest_t *, void) xc_install_class(ZEND_24(NOTHING, const) char *filename, xc_cest_t *cest, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
+void xc_install_class(ZEND_24(NOTHING, const) char *filename, zend_class_entry *class_entry, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
typedef zend_bool (*xc_if_func_t)(void *data);