]> granicus.if.org Git - php/commitdiff
Removed ZEND_QM_ASSIGN_VAR and ZEND_JMP_SET_VAR opcodes (in PHPNG they did exacly...
authorDmitry Stogov <dmitry@zend.com>
Thu, 11 Sep 2014 08:29:54 +0000 (12:29 +0400)
committerDmitry Stogov <dmitry@zend.com>
Thu, 11 Sep 2014 08:29:54 +0000 (12:29 +0400)
13 files changed:
Zend/zend_compile.c
Zend/zend_opcode.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h
Zend/zend_vm_opcodes.c
Zend/zend_vm_opcodes.h
ext/opcache/Optimizer/block_pass.c
ext/opcache/Optimizer/nop_removal.c
ext/opcache/Optimizer/pass1_5.c
ext/opcache/Optimizer/pass3.c
ext/opcache/Optimizer/zend_optimizer.c
ext/opcache/zend_persist.c
sapi/phpdbg/phpdbg_opcode.c

index a5a32298d584a7fa8d8473da86aede243ba33b8e..a3942b98ee76eda4410a3a685a9b164b819aa921 100644 (file)
@@ -560,7 +560,7 @@ void zend_do_free(znode *op1 TSRMLS_DC) /* {{{ */
                        if (opline->opcode == ZEND_FETCH_R ||
                            opline->opcode == ZEND_FETCH_DIM_R ||
                            opline->opcode == ZEND_FETCH_OBJ_R ||
-                           opline->opcode == ZEND_QM_ASSIGN_VAR) {
+                           opline->opcode == ZEND_QM_ASSIGN) {
                                /* It's very rare and useless case. It's better to use
                                   additional FREE opcode and simplify the FETCH handlers
                                   their selves */
@@ -6870,23 +6870,13 @@ static void zend_compile_shorthand_conditional(znode *result, zend_ast *ast TSRM
        zend_compile_expr(&cond_node, cond_ast TSRMLS_CC);
 
        opnum_jmp_set = get_next_op_number(CG(active_op_array));
-       zend_emit_op_tmp(result, ZEND_JMP_SET, &cond_node, NULL TSRMLS_CC);
+       zend_emit_op(result, ZEND_JMP_SET, &cond_node, NULL TSRMLS_CC);
 
        zend_compile_expr(&false_node, false_ast TSRMLS_CC);
 
        opline_jmp_set = &CG(active_op_array)->opcodes[opnum_jmp_set];
        opline_jmp_set->op2.opline_num = get_next_op_number(CG(active_op_array)) + 1;
-       if (cond_node.op_type == IS_VAR || cond_node.op_type == IS_CV
-               || false_node.op_type == IS_VAR || false_node.op_type == IS_CV
-       ) {
-               opline_jmp_set->opcode = ZEND_JMP_SET_VAR;
-               opline_jmp_set->result_type = IS_VAR;
-               GET_NODE(result, opline_jmp_set->result);
-
-               opline_qm_assign = zend_emit_op(NULL, ZEND_QM_ASSIGN_VAR, &false_node, NULL TSRMLS_CC);
-       } else {
-               opline_qm_assign = zend_emit_op(NULL, ZEND_QM_ASSIGN, &false_node, NULL TSRMLS_CC);
-       }
+       opline_qm_assign = zend_emit_op(NULL, ZEND_QM_ASSIGN, &false_node, NULL TSRMLS_CC);
        SET_NODE(opline_qm_assign->result, result);
 }
 /* }}} */
@@ -6922,14 +6912,6 @@ void zend_compile_conditional(znode *result, zend_ast *ast TSRMLS_DC) /* {{{ */
        zend_compile_expr(&false_node, false_ast TSRMLS_CC);
 
        opline_qm_assign1 = &CG(active_op_array)->opcodes[opnum_qm_assign1];
-       if (true_node.op_type == IS_VAR || true_node.op_type == IS_CV
-               || false_node.op_type == IS_VAR || false_node.op_type == IS_CV
-       ) {
-               opline_qm_assign1->opcode = ZEND_QM_ASSIGN_VAR;
-               opline_qm_assign1->result_type = IS_VAR;
-               GET_NODE(result, opline_qm_assign1->result);
-       }
-
        opline_qm_assign2 = zend_emit_op(NULL, opline_qm_assign1->opcode, &false_node, NULL TSRMLS_CC);
        SET_NODE(opline_qm_assign2->result, result);
 
index db1f1cf9cc799940fcce948093b6d2b2b5de2d66..dfc635d14bee397a8b652395dd9f1767af11e2c3 100644 (file)
@@ -738,7 +738,6 @@ ZEND_API int pass_two(zend_op_array *op_array TSRMLS_DC)
                        case ZEND_JMPZ_EX:
                        case ZEND_JMPNZ_EX:
                        case ZEND_JMP_SET:
-                       case ZEND_JMP_SET_VAR:
                        case ZEND_NEW:
                        case ZEND_FE_RESET:
                        case ZEND_FE_FETCH:
index 4bd80bd9d67094676ca5250615ef44bc590b69d4..aedd4852edec2a8a30f16d4898c42c60e14846cb 100644 (file)
@@ -5116,33 +5116,7 @@ ZEND_VM_HANDLER(152, ZEND_JMP_SET, CONST|TMP|VAR|CV, ANY)
        zval *value;
 
        SAVE_OPLINE();
-       value = GET_OP1_ZVAL_PTR(BP_VAR_R);
-
-       if (i_zend_is_true(value TSRMLS_CC)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-               if (OP1_TYPE == IS_CONST) {
-                       if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                               zval_copy_ctor_func(EX_VAR(opline->result.var));
-                       }
-               } else if (OP1_TYPE == IS_CV) {
-                       if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-               }
-               ZEND_VM_JMP(opline->op2.jmp_addr);
-       }
-
-       FREE_OP1();
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-ZEND_VM_HANDLER(158, ZEND_JMP_SET_VAR, CONST|TMP|VAR|CV, ANY)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *value;
-
-       SAVE_OPLINE();
-       value = GET_OP1_ZVAL_PTR(BP_VAR_R);
+       value = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
 
        if (i_zend_is_true(value TSRMLS_CC)) {
                ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
@@ -5168,27 +5142,7 @@ ZEND_VM_HANDLER(22, ZEND_QM_ASSIGN, CONST|TMP|VAR|CV, ANY)
        zval *value;
 
        SAVE_OPLINE();
-       value = GET_OP1_ZVAL_PTR(BP_VAR_R);
-
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-       if (OP1_TYPE == IS_CONST) {
-               if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                       zval_copy_ctor_func(EX_VAR(opline->result.var));
-               }
-       } else if (OP1_TYPE == IS_CV) {
-               if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-       }
-       ZEND_VM_NEXT_OPCODE();
-}
-
-ZEND_VM_HANDLER(157, ZEND_QM_ASSIGN_VAR, CONST|TMP|VAR|CV, ANY)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *value;
-
-       SAVE_OPLINE();
-       value = GET_OP1_ZVAL_PTR(BP_VAR_R);
+       value = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R);
 
        ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
        if (OP1_TYPE == IS_CONST) {
index 0720356e94abc42aab8afb2a6cb7a20f34e6dc1f..2bc348763168053f34b77023493aeea273f38b90 100644 (file)
@@ -3288,31 +3288,6 @@ static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_AR
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       zval *value;
-
-       SAVE_OPLINE();
-       value = opline->op1.zv;
-
-       if (i_zend_is_true(value TSRMLS_CC)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-               if (IS_CONST == IS_CONST) {
-                       if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                               zval_copy_ctor_func(EX_VAR(opline->result.var));
-                       }
-               } else if (IS_CONST == IS_CV) {
-                       if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-               }
-               ZEND_VM_JMP(opline->op2.jmp_addr);
-       }
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -3333,26 +3308,6 @@ static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       zval *value;
-
-       SAVE_OPLINE();
-       value = opline->op1.zv;
-
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-       if (IS_CONST == IS_CONST) {
-               if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                       zval_copy_ctor_func(EX_VAR(opline->result.var));
-               }
-       } else if (IS_CONST == IS_CV) {
-               if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-       }
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_STRLEN_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -10056,32 +10011,6 @@ static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *value;
-
-       SAVE_OPLINE();
-       value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
-       if (i_zend_is_true(value TSRMLS_CC)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-               if (IS_TMP_VAR == IS_CONST) {
-                       if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                               zval_copy_ctor_func(EX_VAR(opline->result.var));
-                       }
-               } else if (IS_TMP_VAR == IS_CV) {
-                       if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-               }
-               ZEND_VM_JMP(opline->op2.jmp_addr);
-       }
-
-       zval_dtor(free_op1.var);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -10102,26 +10031,6 @@ static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_AR
        ZEND_VM_NEXT_OPCODE();
 }
 
