diff options
-rw-r--r-- | Zend/zend.h | 7 | ||||
-rw-r--r-- | Zend/zend_API.c | 4 | ||||
-rw-r--r-- | Zend/zend_execute.c | 14 | ||||
-rw-r--r-- | Zend/zend_operators.h | 4 | ||||
-rw-r--r-- | Zend/zend_vm_def.h | 14 | ||||
-rw-r--r-- | Zend/zend_vm_execute.h | 140 |
6 files changed, 17 insertions, 166 deletions
diff --git a/Zend/zend.h b/Zend/zend.h index 46bc2ff39c..28c31a3987 100644 --- a/Zend/zend.h +++ b/Zend/zend.h @@ -722,13 +722,10 @@ END_EXTERN_C() if (Z_ISREF_P(_zv)) { \ Z_DELREF_P(_zv); \ ZVAL_DUP(_zv, Z_REFVAL_P(_zv)); \ - } else if (Z_TYPE_P(_zv) == IS_OBJECT ||\ - Z_TYPE_P(_zv) == IS_RESOURCE) { \ - /*Z_ADDREF_P(_zv);*/ \ - } else { \ + } else if (Z_TYPE_P(_zv) != IS_OBJECT &&\ + Z_TYPE_P(_zv) != IS_RESOURCE) { \ Z_DELREF_P(_zv); \ zval_copy_ctor(_zv); \ - Z_SET_REFCOUNT_P(_zv, 1); \ } \ } \ } \ diff --git a/Zend/zend_API.c b/Zend/zend_API.c index d3f48ea8bc..63bcab7368 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -480,7 +480,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons case IS_DOUBLE: case IS_BOOL: convert_to_string_ex(arg); - if (UNEXPECTED(Z_ISREF_P(arg) != 0)) { + if (UNEXPECTED(Z_ISREF_P(arg))) { /* it's dangerous to return pointers to string buffer of referenced variable, because it can be clobbered throug magic callbacks */ @@ -525,7 +525,7 @@ static const char *zend_parse_arg_impl(int arg_num, zval *arg, va_list *va, cons case IS_DOUBLE: case IS_BOOL: convert_to_string_ex(arg); - if (UNEXPECTED(Z_ISREF_P(arg) != 0)) { + if (UNEXPECTED(Z_ISREF_P(arg))) { /* it's dangerous to return pointers to string buffer of referenced variable, because it can be clobbered throug magic callbacks */ diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 92f298e39f..666676ae09 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -71,22 +71,22 @@ static zend_always_inline void zend_pzval_unlock_func(zval *z, zend_free_op *sho if (!Z_DELREF_P(z)) { Z_SET_REFCOUNT_P(z, 1); //??? Z_UNSET_ISREF_P(z); - if (Z_ISREF_P(z)) { +//??? if (Z_ISREF_P(z)) { //??? zend_reference *ref = Z_REF_P(z); //??? ZVAL_COPY_VALUE(z, &ref->val); //??? efree(ref); - } +//??? } should_free->var = z; /* should_free->is_var = 1; */ - } else { - if (unref && Z_ISREF_P(z) && Z_REFCOUNT_P(z) == 1) { +//??? } else { +//??? if (unref && Z_ISREF_P(z) && Z_REFCOUNT_P(z) == 1) { //??? Z_UNSET_ISREF_P(z); - if (Z_ISREF_P(z)) { +//??? if (Z_ISREF_P(z)) { //??? zend_reference *ref = Z_REF_P(z); //??? ZVAL_COPY_VALUE(z, &ref->val); //??? efree(ref); - } - } +//??? } +//??? } } } } diff --git a/Zend/zend_operators.h b/Zend/zend_operators.h index a6640075fd..052abf364c 100644 --- a/Zend/zend_operators.h +++ b/Zend/zend_operators.h @@ -430,9 +430,7 @@ END_EXTERN_C() #define convert_scalar_to_number_ex(pzv) \ if (Z_TYPE_P(pzv)!=IS_LONG && Z_TYPE_P(pzv)!=IS_DOUBLE) { \ - if (!Z_ISREF_P(pzv)) { \ - SEPARATE_ZVAL(pzv); \ - } \ + SEPARATE_ZVAL_IF_NOT_REF(pzv); \ convert_scalar_to_number(pzv TSRMLS_CC); \ } diff --git a/Zend/zend_vm_def.h b/Zend/zend_vm_def.h index 6025342e21..f0d30d7e49 100644 --- a/Zend/zend_vm_def.h +++ b/Zend/zend_vm_def.h @@ -2464,13 +2464,6 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV) object = GET_OP1_OBJ_ZVAL_PTR_DEREF(BP_VAR_R); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -2759,12 +2752,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV) if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { ZVAL_UNDEF(&call->object); } else { -//??? - if (!Z_ISREF(call->object)) { - Z_ADDREF(call->object); /* For $this pointer */ - } else { - ZVAL_DUP(&call->object, Z_REFVAL(call->object)); - } + Z_ADDREF(call->object); /* For $this pointer */ } } diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 021b9244ad..85cf30504f 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -1540,12 +1540,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { ZVAL_UNDEF(&call->object); } else { -//??? - if (!Z_ISREF(call->object)) { - Z_ADDREF(call->object); /* For $this pointer */ - } else { - ZVAL_DUP(&call->object, Z_REFVAL(call->object)); - } + Z_ADDREF(call->object); /* For $this pointer */ } } @@ -1883,12 +1878,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_H if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { ZVAL_UNDEF(&call->object); } else { -//??? - if (!Z_ISREF(call->object)) { - Z_ADDREF(call->object); /* For $this pointer */ - } else { - ZVAL_DUP(&call->object, Z_REFVAL(call->object)); - } + Z_ADDREF(call->object); /* For $this pointer */ } } @@ -2077,12 +2067,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_H if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { ZVAL_UNDEF(&call->object); } else { -//??? - if (!Z_ISREF(call->object)) { - Z_ADDREF(call->object); /* For $this pointer */ - } else { - ZVAL_DUP(&call->object, Z_REFVAL(call->object)); - } + Z_ADDREF(call->object); /* For $this pointer */ } } @@ -2308,12 +2293,7 @@ static int ZEND_FASTCALL ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HA if ((call->fbc->common.fn_flags & ZEND_ACC_STATIC) != 0) { ZVAL_UNDEF(&call->object); } else { -//??? - if (!Z_ISREF(call->object)) { - Z_ADDREF(call->object); /* For $this pointer */ - } else { - ZVAL_DUP(&call->object, Z_REFVAL(call->object)); - } + Z_ADDREF(call->object); /* For $this pointer */ } } @@ -8928,13 +8908,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCO object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -9733,13 +9706,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -10572,13 +10538,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -11935,13 +11894,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_ object = _get_zval_ptr_tmp(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -15154,13 +15106,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCO object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -17446,13 +17391,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -19739,13 +19677,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -23120,13 +23051,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_ object = _get_zval_ptr_var_deref(opline->op1.var, execute_data, &free_op1 TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -24699,13 +24623,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_O object = _get_obj_zval_ptr_unused(TSRMLS_C); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -26088,13 +26005,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPC object = _get_obj_zval_ptr_unused(TSRMLS_C); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -27385,13 +27295,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPC object = _get_obj_zval_ptr_unused(TSRMLS_C); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -29082,13 +28985,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCO object = _get_obj_zval_ptr_unused(TSRMLS_C); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -32319,13 +32215,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCOD object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -34393,13 +34282,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_ object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -36560,13 +36442,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_ object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { @@ -39681,13 +39556,6 @@ static int ZEND_FASTCALL ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_H object = _get_zval_ptr_cv_deref_BP_VAR_R(execute_data, opline->op1.var TSRMLS_CC); ZVAL_COPY_VALUE(&call->object, object); -/*??? - if (Z_ISREF_P(object)) { - ZVAL_COPY_VALUE(&call->object, Z_REFVAL_P(object)); - } else { - ZVAL_COPY_VALUE(&call->object, object); - } -*/ if (EXPECTED(Z_TYPE(call->object) != IS_UNDEF) && EXPECTED(Z_TYPE(call->object) == IS_OBJECT)) { |