summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_execute.h
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r--Zend/zend_vm_execute.h90
1 files changed, 72 insertions, 18 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h
index 97e08b75f9..dcf0f071f7 100644
--- a/Zend/zend_vm_execute.h
+++ b/Zend/zend_vm_execute.h
@@ -6105,8 +6105,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_CONST_HAN
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -7034,8 +7040,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_VAR_HANDL
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -7894,8 +7906,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CONST_UNUSED_HA
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -32128,8 +32146,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_CONST_HANDLE
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -33412,8 +33436,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_VAR_HANDLER(
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -34642,8 +34672,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_CV_UNUSED_HANDL
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -41847,8 +41883,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_CONST_HA
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -42432,8 +42474,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_VAR_HAND
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);
@@ -42834,8 +42882,14 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_UNSET_VAR_SPEC_TMPVAR_UNUSED_H
ZVAL_UNDEF(var);
zval_dtor_func_for_ptr(garbage);
} else {
- GC_ZVAL_CHECK_POSSIBLE_ROOT(var);
- ZVAL_UNDEF(var);
+ zval *z = var;
+ ZVAL_DEREF(z);
+ if (Z_COLLECTABLE_P(z) && UNEXPECTED(!Z_GC_INFO_P(z))) {
+ ZVAL_UNDEF(var);
+ gc_possible_root(Z_COUNTED_P(z));
+ } else {
+ ZVAL_UNDEF(var);
+ }
}
} else {
ZVAL_UNDEF(var);