]> granicus.if.org Git - php/commitdiff
Retain full compability for all micro versions since PHP 5.4
authorBob Weinand <bobwei9@hotmail.com>
Sat, 12 Apr 2014 16:00:33 +0000 (18:00 +0200)
committerBob Weinand <bobwei9@hotmail.com>
Sat, 12 Apr 2014 16:00:33 +0000 (18:00 +0200)
phpdbg_opcode.c

index 55fb03ed1a3ae605d16662fb5a4308f12b6e7bf6..6b13625fc1417a4e0d8639c6edcdccb736d709ed 100644 (file)
@@ -183,6 +183,186 @@ void phpdbg_print_opline(zend_execute_data *execute_data, zend_bool ignore_flags
 
 const char *phpdbg_decode_opcode(zend_uchar opcode) /* {{{ */
 {
+#if ZEND_EXTENSION_API_NO <= PHP_5_5_API_NO
+#define CASE(s) case s: return #s
+       switch (opcode) {
+               CASE(ZEND_NOP);
+               CASE(ZEND_ADD);
+               CASE(ZEND_SUB);
+               CASE(ZEND_MUL);
+               CASE(ZEND_DIV);
+               CASE(ZEND_MOD);
+               CASE(ZEND_SL);
+               CASE(ZEND_SR);
+               CASE(ZEND_CONCAT);
+               CASE(ZEND_BW_OR);
+               CASE(ZEND_BW_AND);
+               CASE(ZEND_BW_XOR);
+               CASE(ZEND_BW_NOT);
+               CASE(ZEND_BOOL_NOT);
+               CASE(ZEND_BOOL_XOR);
+               CASE(ZEND_IS_IDENTICAL);
+               CASE(ZEND_IS_NOT_IDENTICAL);
+               CASE(ZEND_IS_EQUAL);
+               CASE(ZEND_IS_NOT_EQUAL);
+               CASE(ZEND_IS_SMALLER);
+               CASE(ZEND_IS_SMALLER_OR_EQUAL);
+               CASE(ZEND_CAST);
+               CASE(ZEND_QM_ASSIGN);
+               CASE(ZEND_ASSIGN_ADD);
+               CASE(ZEND_ASSIGN_SUB);
+               CASE(ZEND_ASSIGN_MUL);
+               CASE(ZEND_ASSIGN_DIV);
+               CASE(ZEND_ASSIGN_MOD);
+               CASE(ZEND_ASSIGN_SL);
+               CASE(ZEND_ASSIGN_SR);
+               CASE(ZEND_ASSIGN_CONCAT);
+               CASE(ZEND_ASSIGN_BW_OR);
+               CASE(ZEND_ASSIGN_BW_AND);
+               CASE(ZEND_ASSIGN_BW_XOR);
+               CASE(ZEND_PRE_INC);
+               CASE(ZEND_PRE_DEC);
+               CASE(ZEND_POST_INC);
+               CASE(ZEND_POST_DEC);
+               CASE(ZEND_ASSIGN);
+               CASE(ZEND_ASSIGN_REF);
+               CASE(ZEND_ECHO);
+               CASE(ZEND_PRINT);
+               CASE(ZEND_JMP);
+               CASE(ZEND_JMPZ);
+               CASE(ZEND_JMPNZ);
+               CASE(ZEND_JMPZNZ);
+               CASE(ZEND_JMPZ_EX);
+               CASE(ZEND_JMPNZ_EX);
+               CASE(ZEND_CASE);
+               CASE(ZEND_SWITCH_FREE);
+               CASE(ZEND_BRK);
+               CASE(ZEND_CONT);
+               CASE(ZEND_BOOL);
+               CASE(ZEND_INIT_STRING);
+               CASE(ZEND_ADD_CHAR);
+               CASE(ZEND_ADD_STRING);
+               CASE(ZEND_ADD_VAR);
+               CASE(ZEND_BEGIN_SILENCE);
+               CASE(ZEND_END_SILENCE);
+               CASE(ZEND_INIT_FCALL_BY_NAME);
+               CASE(ZEND_DO_FCALL);
+               CASE(ZEND_DO_FCALL_BY_NAME);
+               CASE(ZEND_RETURN);
+               CASE(ZEND_RECV);
+               CASE(ZEND_RECV_INIT);
+               CASE(ZEND_SEND_VAL);
+               CASE(ZEND_SEND_VAR);
+               CASE(ZEND_SEND_REF);
+               CASE(ZEND_NEW);
+               CASE(ZEND_INIT_NS_FCALL_BY_NAME);
+               CASE(ZEND_FREE);
+               CASE(ZEND_INIT_ARRAY);
+               CASE(ZEND_ADD_ARRAY_ELEMENT);
+               CASE(ZEND_INCLUDE_OR_EVAL);
+               CASE(ZEND_UNSET_VAR);
+               CASE(ZEND_UNSET_DIM);
+               CASE(ZEND_UNSET_OBJ);
+               CASE(ZEND_FE_RESET);
+               CASE(ZEND_FE_FETCH);
+               CASE(ZEND_EXIT);
+               CASE(ZEND_FETCH_R);
+               CASE(ZEND_FETCH_DIM_R);
+               CASE(ZEND_FETCH_OBJ_R);
+               CASE(ZEND_FETCH_W);
+               CASE(ZEND_FETCH_DIM_W);
+               CASE(ZEND_FETCH_OBJ_W);
+               CASE(ZEND_FETCH_RW);
+               CASE(ZEND_FETCH_DIM_RW);
+               CASE(ZEND_FETCH_OBJ_RW);
+               CASE(ZEND_FETCH_IS);
+               CASE(ZEND_FETCH_DIM_IS);
+               CASE(ZEND_FETCH_OBJ_IS);
+               CASE(ZEND_FETCH_FUNC_ARG);
+               CASE(ZEND_FETCH_DIM_FUNC_ARG);
+               CASE(ZEND_FETCH_OBJ_FUNC_ARG);
+               CASE(ZEND_FETCH_UNSET);
+               CASE(ZEND_FETCH_DIM_UNSET);
+               CASE(ZEND_FETCH_OBJ_UNSET);
+               CASE(ZEND_FETCH_DIM_TMP_VAR);
+               CASE(ZEND_FETCH_CONSTANT);
+               CASE(ZEND_GOTO);
+               CASE(ZEND_EXT_STMT);
+               CASE(ZEND_EXT_FCALL_BEGIN);
+               CASE(ZEND_EXT_FCALL_END);
+               CASE(ZEND_EXT_NOP);
+               CASE(ZEND_TICKS);
+               CASE(ZEND_SEND_VAR_NO_REF);
+               CASE(ZEND_CATCH);
+               CASE(ZEND_THROW);
+               CASE(ZEND_FETCH_CLASS);
+               CASE(ZEND_CLONE);
+               CASE(ZEND_RETURN_BY_REF);
+               CASE(ZEND_INIT_METHOD_CALL);
+               CASE(ZEND_INIT_STATIC_METHOD_CALL);
+               CASE(ZEND_ISSET_ISEMPTY_VAR);
+               CASE(ZEND_ISSET_ISEMPTY_DIM_OBJ);
+               CASE(ZEND_PRE_INC_OBJ);
+               CASE(ZEND_PRE_DEC_OBJ);
+               CASE(ZEND_POST_INC_OBJ);
+               CASE(ZEND_POST_DEC_OBJ);
+               CASE(ZEND_ASSIGN_OBJ);
+               CASE(ZEND_INSTANCEOF);
+               CASE(ZEND_DECLARE_CLASS);
+               CASE(ZEND_DECLARE_INHERITED_CLASS);
+               CASE(ZEND_DECLARE_FUNCTION);
+               CASE(ZEND_RAISE_ABSTRACT_ERROR);
+               CASE(ZEND_DECLARE_CONST);
+               CASE(ZEND_ADD_INTERFACE);
+               CASE(ZEND_DECLARE_INHERITED_CLASS_DELAYED);
+               CASE(ZEND_VERIFY_ABSTRACT_CLASS);
+               CASE(ZEND_ASSIGN_DIM);
+               CASE(ZEND_ISSET_ISEMPTY_PROP_OBJ);
+               CASE(ZEND_HANDLE_EXCEPTION);
+               CASE(ZEND_USER_OPCODE);
+#ifdef ZEND_JMP_SET
+               CASE(ZEND_JMP_SET);
+#endif
+               CASE(ZEND_DECLARE_LAMBDA_FUNCTION);
+#ifdef ZEND_ADD_TRAIT
+               CASE(ZEND_ADD_TRAIT);
+#endif
+#ifdef ZEND_BIND_TRAITS
+               CASE(ZEND_BIND_TRAITS);
+#endif
+#ifdef ZEND_SEPARATE
+               CASE(ZEND_SEPARATE);
+#endif
+#ifdef ZEND_QM_ASSIGN_VAR
+               CASE(ZEND_QM_ASSIGN_VAR);
+#endif
+#ifdef ZEND_JMP_SET_VAR
+               CASE(ZEND_JMP_SET_VAR);
+#endif
+#ifdef ZEND_DISCARD_EXCEPTION
+               CASE(ZEND_DISCARD_EXCEPTION);
+#endif
+#ifdef ZEND_YIELD
+               CASE(ZEND_YIELD);
+#endif
+#ifdef ZEND_GENERATOR_RETURN
+               CASE(ZEND_GENERATOR_RETURN);
+#endif
+#ifdef ZEND_FAST_CALL
+               CASE(ZEND_FAST_CALL);
+#endif
+#ifdef ZEND_FAST_RET
+               CASE(ZEND_FAST_RET);
+#endif
+#ifdef ZEND_RECV_VARIADIC
+               CASE(ZEND_RECV_VARIADIC);
+#endif
+               CASE(ZEND_OP_DATA);
+               default:
+                       return "UNKNOWN";
+       }
+#else
        const char *ret = zend_get_opcode_name(opcode);
        return ret?ret:"UNKNOWN";
+#endif
 } /* }}} */