From c1236214febe328e45f687db4e06928659aee9a8 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 13 Mar 2014 22:07:37 +0400 Subject: [PATCH] REFERENCE is always REFCOUNTED --- Zend/zend_vm_def.h | 4 +-- Zend/zend_vm_execute.h | 80 +++++++++++------------------------------- 2 files changed, 21 insertions(+), 63 deletions(-) diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 2868209903..7a157575b9 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -3775,9 +3775,7 @@ ZEND_VM_HANDLER(72, ZEND_ADD_ARRAY_ELEMENT, CONST|TMP|VAR|CV, CONST|TMP|VAR|UNUS zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = GET_OP1_ZVAL_PTR_DEREF(BP_VAR_R); if (IS_OP1_TMP_FREE()) { /* temporary variable */ diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 6b8b7ec4a4..5bd68abc13 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -3998,9 +3998,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CONST_HANDLER(ZEND_O zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = opline->op1.zv; if (0) { /* temporary variable */ @@ -4855,9 +4853,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_TMP_HANDLER(ZEND_OPC zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = opline->op1.zv; if (0) { /* temporary variable */ @@ -5666,9 +5662,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_VAR_HANDLER(ZEND_OPC zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = opline->op1.zv; if (0) { /* temporary variable */ @@ -6343,9 +6337,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_UNUSED_HANDLER(ZEND_ zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = opline->op1.zv; if (0) { /* temporary variable */ @@ -7243,9 +7235,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CONST_CV_HANDLER(ZEND_OPCO zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = opline->op1.zv; if (0) { /* temporary variable */ @@ -9067,9 +9057,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CONST_HANDLER(ZEND_OPC zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (1) { /* temporary variable */ @@ -9901,9 +9889,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_TMP_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (1) { /* temporary variable */ @@ -10722,9 +10708,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_VAR_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (1) { /* temporary variable */ @@ -11288,9 +11272,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_UNUSED_HANDLER(ZEND_OP zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (1) { /* temporary variable */ @@ -12119,9 +12101,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_TMP_CV_HANDLER(ZEND_OPCODE zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (1) { /* temporary variable */ @@ -15544,9 +15524,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CONST_HANDLER(ZEND_OPC zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (0) { /* temporary variable */ @@ -17786,9 +17764,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_TMP_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (0) { /* temporary variable */ @@ -20071,9 +20047,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_VAR_HANDLER(ZEND_OPCOD zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (0) { /* temporary variable */ @@ -21490,9 +21464,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_UNUSED_HANDLER(ZEND_OP zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (0) { /* temporary variable */ @@ -23502,9 +23474,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_VAR_CV_HANDLER(ZEND_OPCODE zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); if (0) { /* temporary variable */ @@ -32668,9 +32638,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CONST_HANDLER(ZEND_OPCO zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (0) { /* temporary variable */ @@ -34785,9 +34753,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_TMP_HANDLER(ZEND_OPCODE zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (0) { /* temporary variable */ @@ -36944,9 +36910,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_VAR_HANDLER(ZEND_OPCODE zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (0) { /* temporary variable */ @@ -38243,9 +38207,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_UNUSED_HANDLER(ZEND_OPC zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (0) { /* temporary variable */ @@ -40115,9 +40077,7 @@ static int ZEND_FASTCALL ZEND_ADD_ARRAY_ELEMENT_SPEC_CV_CV_HANDLER(ZEND_OPCODE_ zend_error_noreturn(E_ERROR, "Cannot create references to/from string offsets"); } SEPARATE_ZVAL_TO_MAKE_IS_REF(expr_ptr); - if (Z_REFCOUNTED_P(expr_ptr)) { - Z_ADDREF_P(expr_ptr); - } + Z_ADDREF_P(expr_ptr); } else { expr_ptr = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); if (0) { /* temporary variable */ -- 2.40.0