1
0
Fork 0

remove php 4 support completely

git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1281 c26eb9a1-5813-0410-bd6c-c2e55f420ca7
3.1
Xuefer 9 years ago
parent c8b77e8be6
commit c7492e6c3a
  1. 3
      ChangeLog
  2. 4
      Makefile.frag.deps
  3. 2
      NEWS
  4. 1
      devel/prepare.cfg.example
  5. 10
      devel/prepare.mak
  6. 6
      devel/run
  7. 20
      lib/Decompiler.class.php
  8. 16
      mod_cacher/xc_cache.h
  9. 79
      mod_cacher/xc_cacher.c
  10. 5
      mod_coverager/xc_coverager.c
  11. 11
      mod_disassembler/xc_disassembler.c
  12. 31
      mod_optimizer/xc_optimizer.c
  13. 10
      processor/head.m4
  14. 110
      processor/processor.m4
  15. 16
      xcache.c
  16. 12
      xcache/xc_compatibility.c
  17. 38
      xcache/xc_compatibility.h
  18. 4
      xcache/xc_const_string.c
  19. 116
      xcache/xc_const_string_opcodes_php4.x.h
  20. 2
      xcache/xc_const_string_opcodes_php5.3.h
  21. 3
      xcache/xc_ini.h
  22. 6
      xcache/xc_opcode_spec.c
  23. 63
      xcache/xc_opcode_spec_def.h
  24. 6
      xcache/xc_sandbox.c
  25. 61
      xcache/xc_utils.c
  26. 2
      xcache/xc_utils.h

@ -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

@ -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

@ -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",