diff options
author | Dmitry Stogov <dmitry@zend.com> | 2018-07-04 00:50:57 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2018-07-04 00:50:57 +0300 |
commit | 7eb045d31a108323e3878947419cde94e2ba8645 (patch) | |
tree | c1225081083fb8231be428bfd1f80fff01da383e /Zend/zend_variables.c | |
parent | e080fb6d92b7ed942613388be6f5b4c7e6d74e05 (diff) | |
download | php-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.c | 100 |
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) { |