summaryrefslogtreecommitdiff
path: root/Zend/zend_variables.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-07-04 00:50:57 +0300
committerDmitry Stogov <dmitry@zend.com>2018-07-04 00:50:57 +0300
commit7eb045d31a108323e3878947419cde94e2ba8645 (patch)
treec1225081083fb8231be428bfd1f80fff01da383e /Zend/zend_variables.c
parente080fb6d92b7ed942613388be6f5b4c7e6d74e05 (diff)
downloadphp-git-7eb045d31a108323e3878947419cde94e2ba8645.tar.gz
API cleanup. Removed unused functions (kept compatibility macros).
Diffstat (limited to 'Zend/zend_variables.c')
-rw-r--r--Zend/zend_variables.c100
1 files changed, 19 insertions, 81 deletions
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index 15df748651..32612f6cf0 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -108,65 +108,32 @@ static void ZEND_FASTCALL zend_ast_ref_destroy_wrapper(zend_ast_ref *ast ZEND_FI
}
#endif
-ZEND_API void _zval_internal_dtor(zval *zvalue ZEND_FILE_LINE_DC)
+ZEND_API void _zval_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
{
- switch (Z_TYPE_P(zvalue)) {
- case IS_STRING:
- CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
- zend_string_release_ex(Z_STR_P(zvalue), 1);
- break;
- case IS_ARRAY:
- case IS_CONSTANT_AST:
- case IS_OBJECT:
- case IS_RESOURCE:
- zend_error_noreturn(E_CORE_ERROR, "Internal zval's can't be arrays, objects or resources");
- break;
- case IS_REFERENCE: {
- zend_reference *ref = (zend_reference*)Z_REF_P(zvalue);
-
- zval_internal_ptr_dtor(&ref->val);
- free(ref);
- break;
- }
- case IS_LONG:
- case IS_DOUBLE:
- case IS_FALSE:
- case IS_TRUE:
- case IS_NULL:
- default:
- break;
- }
+ i_zval_ptr_dtor(zval_ptr ZEND_FILE_LINE_RELAY_CC);
}
+/* }}} */
-ZEND_API void _zval_internal_dtor_for_ptr(zval *zvalue ZEND_FILE_LINE_DC)
+ZEND_API void _zval_internal_ptr_dtor(zval *zval_ptr ZEND_FILE_LINE_DC) /* {{{ */
{
- switch (Z_TYPE_P(zvalue)) {
- case IS_STRING:
- CHECK_ZVAL_STRING_REL(Z_STR_P(zvalue));
- zend_string_free(Z_STR_P(zvalue));
- break;
- case IS_ARRAY:
- case IS_CONSTANT_AST:
- case IS_OBJECT:
- case IS_RESOURCE:
- zend_error_noreturn(E_CORE_ERROR, "Internal zval's can't be arrays, objects or resources");
- break;
- case IS_REFERENCE: {
- zend_reference *ref = (zend_reference*)Z_REF_P(zvalue);
-
- zval_internal_ptr_dtor(&ref->val);
- free(ref);
- break;
+ if (Z_REFCOUNTED_P(zval_ptr)) {
+ zend_refcounted *ref = Z_COUNTED_P(zval_ptr);
+
+ if (GC_DELREF(ref) == 0) {
+ if (Z_TYPE_P(zval_ptr) == IS_STRING) {
+ zend_string *str = (zend_string*)ref;
+
+ CHECK_ZVAL_STRING_REL(str);
+ ZEND_ASSERT(!ZSTR_IS_INTERNED(str));
+ ZEND_ASSERT((GC_FLAGS(str) & IS_STR_PERSISTENT));
+ free(str);
+ } else {
+ zend_error_noreturn(E_CORE_ERROR, "Internal zval's can't be arrays, objects, resources or reference");
}
- case IS_LONG:
- case IS_DOUBLE:
- case IS_FALSE:
- case IS_TRUE:
- case IS_NULL:
- default:
- break;
+ }
}
}
+/* }}} */
/* This function should only be used as a copy constructor, i.e. it
* should only be called AFTER a zval has been copied to another
@@ -183,17 +150,6 @@ ZEND_API void zval_add_ref(zval *p)
}
}
-ZEND_API void zval_add_ref_unref(zval *p)
-{
- if (Z_REFCOUNTED_P(p)) {
- if (Z_ISREF_P(p)) {
- ZVAL_COPY(p, Z_REFVAL_P(p));
- } else {
- Z_ADDREF_P(p);
- }
- }
-}
-
ZEND_API void ZEND_FASTCALL _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
{
if (EXPECTED(Z_TYPE_P(zvalue) == IS_ARRAY)) {
@@ -206,25 +162,7 @@ ZEND_API void ZEND_FASTCALL _zval_copy_ctor_func(zval *zvalue ZEND_FILE_LINE_DC)
}
-ZEND_API size_t zend_print_variable(zval *var)
-{
- return zend_print_zval(var, 0);
-}
-
-
-ZEND_API void _zval_dtor_wrapper(zval *zvalue)
-{
- zval_dtor(zvalue);
-}
-
-
#if ZEND_DEBUG
-ZEND_API void _zval_internal_dtor_wrapper(zval *zvalue)
-{
- zval_internal_dtor(zvalue);
-}
-
-
ZEND_API void _zval_ptr_dtor_wrapper(zval *zval_ptr)
{