diff options
author | Dmitry Stogov <dmitry@zend.com> | 2014-07-02 22:01:25 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2014-07-02 22:01:25 +0400 |
commit | 412ad4b25417d261c0a8c43f788d5c110593d891 (patch) | |
tree | 43a257a7d074bf976c02d0d35da80fde24f54705 /Zend/zend_generators.c | |
parent | 0b1cfdf390632a0bf0b27516399b09813500c299 (diff) | |
download | php-git-412ad4b25417d261c0a8c43f788d5c110593d891.tar.gz |
Uinified call frame handling for user and internal functions.
Now EG(current_execute_data) always point to the call frame of the currently executed function.
Diffstat (limited to 'Zend/zend_generators.c')
-rw-r--r-- | Zend/zend_generators.c | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/Zend/zend_generators.c b/Zend/zend_generators.c index f4847b0839..a487e2016a 100644 --- a/Zend/zend_generators.c +++ b/Zend/zend_generators.c @@ -321,7 +321,6 @@ ZEND_API void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ zend_class_entry *original_scope = EG(scope); zend_class_entry *original_called_scope = EG(called_scope); zend_vm_stack original_stack = EG(argument_stack); - zend_execute_data *prev_execute_data; original_This = Z_OBJ(EG(This)); @@ -339,17 +338,10 @@ ZEND_API void zend_generator_resume(zend_generator *generator TSRMLS_DC) /* {{{ * called from whatever method we are current running (e.g. next()). * So we have to link generator call frame with caller call frames */ - prev_execute_data = original_execute_data; - if (prev_execute_data && - prev_execute_data->call && - (prev_execute_data->call->flags & ZEND_CALL_DONE)) { - prev_execute_data->call->prev_execute_data = prev_execute_data; - prev_execute_data = prev_execute_data->call; - } - generator->execute_data->prev_execute_data = prev_execute_data; - if (prev_execute_data) { - generator->execute_data->prev_nested_call = prev_execute_data->call; - prev_execute_data->call = generator->execute_data; + generator->execute_data->prev_execute_data = original_execute_data; + if (original_execute_data) { + generator->execute_data->prev_nested_call = original_execute_data->call; + original_execute_data->call = generator->execute_data; } /* Resume execution */ |