]> granicus.if.org Git - php/commitdiff
Removed useless reallocations
authorDmitry Stogov <dmitry@zend.com>
Thu, 26 Oct 2017 16:13:53 +0000 (19:13 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 26 Oct 2017 16:13:53 +0000 (19:13 +0300)
Zend/zend_execute.c
Zend/zend_execute_API.c
Zend/zend_object_handlers.c
Zend/zend_operators.c
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 4e841d5a7f65f49ded3b12aecd875e9402e10cca..8f04518d15a86b7f067ef12b662bab3c53bd580a 100644 (file)
@@ -1364,7 +1364,6 @@ static zend_never_inline void zend_pre_incdec_overloaded_property(zval *object,
                        ZVAL_COPY_VALUE(z, value);
                }
                ZVAL_DEREF(z);
-               SEPARATE_ZVAL_NOREF(z);
                if (inc) {
                        increment_function(z);
                } else {
@@ -1412,7 +1411,6 @@ static zend_never_inline void zend_assign_op_overloaded_property(zval *object, z
                }
                zptr = z;
                ZVAL_DEREF(z);
-               SEPARATE_ZVAL_NOREF(z);
                binary_op(z, z, value);
                Z_OBJ_HT(obj)->write_property(&obj, property, z, cache_slot);
                if (UNEXPECTED(result)) {
index e69a84ba6b9442ad513b4cebac29ec70c1336863..7792325af8b4432996133079cfb210db14f01008 100644 (file)
@@ -589,7 +589,7 @@ ZEND_API int zval_update_constant_ex(zval *p, zend_class_entry *scope) /* {{{ */
                                return zend_use_undefined_constant(name, ast->attr, p);
                        }
                        zval_ptr_dtor_nogc(p);
-                       ZVAL_DUP(p, zv);
+                       ZVAL_COPY(p, zv);
                } else {
                        zval tmp;
 
index 389e1c6b80ee61e4036e5dadacd0b7307420fe1b..27177a80fca283746a300edb511a548ca71f299c 100644 (file)
@@ -650,7 +650,7 @@ zval *zend_std_read_property(zval *object, zval *member, int type, void **cache_
                                retval = rv;
                                if (!Z_ISREF_P(rv) &&
                                    (type == BP_VAR_W || type == BP_VAR_RW  || type == BP_VAR_UNSET)) {
-                                       SEPARATE_ZVAL(rv);
+                                       SEPARATE_ZVAL_NOREF(rv);
                                        if (UNEXPECTED(Z_TYPE_P(rv) != IS_OBJECT)) {
                                                zend_error(E_NOTICE, "Indirect modification of overloaded property %s::$%s has no effect", ZSTR_VAL(zobj->ce->name), Z_STRVAL_P(member));
                                        }
index 1449405b43483c1d18083316f21bb449a10e4e32..076c170f36c006b5bdb13f00366509117e3aba0f 100644 (file)
@@ -923,6 +923,8 @@ ZEND_API int ZEND_FASTCALL add_function(zval *result, zval *op1, zval *op2) /* {
                                }
                                if (result != op1) {
                                        ZVAL_DUP(result, op1);
+                               } else {
+                                       SEPARATE_ARRAY(result);
                                }
                                zend_hash_merge(Z_ARRVAL_P(result), Z_ARRVAL_P(op2), zval_add_ref, 0);
                                return SUCCESS;
index 3f1c94a9420fdc1bdeef4746da1881ec70f96cd9..9bed9f86bb0248c863b15726a87531f763427f22 100644 (file)
@@ -830,7 +830,6 @@ ZEND_VM_HELPER(zend_binary_assign_op_obj_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV,
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -881,7 +880,6 @@ ZEND_VM_C_LABEL(assign_dim_op_new_array):
                                ZEND_VM_C_GOTO(assign_dim_op_ret_null);
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -956,7 +954,6 @@ ZEND_VM_HELPER(zend_binary_assign_op_simple_helper, VAR|CV, CONST|TMPVAR|CV, bin
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -1097,7 +1094,6 @@ ZEND_VM_HELPER(zend_pre_incdec_property_helper, VAR|UNUSED|CV, CONST|TMPVAR|CV,
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -1231,7 +1227,6 @@ ZEND_VM_HANDLER(34, ZEND_PRE_INC, VAR|CV, ANY, SPEC(RETVAL))
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        increment_function(var_ptr);
 
@@ -1271,7 +1266,6 @@ ZEND_VM_HANDLER(35, ZEND_PRE_DEC, VAR|CV, ANY, SPEC(RETVAL))
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        decrement_function(var_ptr);
 
index 5d6b1424bffed569d2f0a7bea0ba28e0786f2572..e04ddeb2f1d450e6b5c76305ccf5727bb6edb5d1 100644 (file)
@@ -15931,7 +15931,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_UNUSED
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        increment_function(var_ptr);
 
@@ -15971,7 +15970,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_VAR_RETVAL_USED_H
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        increment_function(var_ptr);
 
@@ -16011,7 +16009,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_RETVAL_UNUSED
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        decrement_function(var_ptr);
 
@@ -16051,7 +16048,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_VAR_RETVAL_USED_H
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        decrement_function(var_ptr);
 
@@ -17773,7 +17769,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -17824,7 +17819,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -17898,7 +17892,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -18198,7 +18191,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -20863,7 +20855,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -22117,7 +22108,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -22168,7 +22158,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -22242,7 +22231,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -22542,7 +22530,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -24738,7 +24725,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -24789,7 +24775,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -24864,7 +24849,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -25165,7 +25149,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -27190,7 +27173,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -27336,7 +27318,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -29848,7 +29829,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -29994,7 +29974,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -31606,7 +31585,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -31752,7 +31730,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -33264,7 +33241,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RETVAL_UNUSED_
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        increment_function(var_ptr);
 
@@ -33303,7 +33279,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_INC_SPEC_CV_RETVAL_USED_HA
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        increment_function(var_ptr);
 
@@ -33342,7 +33317,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RETVAL_UNUSED_
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        decrement_function(var_ptr);
 
@@ -33381,7 +33355,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_PRE_DEC_SPEC_CV_RETVAL_USED_HA
                var_ptr = GET_OP1_UNDEF_CV(var_ptr, BP_VAR_RW);
        }
        ZVAL_DEREF(var_ptr);
-       SEPARATE_ZVAL_NOREF(var_ptr);
 
        decrement_function(var_ptr);
 
@@ -35694,7 +35667,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -35745,7 +35717,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -35819,7 +35790,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -36119,7 +36089,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -39942,7 +39911,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -42241,7 +42209,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -42292,7 +42259,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -42366,7 +42332,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -42666,7 +42631,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);
@@ -45954,7 +45918,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_obj_helper_SP
                                }
                        } else {
                                ZVAL_DEREF(zptr);
-                               SEPARATE_ZVAL_NOREF(zptr);
 
                                binary_op(zptr, zptr, value);
                                if (UNEXPECTED(RETURN_VALUE_USED(opline))) {
@@ -46005,7 +45968,6 @@ assign_dim_op_new_array:
                                goto assign_dim_op_ret_null;
                        }
                        ZVAL_DEREF(var_ptr);
-                       SEPARATE_ZVAL_NOREF(var_ptr);
                }
 
                value = get_op_data_zval_ptr_r((opline+1)->op1_type, (opline+1)->op1, &free_op_data1);
@@ -46080,7 +46042,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_binary_assign_op_simple_helper
                }
        } else {
                ZVAL_DEREF(var_ptr);
-               SEPARATE_ZVAL_NOREF(var_ptr);
 
                binary_op(var_ptr, var_ptr, value);
 
@@ -46381,7 +46342,6 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL zend_pre_incdec_property_helper_SPE
                                        }
                                } else {
                                        ZVAL_DEREF(zptr);
-                                       SEPARATE_ZVAL_NOREF(zptr);
 
                                        if (inc) {
                                                increment_function(zptr);