remove php 4 support completely
git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1281 c26eb9a1-5813-0410-bd6c-c2e55f420ca73.1
parent
c8b77e8be6
commit
c7492e6c3a
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
2
NEWS
2
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)
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# copy this file as prepare.cfg before modifying
|
||||
PHP4_x_DIR=
|
||||
PHP5_0_DIR=
|
||||
PHP5_1_DIR=
|
||||
PHP5_3_DIR=
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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) ;;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
};
|
||||
/* }}} */
|
||||
|
|
|
@ -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
|
||||
};
|
||||
/* }}} */
|
||||
|
|
|
@ -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
|
||||
};
|
||||
/* }}} */
|
||||
|
|
|
@ -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
|
||||
};
|
||||
/* }}} */
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
16
xcache.c
16
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
|
||||
};
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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"
|
||||
};
|
|
@ -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
|
||||
};
|
||||
|
|