diff --git a/ChangeLog b/ChangeLog index a9ac6b5..68eaa43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,21 +5,37 @@ Ini Settings Changes ChangeLog ======== + * fixed #102: segv when var cacher is too small + * fixed #55: segv php tokenizer on certain special situation * compiler errors: all compiler warning (E_STRICT only currently) is now cached and is supported for user handler + * could not show module info in admin page when XCache is the last module + * wrong http auth realm + +1.3.0 2008-?-? +== ChangeLog == + * PHP 5.3 support + +1.2.2 2007-12-29 +== ChangeLog == * added module dependency * live with wrong system time: allow caching files with mtime in further * bug fix for compatibility with Zend Optimizer and other non-cachable - * new: xcache.stat = On - * could not show module info in admin page when XCache is the last module - * wrong http auth realm + * #59: Maximum execution time of 60 seconds exceeded + * #102: segv when var cacher is too small + * #55: segv php tokenizer on certain special situation + +1.2.1 2007-07-01 +== Ini Settings Changes == + * new: xcache.admin.enable_auth = On + +== ChangeLog == * #86: remove/edit variable in admin page - * fixed #102: segv when var cacher is too small - * fixed #55: segv php tokenizer on certain special situation * fixed #109: fast inc/dec was trying to break ro protection * fixed #101, #105: Fixed compatibility issue for apache 1.x * fixed #94: Garbage collector disabled when xcache.cacher set to off * fixed #92: Zend Optimizer compatibility issue * fixed #77: hits/misses was not updated + * fixed #59: pass by reference for internal function was broken * fixed #56: xcache_set segfaults when xcache.var_size=0 ======== diff --git a/NEWS b/NEWS index 2480584..7ecc7a1 100644 --- a/NEWS +++ b/NEWS @@ -1,9 +1,23 @@ 2.0.0 2007-?-? +== ChangeLog == + +1.3.0 2008-?-? +== ChangeLog == + * PHP 5.3 support + +1.2.2 2007-12-29 ======== + * live with wrong system time: allow caching files with mtime in further * bug fix for compatibility with Zend Optimizer and other non-cachable * a rare segv bug with token_get_all + * minor bug fixes + +1.2.1 2007-07-01 +======== * compatibility fix for apache 1.x, which init XCache module correctly * full Zend Optimizer compatibility + * ini settings changed + * other bug fixes 1.2.0 2006-12-10 ======== diff --git a/const_string.c b/const_string.c index 9832baa..dc0966b 100644 --- a/const_string.c +++ b/const_string.c @@ -63,8 +63,6 @@ const char *xc_get_data_type(zend_uchar data_type) /* {{{ xc_get_opcode */ #if PHP_MAJOR_VERSION >= 6 # include "const_string_opcodes_php6.x.h" -#elif defined(ZEND_ENGINE_2_3) -# include "const_string_opcodes_php5.3.h" #elif defined(ZEND_ENGINE_2_1) # include "const_string_opcodes_php5.1.h" #elif defined(ZEND_ENGINE_2) diff --git a/const_string_opcodes_php5.1.h b/const_string_opcodes_php5.1.h index 8e7a56e..6472e37 100644 --- a/const_string_opcodes_php5.1.h +++ b/const_string_opcodes_php5.1.h @@ -1,4 +1,4 @@ -/* size = 150 */ +/* size = 153 */ static const char *const xc_opcode_names[] = { /* 0 */ "NOP", /* 1 */ "ADD", @@ -69,7 +69,7 @@ static const char *const xc_opcode_names[] = { /* 66 */ "SEND_VAR", /* 67 */ "SEND_REF", /* 68 */ "NEW", -/* 69 */ "UNDEF", +/* 69 */ "INIT_NS_FCALL_BY_NAME", /* 70 */ "FREE", /* 71 */ "INIT_ARRAY", /* 72 */ "ADD_ARRAY_ELEMENT", @@ -100,7 +100,7 @@ static const char *const xc_opcode_names[] = { /* 97 */ "FETCH_OBJ_UNSET", /* 98 */ "FETCH_DIM_TMP_VAR", /* 99 */ "FETCH_CONSTANT", -/* 100 */ "UNDEF", +/* 100 */ "GOTO", /* 101 */ "EXT_STMT", /* 102 */ "EXT_FCALL_BEGIN", /* 103 */ "EXT_FCALL_END", @@ -143,12 +143,15 @@ static const char *const xc_opcode_names[] = { /* 140 */ "DECLARE_INHERITED_CLASS", /* 141 */ "DECLARE_FUNCTION", /* 142 */ "RAISE_ABSTRACT_ERROR", -/* 143 */ "UNDEF", +/* 143 */ "DECLARE_CONST", /* 144 */ "ADD_INTERFACE", -/* 145 */ "UNDEF", +/* 145 */ "DECLARE_INHERITED_CLASS_DELAYED", /* 146 */ "VERIFY_ABSTRACT_CLASS", /* 147 */ "ASSIGN_DIM", /* 148 */ "ISSET_ISEMPTY_PROP_OBJ", /* 149 */ "HANDLE_EXCEPTION", -/* 150 */ "USER_OPCODE" +/* 150 */ "USER_OPCODE", +/* 151 */ "UNDEF", +/* 152 */ "JMP_SET", +/* 153 */ "DECLARE_LAMBDA_FUNCTION" }; diff --git a/const_string_opcodes_php5.3.h b/const_string_opcodes_php5.3.h deleted file mode 100644 index 10b1ba3..0000000 --- a/const_string_opcodes_php5.3.h +++ /dev/null @@ -1,156 +0,0 @@ -/* size = 152 */ -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 */ "UNDEF", -/* 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 */ "UNDEF", -/* 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 */ "UNDEF", -/* 146 */ "VERIFY_ABSTRACT_CLASS", -/* 147 */ "ASSIGN_DIM", -/* 148 */ "ISSET_ISEMPTY_PROP_OBJ", -/* 149 */ "HANDLE_EXCEPTION", -/* 150 */ "USER_OPCODE", -/* 151 */ "UNDEF", -/* 152 */ "JMP_SET" -}; diff --git a/const_string_opcodes_php6.x.h b/const_string_opcodes_php6.x.h index d2d43f3..fd65b22 100644 --- a/const_string_opcodes_php6.x.h +++ b/const_string_opcodes_php6.x.h @@ -1,4 +1,4 @@ -/* size = 152 */ +/* size = 153 */ static const char *const xc_opcode_names[] = { /* 0 */ "NOP", /* 1 */ "ADD", @@ -145,12 +145,13 @@ static const char *const xc_opcode_names[] = { /* 142 */ "RAISE_ABSTRACT_ERROR", /* 143 */ "DECLARE_CONST", /* 144 */ "ADD_INTERFACE", -/* 145 */ "UNDEF", +/* 145 */ "DECLARE_INHERITED_CLASS_DELAYED", /* 146 */ "VERIFY_ABSTRACT_CLASS", /* 147 */ "ASSIGN_DIM", /* 148 */ "ISSET_ISEMPTY_PROP_OBJ", /* 149 */ "HANDLE_EXCEPTION", /* 150 */ "USER_OPCODE", /* 151 */ "U_NORMALIZE", -/* 152 */ "JMP_SET" +/* 152 */ "JMP_SET", +/* 153 */ "DECLARE_LAMBDA_FUNCTION" }; diff --git a/prepare.devel b/prepare.devel index 12ab58b..e279f50 100755 --- a/prepare.devel +++ b/prepare.devel @@ -27,7 +27,6 @@ make_const_string() { make_const_string_opcodes_php4.x.h make_const_string_opcodes_php5.0.h make_const_string_opcodes_php5.1.h - make_const_string_opcodes_php5.3.h make_const_string_opcodes_php6.x.h } @@ -48,10 +47,6 @@ make_const_string_opcodes_php5.1.h() { precheck const_string_opcodes_php5.1.h "${PHP5_1_DIR}/Zend/zend_vm_def.h" && "$AWK" -f ./mkopcode.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O" } -make_const_string_opcodes_php5.3.h() { - precheck const_string_opcodes_php5.3.h "${PHP5_3_DIR}/Zend/zend_vm_def.h" && "$AWK" -f ./mkopcode.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O" -} - make_const_string_opcodes_php6.x.h() { precheck const_string_opcodes_php6.x.h "${PHP6_x_DIR}/Zend/zend_vm_def.h" && "$AWK" -f ./mkopcode.awk < "$I" > "$O.tmp" && mv "$O.tmp" "$O" } diff --git a/processor/processor.m4 b/processor/processor.m4 index 691ac08..05ac873 100644 --- a/processor/processor.m4 +++ b/processor/processor.m4 @@ -617,9 +617,13 @@ DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{ COPY(start_op) DISPATCH(int, backpatch_count) +#ifdef ZEND_ENGINE_2_3 + DISPATCH(zend_uint, this_var) +#endif DISPATCH(zend_bool, done_pass_two) -#ifdef ZEND_ENGINE_2 + /* 5.0 <= ver < 5.3 */ +#if defined(ZEND_ENGINE_2) && !defined(ZEND_ENGINE_2_3) DISPATCH(zend_bool, uses_this) #endif diff --git a/xcache.h b/xcache.h index ff2a6f1..85bacf4 100644 --- a/xcache.h +++ b/xcache.h @@ -51,13 +51,13 @@ # define ALLOCA_FLAG(x) #endif #ifndef Z_SET_ISREF -# define Z_SET_ISREF(z) (z).is_ref = 1; +# define Z_SET_ISREF(z) (z).is_ref = 1 #endif #ifndef Z_UNSET_ISREF -# define Z_UNSET_ISREF(z) (z).is_ref = 0; +# define Z_UNSET_ISREF(z) (z).is_ref = 0 #endif #ifndef Z_SET_REFCOUNT -# define Z_SET_REFCOUNT(z, rc) (z).refcount = rc; +# define Z_SET_REFCOUNT(z, rc) (z).refcount = rc #endif #ifndef IS_CONSTANT_TYPE_MASK # define IS_CONSTANT_TYPE_MASK 0xf