From 22523476be28c3dadcec777420791d698bfb667a Mon Sep 17 00:00:00 2001 From: Xuefer Date: Mon, 16 Sep 2013 03:20:31 +0000 Subject: [PATCH] closes #326: opcode spec info updates for 5.4+ git-svn-id: svn://svn.lighttpd.net/xcache/trunk@1371 c26eb9a1-5813-0410-bd6c-c2e55f420ca7 --- xcache/xc_opcode_spec.h | 3 ++- xcache/xc_opcode_spec_def.h | 42 +++++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/xcache/xc_opcode_spec.h b/xcache/xc_opcode_spec.h index 4237f29..c2cb6c3 100644 --- a/xcache/xc_opcode_spec.h +++ b/xcache/xc_opcode_spec.h @@ -25,7 +25,8 @@ OPSPEC(BRK) \ OPSPEC(CONT) \ OPSPEC(INCLUDE) \ - OPSPEC(ASSIGN) + OPSPEC(ASSIGN) \ + OPSPEC(FETCHTYPE) #define OPSPECS_DEF_ENUM(name) OPSPEC_##name, typedef enum { OPSPECS(OPSPECS_DEF_ENUM) OPSPEC_DUMMY } xc_op_spec_t; diff --git a/xcache/xc_opcode_spec_def.h b/xcache/xc_opcode_spec_def.h index 3ac6ede..51b3f96 100644 --- a/xcache/xc_opcode_spec_def.h +++ b/xcache/xc_opcode_spec_def.h @@ -113,36 +113,66 @@ static const xc_opcode_spec_t xc_opcode_spec[] = { OPSPEC( BIT, STD, STD, TMP) /* 71 INIT_ARRAY */ OPSPEC( BIT, STD, STD, TMP) /* 72 ADD_ARRAY_ELEMENT */ OPSPEC( UNUSED, STD, INCLUDE, VAR) /* 73 INCLUDE_OR_EVAL */ - OPSPEC( UNUSED, STD, FETCH, UNUSED) /* 74 UNSET_VAR */ #ifdef ZEND_ENGINE_2_1 /* php 5.1 and up */ +# ifdef ZEND_ENGINE_2_4 + OPSPEC( FETCHTYPE, STD, STD, UNUSED) /* 74 UNSET_VAR */ +# else + OPSPEC( UNUSED, STD, FETCH, UNUSED) /* 74 UNSET_VAR */ +# endif OPSPEC( STD, STD, STD, UNUSED) /* 75 UNSET_DIM */ OPSPEC( STD, STD, STD, UNUSED) /* 76 UNSET_OBJ */ + OPSPEC( BIT, STD, OPLINE, VAR) /* 77 FE_RESET */ #else /* <= php 5.0 */ + OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 74 UNSET_VAR */ /* though there is no ISSET_ISEMPTY in php 5.0 it's better to leave it here i guess */ - OPSPEC( UNUSED, VAR, STD, UNUSED) /* 75 UNSET_DIM_OBJ */ - OPSPEC( UNUSED, VAR, ISSET, TMP) /* 76 UNUSED */ -#endif + OPSPEC( UNUSED, VAR, STD, UNUSED) + OPSPEC( UNUSED, VAR, ISSET, TMP) OPSPEC( BIT, STD, UNUSED, VAR) /* 77 FE_RESET */ +#endif OPSPEC( FE, STD, OPLINE, TMP) /* 78 FE_FETCH */ OPSPEC( UNUSED, STD, UNUSED, UNUSED) /* 79 EXIT */ +#ifdef ZEND_ENGINE_2_4 + OPSPEC( FETCHTYPE, STD, STD, VAR) /* 80 FETCH_R */ +#else OPSPEC( UNUSED, STD, FETCH, VAR) /* 80 FETCH_R */ +#endif OPSPEC( FETCH, VAR, STD, VAR) /* 81 FETCH_DIM_R */ OPSPEC( UNUSED, VAR_2, STD, VAR) /* 82 FETCH_OBJ_R */ +#ifdef ZEND_ENGINE_2_4 + OPSPEC( FETCHTYPE, STD, STD, VAR) /* 83 FETCH_W */ +#else OPSPEC( UNUSED, STD, FETCH, VAR) /* 83 FETCH_W */ +#endif OPSPEC( UNUSED, VAR, STD, VAR) /* 84 FETCH_DIM_W */ OPSPEC( UNUSED, VAR_2, STD, VAR) /* 85 FETCH_OBJ_W */ +#ifdef ZEND_ENGINE_2_4 + OPSPEC( FETCHTYPE, STD, STD, VAR) /* 86 FETCH_RW */ +#else OPSPEC( UNUSED, STD, FETCH, VAR) /* 86 FETCH_RW */ +#endif OPSPEC( UNUSED, VAR, STD, VAR) /* 87 FETCH_DIM_RW */ OPSPEC( UNUSED, VAR_2, STD, VAR) /* 88 FETCH_OBJ_RW */ +#ifdef ZEND_ENGINE_2_4 + OPSPEC( FETCHTYPE, STD, STD, VAR) /* 89 FETCH_IS */ +#else OPSPEC( UNUSED, STD, FETCH, VAR) /* 89 FETCH_IS */ +#endif OPSPEC( UNUSED, VAR, STD, VAR) /* 90 FETCH_DIM_IS */ OPSPEC( UNUSED, VAR_2, STD, VAR) /* 91 FETCH_OBJ_IS */ +#ifdef ZEND_ENGINE_2_4 + OPSPEC( ARG, STD, STD, VAR) /* 92 FETCH_FUNC_ARG */ +#else OPSPEC( ARG, STD, FETCH, VAR) /* 92 FETCH_FUNC_ARG */ +#endif OPSPEC( ARG, VAR, STD, VAR) /* 93 FETCH_DIM_FUNC_ARG */ OPSPEC( ARG, VAR_2, STD, VAR) /* 94 FETCH_OBJ_FUNC_ARG */ +#ifdef ZEND_ENGINE_2_4 + OPSPEC( FETCHTYPE, STD, STD, VAR) /* 95 FETCH_UNSET */ +#else OPSPEC( UNUSED, STD, FETCH, VAR) /* 95 FETCH_UNSET */ +#endif OPSPEC( UNUSED, VAR, STD, VAR) /* 96 FETCH_DIM_UNSET */ OPSPEC( UNUSED, VAR_2, STD, VAR) /* 97 FETCH_OBJ_UNSET */ OPSPEC( UNUSED, STD, STD, VAR) /* 98 FETCH_DIM_TMP_VAR */ @@ -193,7 +223,11 @@ static const xc_opcode_spec_t xc_opcode_spec[] = { # else OPSPEC( UNUSED, UCLASS, STD, UNUSED) /* 113 INIT_STATIC_METHOD_CALL */ # endif +# ifdef ZEND_ENGINE_2_4 + OPSPEC( ISSET, STD, STD, TMP) /* 114 ISSET_ISEMPTY_VAR */ +# else OPSPEC( ISSET, STD, FETCH, TMP) /* 114 ISSET_ISEMPTY_VAR */ +# endif OPSPEC( ISSET, STD, STD, TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ */ OPSPEC( UNUSED, CLASS, STD, UNUSED) /* 116 IMPORT_FUNCTION */