-static int ZEND_FASTCALL  ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *value;
-
-       SAVE_OPLINE();
-       value = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-       if (IS_TMP_VAR == IS_CONST) {
-               if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                       zval_copy_ctor_func(EX_VAR(opline->result.var));
-               }
-       } else if (IS_TMP_VAR == IS_CV) {
-               if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-       }
-       ZEND_VM_NEXT_OPCODE();
-}
-
 static int ZEND_FASTCALL  ZEND_INSTANCEOF_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
        USE_OPLINE
@@ -16837,33 +16746,7 @@ static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS
        zval *value;
 
        SAVE_OPLINE();
-       value = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
-       if (i_zend_is_true(value TSRMLS_CC)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-               if (IS_VAR == IS_CONST) {
-                       if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                               zval_copy_ctor_func(EX_VAR(opline->result.var));
-                       }
-               } else if (IS_VAR == IS_CV) {
-                       if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-               }
-               ZEND_VM_JMP(opline->op2.jmp_addr);
-       }
-
-       zval_ptr_dtor_nogc(free_op1.var);
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *value;
-
-       SAVE_OPLINE();
-       value = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       value = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
 
        if (i_zend_is_true(value TSRMLS_CC)) {
                ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
@@ -16889,27 +16772,7 @@ static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_AR
        zval *value;
 
        SAVE_OPLINE();
-       value = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
-
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-       if (IS_VAR == IS_CONST) {
-               if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                       zval_copy_ctor_func(EX_VAR(opline->result.var));
-               }
-       } else if (IS_VAR == IS_CV) {
-               if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-       }
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-       zend_free_op free_op1;
-       zval *value;
-
-       SAVE_OPLINE();
-       value = _get_zval_ptr_var(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
+       value = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC);
 
        ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
        if (IS_VAR == IS_CONST) {
@@ -34113,32 +33976,7 @@ static int ZEND_FASTCALL  ZEND_JMP_SET_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        zval *value;
 
        SAVE_OPLINE();
-       value = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-
-       if (i_zend_is_true(value TSRMLS_CC)) {
-               ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-               if (IS_CV == IS_CONST) {
-                       if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                               zval_copy_ctor_func(EX_VAR(opline->result.var));
-                       }
-               } else if (IS_CV == IS_CV) {
-                       if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-               }
-               ZEND_VM_JMP(opline->op2.jmp_addr);
-       }
-
-       CHECK_EXCEPTION();
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_JMP_SET_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       zval *value;
-
-       SAVE_OPLINE();
-       value = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+       value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
 
        if (i_zend_is_true(value TSRMLS_CC)) {
                ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
@@ -34163,27 +34001,7 @@ static int ZEND_FASTCALL  ZEND_QM_ASSIGN_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARG
        zval *value;
 
        SAVE_OPLINE();
-       value = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
-
-       ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
-       if (IS_CV == IS_CONST) {
-               if (UNEXPECTED(Z_OPT_COPYABLE_P(value))) {
-                       zval_copy_ctor_func(EX_VAR(opline->result.var));
-               }
-       } else if (IS_CV == IS_CV) {
-               if (Z_OPT_REFCOUNTED_P(value)) Z_ADDREF_P(value);
-       }
-       ZEND_VM_NEXT_OPCODE();
-}
-
-static int ZEND_FASTCALL  ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
-{
-       USE_OPLINE
-
-       zval *value;
-
-       SAVE_OPLINE();
-       value = _get_zval_ptr_cv_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
+       value = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC);
 
        ZVAL_COPY_VALUE(EX_VAR(opline->result.var), value);
        if (IS_CV == IS_CONST) {
@@ -47554,56 +47372,56 @@ void zend_init_opcodes_handlers(void)
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CONST_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_TMP_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_VAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER,
-       ZEND_QM_ASSIGN_VAR_SPEC_CV_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CONST_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_TMP_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_VAR_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
        ZEND_NULL_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
-       ZEND_JMP_SET_VAR_SPEC_CV_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
+       ZEND_NULL_HANDLER,
        ZEND_DISCARD_EXCEPTION_SPEC_HANDLER,
        ZEND_DISCARD_EXCEPTION_SPEC_HANDLER,
        ZEND_DISCARD_EXCEPTION_SPEC_HANDLER,
index 729f9229630f606f4a71b048fd9b6e475efdb5f9..8d86ce23f1ed706a5e49fe3235f6f176c92a9f33 100644 (file)
@@ -179,8 +179,8 @@ const char *zend_vm_opcodes_map[169] = {
        "ZEND_ADD_TRAIT",
        "ZEND_BIND_TRAITS",
        "ZEND_SEPARATE",
-       "ZEND_QM_ASSIGN_VAR",
-       "ZEND_JMP_SET_VAR",
+       NULL,
+       NULL,
        "ZEND_DISCARD_EXCEPTION",
        "ZEND_YIELD",
        "ZEND_GENERATOR_RETURN",
index 9274d3e044afab7f3b751a89bb01926ef2f68919..70721b874b7376b649f3336776d3fc4fc9c27146 100644 (file)
@@ -170,8 +170,6 @@ ZEND_API const char *zend_get_opcode_name(zend_uchar opcode);
 #define ZEND_ADD_TRAIT                       154
 #define ZEND_BIND_TRAITS                     155
 #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
index 3289299ce19531179f40f060e1901d75966fa599..42fc06853fd910a9d2d8b55eb18cd32eda9401a7 100644 (file)
@@ -169,7 +169,6 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz
                        case ZEND_FE_RESET:
                        case ZEND_NEW:
                        case ZEND_JMP_SET:
-                       case ZEND_JMP_SET_VAR:
                                START_BLOCK_OP(ZEND_OP2(opline).opline_num);
                                START_BLOCK_OP(opno + 1);
                                break;
@@ -297,7 +296,6 @@ static int find_code_blocks(zend_op_array *op_array, zend_cfg *cfg, zend_optimiz
                                case ZEND_FE_RESET:
                                case ZEND_NEW:
                                case ZEND_JMP_SET:
-                               case ZEND_JMP_SET_VAR:
                                case ZEND_FE_FETCH:
                                        cur_block->op2_to = &blocks[ZEND_OP2(opline).opline_num];
                                        /* break missing intentionally */
@@ -614,7 +612,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
        end = opline + block->len;
        while ((op_array->T) && (opline < end)) {
                /* strip X = QM_ASSIGN(const) */
-               if (ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
+               if ((ZEND_OP1_TYPE(opline) & (IS_TMP_VAR|IS_VAR)) &&
                        VAR_SOURCE(opline->op1) &&
                        VAR_SOURCE(opline->op1)->opcode == ZEND_QM_ASSIGN &&
                        ZEND_OP1_TYPE(VAR_SOURCE(opline->op1)) == IS_CONST &&
@@ -633,7 +631,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                }
 
                /* T = QM_ASSIGN(C), F(T) => NOP, F(C) */
-               if (ZEND_OP2_TYPE(opline) == IS_TMP_VAR &&
+               if ((ZEND_OP2_TYPE(opline) & (IS_TMP_VAR|IS_VAR)) &&
                        VAR_SOURCE(opline->op2) &&
                        VAR_SOURCE(opline->op2)->opcode == ZEND_QM_ASSIGN &&
                        ZEND_OP1_TYPE(VAR_SOURCE(opline->op2)) == IS_CONST) {
@@ -880,10 +878,10 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        opline->opcode == ZEND_JMPNZ_EX ||
                        opline->opcode == ZEND_JMPNZ ||
                        opline->opcode == ZEND_JMPZNZ) &&
-                       ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
+                       (ZEND_OP1_TYPE(opline) & (IS_TMP_VAR|IS_VAR)) &&
                        VAR_SOURCE(opline->op1) != NULL &&
                        (!used_ext[VAR_NUM(ZEND_OP1(opline).var)] ||
-                       (ZEND_RESULT_TYPE(opline) == IS_TMP_VAR &&
+                       ((ZEND_RESULT_TYPE(opline) & (IS_TMP_VAR|IS_VAR)) &&
                         ZEND_RESULT(opline).var == ZEND_OP1(opline).var)) &&
                        (VAR_SOURCE(opline->op1)->opcode == ZEND_BOOL ||
                        VAR_SOURCE(opline->op1)->opcode == ZEND_QM_ASSIGN)) {
@@ -1049,7 +1047,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        opline->opcode = ZEND_QM_ASSIGN;
                        zend_optimizer_update_op1_const(op_array, opline, &result TSRMLS_CC);
                } else if ((opline->opcode == ZEND_RETURN || opline->opcode == ZEND_EXIT) &&
-                                       ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
+                                       (ZEND_OP1_TYPE(opline) & (IS_TMP_VAR|IS_VAR)) &&
                                        VAR_SOURCE(opline->op1) &&
                                        VAR_SOURCE(opline->op1)->opcode == ZEND_QM_ASSIGN) {
                        /* T = QM_ASSIGN(X), RETURN(T) to RETURN(X) */
@@ -1133,8 +1131,7 @@ static void zend_optimize_block(zend_code_block *block, zend_op_array *op_array,
                        opline->opcode = ZEND_CONCAT;
                        MAKE_NOP(src);
                } else if (opline->opcode == ZEND_QM_ASSIGN &&
-                                       ZEND_OP1_TYPE(opline) == IS_TMP_VAR &&
-                                       ZEND_RESULT_TYPE(opline) == IS_TMP_VAR &&
+                                       ZEND_OP1_TYPE(opline) == ZEND_RESULT_TYPE(opline) &&
                                        ZEND_OP1(opline).var == ZEND_RESULT(opline).var) {
                        /* strip T = QM_ASSIGN(T) */
                        MAKE_NOP(opline);
index bea42229f6bd793b771438f7237490d3264e7377..17cc8389909259990b4887c54705340b72e2c690 100644 (file)
@@ -97,7 +97,6 @@ void zend_optimizer_nop_removal(zend_op_array *op_array)
                                case ZEND_FE_RESET:
                                case ZEND_NEW:
                                case ZEND_JMP_SET:
-                               case ZEND_JMP_SET_VAR:
                                        ZEND_OP2(opline).opline_num -= shiftlist[ZEND_OP2(opline).opline_num];
                                        break;
                                case ZEND_JMPZNZ:
index def060c66cb03ecd36a22c9ca884ebb89fb04816..3f3e72dc31c76bc5ee3b3f329a6a20216ead1aea 100644 (file)
@@ -529,7 +529,6 @@ void zend_optimizer_pass1(zend_op_array *op_array, zend_optimizer_ctx *ctx TSRML
                case ZEND_NEW:
                case ZEND_DO_FCALL:
                case ZEND_JMP_SET:
-               case ZEND_JMP_SET_VAR:
                        collect_constants = 0;
                        break;
                case ZEND_FETCH_R:
index 511431bb2cf6373da73ac0a6ec125de52745db6c..345e347a5bf0b3a2caa0221ab186dd6753e2e104 100644 (file)
@@ -182,7 +182,6 @@ void zend_optimizer_pass3(zend_op_array *op_array TSRMLS_DC)
                                break;
 
                        case ZEND_JMP_SET:
-                       case ZEND_JMP_SET_VAR:
                                if (op_array->fn_flags & ZEND_ACC_HAS_FINALLY_BLOCK) {
                                        break;
                                }
index 6d011afc60a8b775fd8e2852e4e848559e3460d5..f31ce38cfec33b4e58e87e789b708256b232f08d 100644 (file)
@@ -467,7 +467,6 @@ static void zend_accel_optimize(zend_op_array      *op_array,
                        case ZEND_JMPZ_EX:
                        case ZEND_JMPNZ_EX:
                        case ZEND_JMP_SET:
-                       case ZEND_JMP_SET_VAR:
                        case ZEND_NEW:
                        case ZEND_FE_RESET:
                        case ZEND_FE_FETCH:
@@ -505,7 +504,6 @@ static void zend_accel_optimize(zend_op_array      *op_array,
                        case ZEND_JMPZ_EX:
                        case ZEND_JMPNZ_EX:
                        case ZEND_JMP_SET:
-                       case ZEND_JMP_SET_VAR:
                        case ZEND_NEW:
                        case ZEND_FE_RESET:
                        case ZEND_FE_FETCH:
index b2b863c5a9835b2aa2fd3ae9c5611d42b9586507..05fbd4fc757df9ca27908dae0d7c7a4a92a0e0c9 100644 (file)
@@ -373,7 +373,6 @@ static void zend_persist_op_array_ex(zend_op_array *op_array, zend_persistent_sc
                                        case ZEND_JMPZ_EX:
                                        case ZEND_JMPNZ_EX:
                                        case ZEND_JMP_SET:
-                                       case ZEND_JMP_SET_VAR:
                                        case ZEND_NEW:
                                        case ZEND_FE_RESET:
                                        case ZEND_FE_FETCH:
index 4e693c4414591639d9094a28009f4a8f8c4a2509..31cf75b11d70e261e69ce2599dc28e518b9cc18c 100644 (file)
@@ -103,9 +103,6 @@ char *phpdbg_decode_opline(zend_op_array *ops, zend_op *op, HashTable *vars TSRM
 
 #ifdef ZEND_JMP_SET
        case ZEND_JMP_SET:
-#endif
-#ifdef ZEND_JMP_SET_VAR
-       case ZEND_JMP_SET_VAR:
 #endif
                decode[1] = phpdbg_decode_op(ops, &op->op1, op->op1_type, vars TSRMLS_CC);
                asprintf(
@@ -333,12 +330,6 @@ const char *phpdbg_decode_opcode(zend_uchar opcode) /* {{{ */
 #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