diff options
author | Dmitry Stogov <dmitry@php.net> | 2008-06-11 13:18:41 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2008-06-11 13:18:41 +0000 |
commit | 76a9a42ee2826b5b26512162b2baea7346a6cc65 (patch) | |
tree | 75ae704638ded24c7f051a84b01eefb705c32661 /Zend/zend_vm_execute.skl | |
parent | bc29a3874dea2ec138486566b7c89de910163a9f (diff) | |
download | php-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.skl | 9 |
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 { |