summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2018-01-11 19:50:27 +0300
committerDmitry Stogov <dmitry@zend.com>2018-01-11 19:50:27 +0300
commit70aa967d81666dd7044c1b827530b41b563eda17 (patch)
tree0035611b2b06a0a5ed296cf3cc9f383402c80da4
parentc9034c3b3344287a1a636e43dbcb781bcfbd31af (diff)
downloadphp-git-70aa967d81666dd7044c1b827530b41b563eda17.tar.gz
Reorder zend_op_array fields for better data locality and packing
-rw-r--r--Zend/zend_compile.h19
1 files changed, 8 insertions, 11 deletions
diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h
index 1b0d0d9d32..e26faf89eb 100644
--- a/Zend/zend_compile.h
+++ b/Zend/zend_compile.h
@@ -373,23 +373,23 @@ struct _zend_op_array {
zend_arg_info *arg_info;
/* END of common elements */
- uint32_t *refcount;
+ int cache_size; /* number of run_time_cache_slots * sizeof(void*) */
+ int last_var; /* number of CV variables */
+ uint32_t T; /* numner of temporary variables */
+ uint32_t last; /* number of opcodes */
- uint32_t last;
zend_op *opcodes;
+ void **run_time_cache;
+ HashTable *static_variables;
+ zend_string **vars; /* names of CV variables */
- int last_var;
- uint32_t T;
- zend_string **vars;
+ uint32_t *refcount;
int last_live_range;
int last_try_catch;
zend_live_range *live_range;
zend_try_catch_element *try_catch_array;
- /* static variables support */
- HashTable *static_variables;
-
zend_string *filename;
uint32_t line_start;
uint32_t line_end;
@@ -398,9 +398,6 @@ struct _zend_op_array {
int last_literal;
zval *literals;
- int cache_size;
- void **run_time_cache;
-
void *reserved[ZEND_MAX_RESERVED_RESOURCES];
};