summaryrefslogtreecommitdiff
path: root/Zend/zend_vm_execute.skl
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2008-06-11 13:18:41 +0000
committerDmitry Stogov <dmitry@php.net>2008-06-11 13:18:41 +0000
commit76a9a42ee2826b5b26512162b2baea7346a6cc65 (patch)
tree75ae704638ded24c7f051a84b01eefb705c32661 /Zend/zend_vm_execute.skl
parentbc29a3874dea2ec138486566b7c89de910163a9f (diff)
downloadphp-git-76a9a42ee2826b5b26512162b2baea7346a6cc65.tar.gz
- Removed direct executor recursion.
- Use fastcall calling convention in executor on x86.
Diffstat (limited to 'Zend/zend_vm_execute.skl')
-rw-r--r--Zend/zend_vm_execute.skl9
1 files changed, 7 insertions, 2 deletions
diff --git a/Zend/zend_vm_execute.skl b/Zend/zend_vm_execute.skl
index b6e8d84d29..52592dac21 100644
--- a/Zend/zend_vm_execute.skl
+++ b/Zend/zend_vm_execute.skl
@@ -3,6 +3,8 @@
ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
{
zend_execute_data *execute_data;
+ zend_bool nested = 0;
+ zend_bool original_in_execution = EG(in_execution);
{%HELPER_VARS%}
{%INTERNAL_LABELS%}
@@ -11,6 +13,9 @@ ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
return;
}
+ EG(in_execution) = 1;
+
+zend_vm_enter:
/* Initialize execute_data */
execute_data = (zend_execute_data *)zend_vm_stack_alloc(
sizeof(zend_execute_data) +
@@ -25,12 +30,12 @@ ZEND_API void {%EXECUTOR_NAME%}(zend_op_array *op_array TSRMLS_DC)
EX(object) = NULL;
EX(old_error_reporting) = NULL;
EX(op_array) = op_array;
- EX(original_in_execution) = EG(in_execution);
EX(symbol_table) = EG(active_symbol_table);
EX(prev_execute_data) = EG(current_execute_data);
EG(current_execute_data) = execute_data;
+ EX(nested) = nested;
+ nested = 1;
- EG(in_execution) = 1;
if (op_array->start_op) {
ZEND_VM_SET_OPCODE(op_array->start_op);
} else {