summaryrefslogtreecommitdiff
path: root/Zend/zend_generators.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-04-16 12:16:03 +0300
committerDmitry Stogov <dmitry@zend.com>2015-04-16 12:16:03 +0300
commita759967dd1c09f8553bd5dedc82673fec15acb80 (patch)
treea9472d95840a65954cde301e94936763216fd50e /Zend/zend_generators.c
parentec8671d4291939ce8f49c731bf4d0730a2ed1c8e (diff)
downloadphp-git-a759967dd1c09f8553bd5dedc82673fec15acb80.tar.gz
Mark call frames to closures with ZEND_CALL_CLOSURE flag to avoid expensive check at zend_leave_helper()
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r--Zend/zend_generators.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c
index 98603200bf..7d2472a145 100644
--- a/Zend/zend_generators.c
+++ b/Zend/zend_generators.c
@@ -103,7 +103,6 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished
if (generator->execute_data) {
zend_execute_data *execute_data = generator->execute_data;
- zend_op_array *op_array = &execute_data->func->op_array;
if (!execute_data->symbol_table) {
zend_free_compiled_variables(execute_data);
@@ -131,8 +130,8 @@ ZEND_API void zend_generator_close(zend_generator *generator, zend_bool finished
}
/* Free closure object */
- if (op_array->fn_flags & ZEND_ACC_CLOSURE) {
- OBJ_RELEASE((zend_object *) op_array->prototype);
+ if (EX_CALL_INFO() & ZEND_CALL_CLOSURE) {
+ OBJ_RELEASE((zend_object *) EX(func)->common.prototype);
}
efree(generator->stack);