summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2017-11-03 21:02:55 +0300
committerDmitry Stogov <dmitry@zend.com>2017-11-03 21:02:55 +0300
commitd3fa900780994ae812b5314900556a7f1bfb916e (patch)
tree3643d8d47dc9d0106b52816b4fbc969340cb5098
parent7fba7209e1d8409aaea236527125999b8f480785 (diff)
downloadphp-git-d3fa900780994ae812b5314900556a7f1bfb916e.tar.gz
Removed workaraouns for inconsistent zvals (REFCOUNTED+INTERNED). They should be fixed now.
-rw-r--r--Zend/zend_ast.c13
-rw-r--r--Zend/zend_variables.c4
2 files changed, 1 insertions, 16 deletions
diff --git a/Zend/zend_ast.c b/Zend/zend_ast.c
index f4e7c09a83..68db0e023f 100644
--- a/Zend/zend_ast.c
+++ b/Zend/zend_ast.c
@@ -557,24 +557,13 @@ ZEND_API zend_ast_ref *zend_ast_copy(zend_ast *ast)
}
ZEND_API void zend_ast_destroy(zend_ast *ast) {
- zval *zv;
-
if (!ast) {
return;
}
switch (ast->kind) {
case ZEND_AST_ZVAL:
- /* Destroy value without using GC: When opcache moves arrays into SHM it will
- * free the zend_array structure, so references to it from outside the op array
- * become invalid. GC would cause such a reference in the root buffer. */
- zv = zend_ast_get_zval(ast);
- if (Z_TYPE_P(zv) == IS_STRING) {
- /* Compiler may keep REFCOUNTED zvals with INTERNED strings */
- zend_string_release(Z_STR_P(zv));
- } else {
- zval_ptr_dtor_nogc(zv);
- }
+ zval_ptr_dtor_nogc(zend_ast_get_zval(ast));
break;
case ZEND_AST_CONSTANT:
zend_string_release(zend_ast_get_constant_name(ast));
diff --git a/Zend/zend_variables.c b/Zend/zend_variables.c
index 7ff0916e7c..1d3d2a66a7 100644
--- a/Zend/zend_variables.c
+++ b/Zend/zend_variables.c
@@ -34,13 +34,9 @@ ZEND_API void ZEND_FASTCALL _zval_dtor_func(zend_refcounted *p ZEND_FILE_LINE_DC
case IS_STRING: {
zend_string *str = (zend_string*)p;
CHECK_ZVAL_STRING_REL(str);
-#if ZEND_RC_DEBUG
ZEND_ASSERT(!ZSTR_IS_INTERNED(str));
ZEND_ASSERT(GC_REFCOUNT(str) == 0);
pefree(str, GC_FLAGS(str) & IS_STR_PERSISTENT);
-#else
- zend_string_free(str);
-#endif
break;
}
case IS_ARRAY: {