add support for PHP_5_5
git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1213 c26eb9a1-5813-0410-bd6c-c2e55f420ca73.1
parent
b31e2b14cd
commit
0f53de0a19
|
@ -1,3 +1,8 @@
|
|||
3.1.0 2012-??-??
|
||||
ChangeLog
|
||||
========
|
||||
* adds support for PHP_5_5
|
||||
|
||||
3.0.1 2012-??-??
|
||||
ChangeLog
|
||||
========
|
||||
|
|
5
NEWS
5
NEWS
|
@ -1,5 +1,8 @@
|
|||
3.1.1 2012-??-??
|
||||
========
|
||||
* adds support for PHP_5_5
|
||||
|
||||
3.0.1 2012-??-??
|
||||
ChangeLog
|
||||
========
|
||||
* bug fixes
|
||||
* improve compatibility with "the ionCube PHP Loader", Zend Optimizer
|
||||
|
|
|
@ -20,8 +20,10 @@ 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.2.h \
|
||||
xcache/xc_const_string_opcodes_php5.3.h \
|
||||
xcache/xc_const_string_opcodes_php5.4.h \
|
||||
xcache/xc_const_string_opcodes_php5.5.h \
|
||||
xcache/xc_const_string_opcodes_php6.x.h
|
||||
|
||||
ifeq (${EA_DIR},)
|
||||
|
@ -60,6 +62,15 @@ xcache/xc_const_string_opcodes_php5.1.h: ${PHP5_1_DIR}/Zend/zend_vm_def.h
|
|||
mv "$@.tmp" "$@"
|
||||
endif
|
||||
|
||||
ifeq (${PHP5_2_DIR},)
|
||||
xcache/xc_const_string_opcodes_php5.2.h: dummy
|
||||
@echo "Skipped $@: PHP_5_2_DIR not set"
|
||||
else
|
||||
xcache/xc_const_string_opcodes_php5.2.h: ${PHP5_2_DIR}/Zend/zend_vm_def.h
|
||||
$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
endif
|
||||
|
||||
ifeq (${PHP5_3_DIR},)
|
||||
xcache/xc_const_string_opcodes_php5.3.h: dummy
|
||||
@echo "Skipped $@: PHP_5_3_DIR not set"
|
||||
|
@ -78,6 +89,15 @@ xcache/xc_const_string_opcodes_php5.4.h: ${PHP5_4_DIR}/Zend/zend_vm_def.h
|
|||
mv "$@.tmp" "$@"
|
||||
endif
|
||||
|
||||
ifeq (${PHP5_5_DIR},)
|
||||
xcache/xc_const_string_opcodes_php5.5.h: dummy
|
||||
@echo "Skipped $@: PHP_5_5_DIR not set"
|
||||
else
|
||||
xcache/xc_const_string_opcodes_php5.5.h: ${PHP5_5_DIR}/Zend/zend_vm_def.h
|
||||
$(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
|
||||
mv "$@.tmp" "$@"
|
||||
endif
|
||||
|
||||
ifeq (${PHP6_x_DIR},)
|
||||
xcache/xc_const_string_opcodes_php6.x.h: dummy
|
||||
@echo "Skipped $@: PHP_6_x_DIR not set"
|
||||
|
|
|
@ -164,10 +164,22 @@ static int op_get_flowinfo(op_flowinfo_t *fi, zend_op *opline) /* {{{ */
|
|||
case ZEND_HANDLE_EXCEPTION:
|
||||
#endif
|
||||
case ZEND_RETURN:
|
||||
#ifdef ZEND_FAST_RET
|
||||
case ZEND_FAST_RET:
|
||||
#endif
|
||||
#ifdef ZEND_GENERATOR_RETURN
|
||||
case ZEND_GENERATOR_RETURN:
|
||||
#endif
|
||||
case ZEND_EXIT:
|
||||
return SUCCESS; /* no fall */
|
||||
|
||||
#ifdef ZEND_GOTO
|
||||
case ZEND_GOTO:
|
||||
#endif
|
||||
case ZEND_JMP:
|
||||
#ifdef ZEND_FAST_CALL
|
||||
case ZEND_FAST_CALL:
|
||||
#endif
|
||||
fi->jmpout_op1 = Z_OP(opline->op1).opline_num;
|
||||
return SUCCESS; /* no fall */
|
||||
|
||||
|
|
|
@ -48,6 +48,10 @@ dnl }}}
|
|||
DEF_STRUCT_P_FUNC(`zend_try_catch_element', , `dnl {{{
|
||||
PROCESS(zend_uint, try_op)
|
||||
PROCESS(zend_uint, catch_op)
|
||||
#ifdef ZEND_ENGINE_2_5
|
||||
PROCESS(zend_uint, finally_op)
|
||||
PROCESS(zend_uint, finally_end)
|
||||
#endif
|
||||
')
|
||||
dnl }}}
|
||||
#endif
|
||||
|
@ -653,6 +657,9 @@ DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{
|
|||
case ZEND_GOTO:
|
||||
#endif
|
||||
case ZEND_JMP:
|
||||
#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);
|
||||
|
@ -761,6 +768,9 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
|
|||
case ZEND_GOTO:
|
||||
#endif
|
||||
case ZEND_JMP:
|
||||
#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
|
||||
|
@ -873,6 +883,11 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
|
|||
|
||||
PROCESS(zend_uint, T)
|
||||
|
||||
#ifdef ZEND_ENGINE_2_4
|
||||
PROCESS(zend_uint, nested_calls)
|
||||
PROCESS(zend_uint, used_stack)
|
||||
#endif
|
||||
|
||||
STRUCT_ARRAY(last_brk_cont_t, last_brk_cont, zend_brk_cont_element, brk_cont_array)
|
||||
PROCESS(last_brk_cont_t, last_brk_cont)
|
||||
#ifndef ZEND_ENGINE_2_4
|
||||
|
@ -886,6 +901,9 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
|
|||
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
|
||||
|
||||
STRUCT_P(HashTable, static_variables, HashTable_zval_ptr)
|
||||
|
||||
|
|
|
@ -10,7 +10,10 @@
|
|||
/* Purpose: Privode stuffs for compatibility with different PHP version
|
||||
*/
|
||||
|
||||
#if !defined(ZEND_ENGINE_2_4) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 4 || PHP_MAJOR_VERSION > 5)
|
||||
#if !defined(ZEND_ENGINE_2_5) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 5 || PHP_MAJOR_VERSION > 6)
|
||||
# define ZEND_ENGINE_2_5
|
||||
#endif
|
||||
#if !defined(ZEND_ENGINE_2_4) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 4 || defined(ZEND_ENGINE_2_5))
|
||||
# define ZEND_ENGINE_2_4
|
||||
#endif
|
||||
#if !defined(ZEND_ENGINE_2_3) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 3 || defined(ZEND_ENGINE_2_4))
|
||||
|
|
|
@ -63,6 +63,8 @@ const char *xc_get_data_type(zend_uchar data_type)
|
|||
/* {{{ xc_get_opcode */
|
||||
#if PHP_MAJOR_VERSION >= 6
|
||||
# include "xc_const_string_opcodes_php6.x.h"
|
||||
#elif defined(ZEND_ENGINE_2_5)
|
||||
# include "xc_const_string_opcodes_php5.5.h"
|
||||
#elif defined(ZEND_ENGINE_2_4)
|
||||
# include "xc_const_string_opcodes_php5.4.h"
|
||||
#elif defined(ZEND_ENGINE_2_3)
|
||||
|
|
|
@ -0,0 +1,167 @@
|
|||
/* size = 164 */
|
||||
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 */ "INIT_NS_FCALL_BY_NAME",
|
||||
/* 70 */ "FREE",
|
||||
/* 71 */ "INIT_ARRAY",
|
||||
/* 72 */ "ADD_ARRAY_ELEMENT",
|
||||
/* 73 */ "INCLUDE_OR_EVAL",
|
||||
/* 74 */ "UNSET_VAR",
|
||||
/* 75 */ "UNSET_DIM",
|
||||
/* 76 */ "UNSET_OBJ",
|
||||
/* 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 */ "GOTO",
|
||||
/* 101 */ "EXT_STMT",
|
||||
/* 102 */ "EXT_FCALL_BEGIN",
|
||||
/* 103 */ "EXT_FCALL_END",
|
||||
/* 104 */ "EXT_NOP",
|
||||
/* 105 */ "TICKS",
|
||||
/* 106 */ "SEND_VAR_NO_REF",
|
||||
/* 107 */ "CATCH",
|
||||
/* 108 */ "THROW",
|
||||
/* 109 */ "FETCH_CLASS",
|
||||
/* 110 */ "CLONE",
|
||||
/* 111 */ "RETURN_BY_REF",
|
||||
/* 112 */ "INIT_METHOD_CALL",
|
||||
/* 113 */ "INIT_STATIC_METHOD_CALL",
|
||||
/* 114 */ "ISSET_ISEMPTY_VAR",
|
||||
/* 115 */ "ISSET_ISEMPTY_DIM_OBJ",
|
||||
/* 116 */ "UNDEF",
|
||||
/* 117 */ "UNDEF",
|
||||
/* 118 */ "UNDEF",
|
||||
/* 119 */ "UNDEF",
|
||||
/* 120 */ "UNDEF",
|
||||
/* 121 */ "UNDEF",
|
||||
/* 122 */ "UNDEF",
|
||||
/* 123 */ "UNDEF",
|
||||
/* 124 */ "UNDEF",
|
||||
/* 125 */ "UNDEF",
|
||||
/* 126 */ "UNDEF",
|
||||
/* 127 */ "UNDEF",
|
||||
/* 128 */ "UNDEF",
|
||||
/* 129 */ "UNDEF",
|
||||
/* 130 */ "UNDEF",
|
||||
/* 131 */ "UNDEF",
|
||||
/* 132 */ "PRE_INC_OBJ",
|
||||
/* 133 */ "PRE_DEC_OBJ",
|
||||
/* 134 */ "POST_INC_OBJ",
|
||||
/* 135 */ "POST_DEC_OBJ",
|
||||
/* 136 */ "ASSIGN_OBJ",
|
||||
/* 137 */ "OP_DATA",
|
||||
/* 138 */ "INSTANCEOF",
|
||||
/* 139 */ "DECLARE_CLASS",
|
||||
/* 140 */ "DECLARE_INHERITED_CLASS",
|
||||
/* 141 */ "DECLARE_FUNCTION",
|
||||
/* 142 */ "RAISE_ABSTRACT_ERROR",
|
||||
/* 143 */ "DECLARE_CONST",
|
||||
/* 144 */ "ADD_INTERFACE",
|
||||
/* 145 */ "DECLARE_INHERITED_CLASS_DELAYED",
|
||||
/* 146 */ "VERIFY_ABSTRACT_CLASS",
|
||||
/* 147 */ "ASSIGN_DIM",
|
||||
/* 148 */ "ISSET_ISEMPTY_PROP_OBJ",
|
||||
/* 149 */ "HANDLE_EXCEPTION",
|
||||
/* 150 */ "USER_OPCODE",
|
||||
/* 151 */ "UNDEF",
|
||||
/* 152 */ "JMP_SET",
|
||||
/* 153 */ "DECLARE_LAMBDA_FUNCTION",
|
||||
/* 154 */ "ADD_TRAIT",
|
||||
/* 155 */ "BIND_TRAITS",
|
||||
/* 156 */ "SEPARATE",
|
||||
/* 157 */ "QM_ASSIGN_VAR",
|
||||
/* 158 */ "JMP_SET_VAR",
|
||||
/* 159 */ "DISCARD_EXCEPTION",
|
||||
/* 160 */ "YIELD",
|
||||
/* 161 */ "GENERATOR_RETURN",
|
||||
/* 162 */ "FAST_CALL",
|
||||
/* 163 */ "FAST_RET"
|
||||
};
|
|
@ -237,17 +237,20 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
|
|||
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 151 UNDEF */
|
||||
OPSPEC( UNUSED, STD, JMPADDR, TMP) /* 152 JMP_SET */
|
||||
OPSPEC( UNUSED, STD, STD, TMP) /* 153 DECLARE_LAMBDA_FUNCTION */
|
||||
# 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
|
||||
# else
|
||||
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 151 UNDEF */
|
||||
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 152 UNDEF */
|
||||
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 153 UNDEF */
|
||||
# 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 */
|
||||
|
|
|
@ -151,6 +151,9 @@ int xc_undo_pass_two(zend_op_array *op_array TSRMLS_DC) /* {{{ */
|
|||
case ZEND_GOTO:
|
||||
#endif
|
||||
case ZEND_JMP:
|
||||
#ifdef ZEND_FAST_CALL
|
||||
case ZEND_FAST_CALL:
|
||||
#endif
|
||||
assert(Z_OP(opline->op1).jmp_addr >= op_array->opcodes && (zend_uint) (Z_OP(opline->op1).jmp_addr - op_array->opcodes) < op_array->last);
|
||||
Z_OP(opline->op1).opline_num = Z_OP(opline->op1).jmp_addr - op_array->opcodes;
|
||||
break;
|
||||
|
@ -238,6 +241,9 @@ int xc_redo_pass_two(zend_op_array *op_array TSRMLS_DC) /* {{{ */
|
|||
case ZEND_GOTO:
|
||||
#endif
|
||||
case ZEND_JMP:
|
||||
#ifdef ZEND_FAST_CALL
|
||||
case ZEND_FAST_CALL:
|
||||
#endif
|
||||
assert(Z_OP(opline->op1).opline_num < op_array->last);
|
||||
Z_OP(opline->op1).jmp_addr = op_array->opcodes + Z_OP(opline->op1).opline_num;
|
||||
break;
|
||||
|
@ -346,6 +352,9 @@ int xc_foreach_early_binding_class(zend_op_array *op_array, xc_foreach_early_bin
|
|||
case ZEND_GOTO:
|
||||
#endif
|
||||
case ZEND_JMP:
|
||||
#ifdef ZEND_FAST_CALL
|
||||
case ZEND_FAST_CALL:
|
||||
#endif
|
||||
next = begin + Z_OP(opline->op1).opline_num;
|
||||
break;
|
||||
|
||||
|
|
Loading…
Reference in New Issue