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
} /* }}} */