summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Zend/zend.h7
-rw-r--r--Zend/zend_API.c4
-rw-r--r--Zend/zend_execute.c14
-rw-r--r--Zend/zend_operators.h4
-rw-r--r--Zend/zend_vm_def.h14
-rw-r--r--Zend/zend_vm_execute.h140
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)) {