summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.h
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-04-18 13:46:36 +0400
committerDmitry Stogov <dmitry@zend.com>2014-04-18 13:46:36 +0400
commitea2e1bb1eb7dd0ca1ce6d731190b2a6b2046a645 (patch)
tree55bd78ce8067146ef4a89f03d631de7b0dc611b8 /Zend/zend_compile.h
parent8a14276701d946f0ade280e67f748cf028273b90 (diff)
downloadphp-git-ea2e1bb1eb7dd0ca1ce6d731190b2a6b2046a645.tar.gz
Optimized zend_leave_helper()
Diffstat (limited to 'Zend/zend_compile.h')
-rw-r--r--Zend/zend_compile.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 0c3f20f354..6681455992 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -366,6 +366,13 @@ typedef struct _call_slot {
zend_bool is_ctor_result_used;
} call_slot;
+typedef enum _vm_frame_kind {
+ VM_FRAME_NESTED_FUNCTION, /* stackless VM call to function */
+ VM_FRAME_NESTED_CODE, /* stackless VM call to include/require/eval */
+ VM_FRAME_TOP_FUNCTION, /* direct VM call to function from external C code */
+ VM_FRAME_TOP_CODE /* direct VM call to "main" code from external C code */
+} vm_frame_kind;
+
struct _zend_execute_data {
struct _zend_op *opline;
void **run_time_cache;
@@ -375,7 +382,7 @@ struct _zend_execute_data {
zend_array *symbol_table;
struct _zend_execute_data *prev_execute_data;
zval old_error_reporting;
- zend_bool nested;
+ vm_frame_kind frame_kind;
zval *return_value;
// TODO: simplify call sequence and remove current_* and call_* ???
zend_class_entry *current_scope;