From: Bob Weinand Date: Sat, 21 Dec 2013 22:49:28 +0000 (+0100) Subject: Merge branch 'PHP-5.4' into PHP-5.5 X-Git-Tag: php-5.5.8RC1~9 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0dd2765687ac7340d6de11b6a4fd9cf50ced1e93;p=php Merge branch 'PHP-5.4' into PHP-5.5 Conflicts: Zend/zend_vm_opcodes.h --- 0dd2765687ac7340d6de11b6a4fd9cf50ced1e93 diff --cc Zend/zend_vm_gen.php index 3eddeefbeb,5621a60f0d..551599d7ac --- a/Zend/zend_vm_gen.php +++ b/Zend/zend_vm_gen.php @@@ -1188,19 -1210,28 +1189,28 @@@ function gen_vm($def, $skel) fputs($f,"#define $op $code\n"); } - fputs($f,"\nstatic const char *zend_vm_opcodes_map[] = {\n"); + fputs($f, "\n#endif"); + fclose($f); + echo "zend_vm_opcodes.h generated successfully.\n"; + + // zend_vm_opcodes.c - $f = fopen("zend_vm_opcodes.c", "w+") or die("ERROR: Cannot create zend_vm_opcodes.c\n"); ++ $f = fopen(__DIR__ . "zend_vm_opcodes.c", "w+") or die("ERROR: Cannot create zend_vm_opcodes.c\n"); + + // Insert header + out($f, $GLOBALS['header_text']); + + fputs($f,"const char *zend_vm_opcodes_map[".($max_opcode + 1)."] = {\n"); for ($i = 0; $i <= $max_opcode; $i++) { fputs($f,"\t".(isset($opcodes[$i]["op"])?'"'.$opcodes[$i]["op"].'"':"NULL").",\n"); } fputs($f, "};\n"); - fputs($f, "\n#endif"); fclose($f); - echo "zend_vm_opcodes.h generated successfully.\n"; + echo "zend_vm_opcodes.c generated successfully.\n"; // Generate zend_vm_execute.h - $f = fopen("zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n"); - $executor_file = realpath("zend_vm_execute.h"); + $f = fopen(__DIR__ . "/zend_vm_execute.h", "w+") or die("ERROR: Cannot create zend_vm_execute.h\n"); + $executor_file = realpath(__DIR__ . "/zend_vm_execute.h"); // Insert header out($f, $GLOBALS['header_text']); diff --cc Zend/zend_vm_opcodes.c index 0000000000,88364bba67..55a0de12e9 mode 000000,100644..100644 --- a/Zend/zend_vm_opcodes.c +++ b/Zend/zend_vm_opcodes.c @@@ -1,0 -1,181 +1,186 @@@ + /* + +----------------------------------------------------------------------+ + | Zend Engine | + +----------------------------------------------------------------------+ + | Copyright (c) 1998-2013 Zend Technologies Ltd. (http://www.zend.com) | + +----------------------------------------------------------------------+ + | This source file is subject to version 2.00 of the Zend license, | + | that is bundled with this package in the file LICENSE, and is | + | available through the world-wide-web at the following url: | + | http://www.zend.com/license/2_00.txt. | + | If you did not receive a copy of the Zend license and are unable to | + | obtain it through the world-wide-web, please send a note to | + | license@zend.com so we can mail you a copy immediately. | + +----------------------------------------------------------------------+ + | Authors: Andi Gutmans | + | Zeev Suraski | + | Dmitry Stogov | + +----------------------------------------------------------------------+ + */ + -const char *zend_vm_opcodes_map[159] = { ++const char *zend_vm_opcodes_map[164] = { + "ZEND_NOP", + "ZEND_ADD", + "ZEND_SUB", + "ZEND_MUL", + "ZEND_DIV", + "ZEND_MOD", + "ZEND_SL", + "ZEND_SR", + "ZEND_CONCAT", + "ZEND_BW_OR", + "ZEND_BW_AND", + "ZEND_BW_XOR", + "ZEND_BW_NOT", + "ZEND_BOOL_NOT", + "ZEND_BOOL_XOR", + "ZEND_IS_IDENTICAL", + "ZEND_IS_NOT_IDENTICAL", + "ZEND_IS_EQUAL", + "ZEND_IS_NOT_EQUAL", + "ZEND_IS_SMALLER", + "ZEND_IS_SMALLER_OR_EQUAL", + "ZEND_CAST", + "ZEND_QM_ASSIGN", + "ZEND_ASSIGN_ADD", + "ZEND_ASSIGN_SUB", + "ZEND_ASSIGN_MUL", + "ZEND_ASSIGN_DIV", + "ZEND_ASSIGN_MOD", + "ZEND_ASSIGN_SL", + "ZEND_ASSIGN_SR", + "ZEND_ASSIGN_CONCAT", + "ZEND_ASSIGN_BW_OR", + "ZEND_ASSIGN_BW_AND", + "ZEND_ASSIGN_BW_XOR", + "ZEND_PRE_INC", + "ZEND_PRE_DEC", + "ZEND_POST_INC", + "ZEND_POST_DEC", + "ZEND_ASSIGN", + "ZEND_ASSIGN_REF", + "ZEND_ECHO", + "ZEND_PRINT", + "ZEND_JMP", + "ZEND_JMPZ", + "ZEND_JMPNZ", + "ZEND_JMPZNZ", + "ZEND_JMPZ_EX", + "ZEND_JMPNZ_EX", + "ZEND_CASE", + "ZEND_SWITCH_FREE", + "ZEND_BRK", + "ZEND_CONT", + "ZEND_BOOL", + "ZEND_INIT_STRING", + "ZEND_ADD_CHAR", + "ZEND_ADD_STRING", + "ZEND_ADD_VAR", + "ZEND_BEGIN_SILENCE", + "ZEND_END_SILENCE", + "ZEND_INIT_FCALL_BY_NAME", + "ZEND_DO_FCALL", + "ZEND_DO_FCALL_BY_NAME", + "ZEND_RETURN", + "ZEND_RECV", + "ZEND_RECV_INIT", + "ZEND_SEND_VAL", + "ZEND_SEND_VAR", + "ZEND_SEND_REF", + "ZEND_NEW", + "ZEND_INIT_NS_FCALL_BY_NAME", + "ZEND_FREE", + "ZEND_INIT_ARRAY", + "ZEND_ADD_ARRAY_ELEMENT", + "ZEND_INCLUDE_OR_EVAL", + "ZEND_UNSET_VAR", + "ZEND_UNSET_DIM", + "ZEND_UNSET_OBJ", + "ZEND_FE_RESET", + "ZEND_FE_FETCH", + "ZEND_EXIT", + "ZEND_FETCH_R", + "ZEND_FETCH_DIM_R", + "ZEND_FETCH_OBJ_R", + "ZEND_FETCH_W", + "ZEND_FETCH_DIM_W", + "ZEND_FETCH_OBJ_W", + "ZEND_FETCH_RW", + "ZEND_FETCH_DIM_RW", + "ZEND_FETCH_OBJ_RW", + "ZEND_FETCH_IS", + "ZEND_FETCH_DIM_IS", + "ZEND_FETCH_OBJ_IS", + "ZEND_FETCH_FUNC_ARG", + "ZEND_FETCH_DIM_FUNC_ARG", + "ZEND_FETCH_OBJ_FUNC_ARG", + "ZEND_FETCH_UNSET", + "ZEND_FETCH_DIM_UNSET", + "ZEND_FETCH_OBJ_UNSET", + "ZEND_FETCH_DIM_TMP_VAR", + "ZEND_FETCH_CONSTANT", + "ZEND_GOTO", + "ZEND_EXT_STMT", + "ZEND_EXT_FCALL_BEGIN", + "ZEND_EXT_FCALL_END", + "ZEND_EXT_NOP", + "ZEND_TICKS", + "ZEND_SEND_VAR_NO_REF", + "ZEND_CATCH", + "ZEND_THROW", + "ZEND_FETCH_CLASS", + "ZEND_CLONE", + "ZEND_RETURN_BY_REF", + "ZEND_INIT_METHOD_CALL", + "ZEND_INIT_STATIC_METHOD_CALL", + "ZEND_ISSET_ISEMPTY_VAR", + "ZEND_ISSET_ISEMPTY_DIM_OBJ", + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + "ZEND_PRE_INC_OBJ", + "ZEND_PRE_DEC_OBJ", + "ZEND_POST_INC_OBJ", + "ZEND_POST_DEC_OBJ", + "ZEND_ASSIGN_OBJ", + NULL, + "ZEND_INSTANCEOF", + "ZEND_DECLARE_CLASS", + "ZEND_DECLARE_INHERITED_CLASS", + "ZEND_DECLARE_FUNCTION", + "ZEND_RAISE_ABSTRACT_ERROR", + "ZEND_DECLARE_CONST", + "ZEND_ADD_INTERFACE", + "ZEND_DECLARE_INHERITED_CLASS_DELAYED", + "ZEND_VERIFY_ABSTRACT_CLASS", + "ZEND_ASSIGN_DIM", + "ZEND_ISSET_ISEMPTY_PROP_OBJ", + "ZEND_HANDLE_EXCEPTION", + "ZEND_USER_OPCODE", + NULL, + "ZEND_JMP_SET", + "ZEND_DECLARE_LAMBDA_FUNCTION", + "ZEND_ADD_TRAIT", + "ZEND_BIND_TRAITS", + "ZEND_SEPARATE", + "ZEND_QM_ASSIGN_VAR", + "ZEND_JMP_SET_VAR", ++ "ZEND_DISCARD_EXCEPTION", ++ "ZEND_YIELD", ++ "ZEND_GENERATOR_RETURN", ++ "ZEND_FAST_CALL", ++ "ZEND_FAST_RET", + }; diff --cc Zend/zend_vm_opcodes.h index 18bb0d27f7,09473dc19d..b6f4cfc897 --- a/Zend/zend_vm_opcodes.h +++ b/Zend/zend_vm_opcodes.h @@@ -21,6 -21,8 +21,8 @@@ #ifndef ZEND_VM_OPCODES_H #define ZEND_VM_OPCODES_H -extern ZEND_API const char *zend_vm_opcodes_map[159]; ++extern ZEND_API const char *zend_vm_opcodes_map[164]; + #define ZEND_NOP 0 #define ZEND_ADD 1 #define ZEND_SUB 2 @@@ -162,177 -164,5 +164,10 @@@ #define ZEND_SEPARATE 156 #define ZEND_QM_ASSIGN_VAR 157 #define ZEND_JMP_SET_VAR 158 +#define ZEND_DISCARD_EXCEPTION 159 +#define ZEND_YIELD 160 +#define ZEND_GENERATOR_RETURN 161 +#define ZEND_FAST_CALL 162 +#define ZEND_FAST_RET 163 - static const char *zend_vm_opcodes_map[] = { - "ZEND_NOP", - "ZEND_ADD", - "ZEND_SUB", - "ZEND_MUL", - "ZEND_DIV", - "ZEND_MOD", - "ZEND_SL", - "ZEND_SR", - "ZEND_CONCAT", - "ZEND_BW_OR", - "ZEND_BW_AND", - "ZEND_BW_XOR", - "ZEND_BW_NOT", - "ZEND_BOOL_NOT", - "ZEND_BOOL_XOR", - "ZEND_IS_IDENTICAL", - "ZEND_IS_NOT_IDENTICAL", - "ZEND_IS_EQUAL", - "ZEND_IS_NOT_EQUAL", - "ZEND_IS_SMALLER", - "ZEND_IS_SMALLER_OR_EQUAL", - "ZEND_CAST", - "ZEND_QM_ASSIGN", - "ZEND_ASSIGN_ADD", - "ZEND_ASSIGN_SUB", - "ZEND_ASSIGN_MUL", - "ZEND_ASSIGN_DIV", - "ZEND_ASSIGN_MOD", - "ZEND_ASSIGN_SL", - "ZEND_ASSIGN_SR", - "ZEND_ASSIGN_CONCAT", - "ZEND_ASSIGN_BW_OR", - "ZEND_ASSIGN_BW_AND", - "ZEND_ASSIGN_BW_XOR", - "ZEND_PRE_INC", - "ZEND_PRE_DEC", - "ZEND_POST_INC", - "ZEND_POST_DEC", - "ZEND_ASSIGN", - "ZEND_ASSIGN_REF", - "ZEND_ECHO", - "ZEND_PRINT", - "ZEND_JMP", - "ZEND_JMPZ", - "ZEND_JMPNZ", - "ZEND_JMPZNZ", - "ZEND_JMPZ_EX", - "ZEND_JMPNZ_EX", - "ZEND_CASE", - "ZEND_SWITCH_FREE", - "ZEND_BRK", - "ZEND_CONT", - "ZEND_BOOL", - "ZEND_INIT_STRING", - "ZEND_ADD_CHAR", - "ZEND_ADD_STRING", - "ZEND_ADD_VAR", - "ZEND_BEGIN_SILENCE", - "ZEND_END_SILENCE", - "ZEND_INIT_FCALL_BY_NAME", - "ZEND_DO_FCALL", - "ZEND_DO_FCALL_BY_NAME", - "ZEND_RETURN", - "ZEND_RECV", - "ZEND_RECV_INIT", - "ZEND_SEND_VAL", - "ZEND_SEND_VAR", - "ZEND_SEND_REF", - "ZEND_NEW", - "ZEND_INIT_NS_FCALL_BY_NAME", - "ZEND_FREE", - "ZEND_INIT_ARRAY", - "ZEND_ADD_ARRAY_ELEMENT", - "ZEND_INCLUDE_OR_EVAL", - "ZEND_UNSET_VAR", - "ZEND_UNSET_DIM", - "ZEND_UNSET_OBJ", - "ZEND_FE_RESET", - "ZEND_FE_FETCH", - "ZEND_EXIT", - "ZEND_FETCH_R", - "ZEND_FETCH_DIM_R", - "ZEND_FETCH_OBJ_R", - "ZEND_FETCH_W", - "ZEND_FETCH_DIM_W", - "ZEND_FETCH_OBJ_W", - "ZEND_FETCH_RW", - "ZEND_FETCH_DIM_RW", - "ZEND_FETCH_OBJ_RW", - "ZEND_FETCH_IS", - "ZEND_FETCH_DIM_IS", - "ZEND_FETCH_OBJ_IS", - "ZEND_FETCH_FUNC_ARG", - "ZEND_FETCH_DIM_FUNC_ARG", - "ZEND_FETCH_OBJ_FUNC_ARG", - "ZEND_FETCH_UNSET", - "ZEND_FETCH_DIM_UNSET", - "ZEND_FETCH_OBJ_UNSET", - "ZEND_FETCH_DIM_TMP_VAR", - "ZEND_FETCH_CONSTANT", - "ZEND_GOTO", - "ZEND_EXT_STMT", - "ZEND_EXT_FCALL_BEGIN", - "ZEND_EXT_FCALL_END", - "ZEND_EXT_NOP", - "ZEND_TICKS", - "ZEND_SEND_VAR_NO_REF", - "ZEND_CATCH", - "ZEND_THROW", - "ZEND_FETCH_CLASS", - "ZEND_CLONE", - "ZEND_RETURN_BY_REF", - "ZEND_INIT_METHOD_CALL", - "ZEND_INIT_STATIC_METHOD_CALL", - "ZEND_ISSET_ISEMPTY_VAR", - "ZEND_ISSET_ISEMPTY_DIM_OBJ", - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - "ZEND_PRE_INC_OBJ", - "ZEND_PRE_DEC_OBJ", - "ZEND_POST_INC_OBJ", - "ZEND_POST_DEC_OBJ", - "ZEND_ASSIGN_OBJ", - NULL, - "ZEND_INSTANCEOF", - "ZEND_DECLARE_CLASS", - "ZEND_DECLARE_INHERITED_CLASS", - "ZEND_DECLARE_FUNCTION", - "ZEND_RAISE_ABSTRACT_ERROR", - "ZEND_DECLARE_CONST", - "ZEND_ADD_INTERFACE", - "ZEND_DECLARE_INHERITED_CLASS_DELAYED", - "ZEND_VERIFY_ABSTRACT_CLASS", - "ZEND_ASSIGN_DIM", - "ZEND_ISSET_ISEMPTY_PROP_OBJ", - "ZEND_HANDLE_EXCEPTION", - "ZEND_USER_OPCODE", - NULL, - "ZEND_JMP_SET", - "ZEND_DECLARE_LAMBDA_FUNCTION", - "ZEND_ADD_TRAIT", - "ZEND_BIND_TRAITS", - "ZEND_SEPARATE", - "ZEND_QM_ASSIGN_VAR", - "ZEND_JMP_SET_VAR", - "ZEND_DISCARD_EXCEPTION", - "ZEND_YIELD", - "ZEND_GENERATOR_RETURN", - "ZEND_FAST_CALL", - "ZEND_FAST_RET", - }; - #endif