From: Dmitry Stogov Date: Wed, 17 Jan 2018 14:56:04 +0000 (+0300) Subject: More effecient array duplication X-Git-Tag: php-7.3.0alpha1~589 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=dd51cb1e346912ff93199407746608571cfdd292;p=php More effecient array duplication --- diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 7079e64920..407194ec87 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -5739,7 +5739,7 @@ ZEND_VM_HANDLER(125, ZEND_FE_RESET_RW, CONST|TMP|VAR|CV, JMP_ADDR) array_ptr = Z_REFVAL_P(array_ref); } if (OP1_TYPE == IS_CONST) { - zval_copy_ctor_func(array_ptr); + ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr))); } else { SEPARATE_ARRAY(array_ptr); } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 5e6b8d7c47..dfa5306514 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -3668,7 +3668,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CONST_HANDLER array_ptr = Z_REFVAL_P(array_ref); } if (IS_CONST == IS_CONST) { - zval_copy_ctor_func(array_ptr); + ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr))); } else { SEPARATE_ARRAY(array_ptr); } @@ -18834,7 +18834,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_TMP_HANDLER(Z array_ptr = Z_REFVAL_P(array_ref); } if (IS_TMP_VAR == IS_CONST) { - zval_copy_ctor_func(array_ptr); + ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr))); } else { SEPARATE_ARRAY(array_ptr); } @@ -22142,7 +22142,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_VAR_HANDLER(Z array_ptr = Z_REFVAL_P(array_ref); } if (IS_VAR == IS_CONST) { - zval_copy_ctor_func(array_ptr); + ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr))); } else { SEPARATE_ARRAY(array_ptr); } @@ -39020,7 +39020,7 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_FE_RESET_RW_SPEC_CV_HANDLER(ZE array_ptr = Z_REFVAL_P(array_ref); } if (IS_CV == IS_CONST) { - zval_copy_ctor_func(array_ptr); + ZVAL_ARR(array_ptr, zend_array_dup(Z_ARRVAL_P(array_ptr))); } else { SEPARATE_ARRAY(array_ptr); }