summaryrefslogtreecommitdiff
path: root/xcache
diff options
context:
space:
mode:
authorXuefer <xuefer@gmail.com>2014-05-27 04:53:34 +0000
committerXuefer <xuefer@gmail.com>2014-05-27 04:53:34 +0000
commita35afeb482fdff2096b014f5039abbec40a43d7b (patch)
tree6856b28fc58849eadc9fe4c5b446e20e7fe02d36 /xcache
parent028aafe3c4653f7eba5634a05b2b154c3f06810a (diff)
downloadxcache-a35afeb482fdff2096b014f5039abbec40a43d7b.tar.gz
xcache-a35afeb482fdff2096b014f5039abbec40a43d7b.zip
WIP PHP_5_6 support
git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1486 c26eb9a1-5813-0410-bd6c-c2e55f420ca7
Diffstat (limited to 'xcache')
-rw-r--r--xcache/xc_compatibility.h5
-rw-r--r--xcache/xc_const_string.c2
-rw-r--r--xcache/xc_const_string_opcodes_php5.6.h171
-rw-r--r--xcache/xc_opcode_spec_def.h6
4 files changed, 183 insertions, 1 deletions
diff --git a/xcache/xc_compatibility.h b/xcache/xc_compatibility.h
index e96f74f..8d522c5 100644
--- a/xcache/xc_compatibility.h
+++ b/xcache/xc_compatibility.h
@@ -10,7 +10,10 @@
/* Purpose: Privode stuffs for compatibility with different PHP version
*/
-#if !defined(ZEND_ENGINE_2_5) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 5 || PHP_MAJOR_VERSION > 6)
+#if !defined(ZEND_ENGINE_2_6) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 6 || PHP_MAJOR_VERSION > 6)
+# define ZEND_ENGINE_2_6
+#endif
+#if !defined(ZEND_ENGINE_2_5) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 5 || defined(ZEND_ENGINE_2_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))
diff --git a/xcache/xc_const_string.c b/xcache/xc_const_string.c
index 94f48da..4de5e1e 100644
--- a/xcache/xc_const_string.c
+++ b/xcache/xc_const_string.c
@@ -71,6 +71,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_6)
+# include "xc_const_string_opcodes_php5.6.h"
#elif defined(ZEND_ENGINE_2_5)
# include "xc_const_string_opcodes_php5.5.h"
#elif defined(ZEND_ENGINE_2_4)
diff --git a/xcache/xc_const_string_opcodes_php5.6.h b/xcache/xc_const_string_opcodes_php5.6.h
new file mode 100644
index 0000000..4366d5e
--- /dev/null
+++ b/xcache/xc_const_string_opcodes_php5.6.h
@@ -0,0 +1,171 @@
+/* size = 168 */
+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",
+/* 164 */ "RECV_VARIADIC",
+/* 165 */ "SEND_UNPACK",
+/* 166 */ "POW",
+/* 167 */ "ASSIGN_POW"
+};
diff --git a/xcache/xc_opcode_spec_def.h b/xcache/xc_opcode_spec_def.h
index 51b3f96..527835f 100644
--- a/xcache/xc_opcode_spec_def.h
+++ b/xcache/xc_opcode_spec_def.h
@@ -300,4 +300,10 @@ static const xc_opcode_spec_t xc_opcode_spec[] = {
OPSPEC( UNUSED, JMPADDR, UNUSED, UNUSED) /* 162 FAST_CALL */
OPSPEC( UNUSED, UNUSED, UNUSED, UNUSED) /* 163 FAST_RET */
#endif
+#ifdef ZEND_ENGINE_2_6
+ OPSPEC( UNUSED, ARG, UNUSED, VAR) /* 164 RECV_VARIADIC */
+ OPSPEC( SEND, STD, ARG, UNUSED) /* 165 SEND_UNPACK */
+ OPSPEC( UNUSED, STD, STD, TMP) /* 166 POW */
+ OPSPEC( ASSIGN, STD, STD, VAR) /* 167 ASSIGN_POW */
+#endif
};