summaryrefslogtreecommitdiff
path: root/ext/spl/php_spl.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-06-26 23:51:14 +0400
committerDmitry Stogov <dmitry@zend.com>2014-06-26 23:51:14 +0400
commitc69781393cd42db7479d24f39e0f55f1b7f1d355 (patch)
tree833ca756144355abb31cf13d7d4b76f379651bfd /ext/spl/php_spl.c
parent0f9d5baba23209bec2c1881941c3765d43c2b2ce (diff)
downloadphp-git-c69781393cd42db7479d24f39e0f55f1b7f1d355.tar.gz
Refactoring: merge call_frame and end_execute_data into single data structure. Keep only single copy of each argument on VM stack (previously ZE kept two copies of each arguments for user functions)
Diffstat (limited to 'ext/spl/php_spl.c')
-rw-r--r--ext/spl/php_spl.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index 22e2a0c671..5ec20cd563 100644
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -292,6 +292,10 @@ static int spl_autoload(zend_string *class_name, zend_string *lc_name, const cha
}
ZVAL_UNDEF(&result);
+ if (EG(current_execute_data)) {
+ EG(current_execute_data)->call = zend_vm_stack_push_call_frame(
+ (zend_function*)new_op_array, 0, 0, EG(called_scope), Z_OBJ(EG(This)), EG(current_execute_data)->call TSRMLS_CC);
+ }
zend_execute(new_op_array, &result TSRMLS_CC);
destroy_op_array(new_op_array TSRMLS_CC);