]> granicus.if.org Git - php/commitdiff
Get rid of ZEND_FAST_CALL_UNBOUND
authorDmitry Stogov <dmitry@zend.com>
Tue, 4 Aug 2015 05:35:40 +0000 (08:35 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 4 Aug 2015 05:35:40 +0000 (08:35 +0300)
Zend/zend_compile.c
Zend/zend_compile.h
Zend/zend_opcode.c

index 6deea135d6bfb9a066cafae4fe0510891cbcb1e9..8fd71d0aafee65b440fbbf1efc6528db13458ec5 100644 (file)
@@ -3477,7 +3477,6 @@ static int zend_handle_loops_and_finally_ex(zend_long depth) /* {{{ */
                        SET_UNUSED(opline->op1);
                        SET_UNUSED(opline->op2);
                        opline->op1.num = loop_var->u.try_catch_offset;
-                       opline->extended_value = ZEND_FAST_CALL_UNBOUND;
                } else if (loop_var->opcode == ZEND_RETURN) {
                        /* Stack separator */
                        break;
@@ -4126,7 +4125,7 @@ void zend_compile_try(zend_ast *ast) /* {{{ */
                zend_stack_del_top(&CG(loop_var_stack));
 
                opline = zend_emit_op(NULL, ZEND_FAST_CALL, NULL, NULL);
-               opline->op1.opline_num = opnum_jmp + 1;
+               opline->op1.num = try_catch_offset;
                opline->result_type = IS_TMP_VAR;
                opline->result.var = CG(context).fast_call_var;
 
index ae9a2806ff63da485887d0557ea4398add8e825c..2db45e54fe71634f3f3d2ce4357a07359bbd6411 100644 (file)
@@ -946,7 +946,6 @@ static zend_always_inline int zend_check_arg_send_type(const zend_function *zf,
 #define ZEND_FAST_RET_TO_FINALLY       2
 
 #define ZEND_FAST_CALL_FROM_FINALLY    1
-#define ZEND_FAST_CALL_UNBOUND      2
 
 #define ZEND_ARRAY_ELEMENT_REF         (1<<0)
 #define ZEND_ARRAY_NOT_PACKED          (1<<1)
index 237e7cd6f6600622d7f08b21856ca64dd7d2da5e..66ad24e98f5d1a4140b4982b9b5f40aa3642e932 100644 (file)
@@ -523,10 +523,8 @@ static void zend_resolve_fast_call(zend_op_array *op_array, uint32_t op_num)
        if (finally_op_num) {
                /* Must be ZEND_FAST_CALL */
                ZEND_ASSERT(op_array->opcodes[finally_op_num - 2].opcode == ZEND_FAST_CALL);
-               if (op_array->opcodes[op_num].extended_value == 0) {
-                       op_array->opcodes[op_num].extended_value = ZEND_FAST_CALL_FROM_FINALLY;
-                       op_array->opcodes[op_num].op2.opline_num = finally_op_num - 2;
-               }
+               op_array->opcodes[op_num].extended_value = ZEND_FAST_CALL_FROM_FINALLY;
+               op_array->opcodes[op_num].op2.opline_num = finally_op_num - 2;
        }
 }
 
@@ -603,10 +601,7 @@ ZEND_API int pass_two(zend_op_array *op_array)
        while (opline < end) {
                switch (opline->opcode) {
                        case ZEND_FAST_CALL:
-                               if (opline->extended_value == ZEND_FAST_CALL_UNBOUND) {
-                                       opline->op1.opline_num = op_array->try_catch_array[opline->op1.num].finally_op;
-                                       opline->extended_value = 0;
-                               }
+                               opline->op1.opline_num = op_array->try_catch_array[opline->op1.num].finally_op;
                                zend_resolve_fast_call(op_array, opline - op_array->opcodes);
                                ZEND_PASS_TWO_UPDATE_JMP_TARGET(op_array, opline, opline->op1);
                                break;