]> granicus.if.org Git - php/commitdiff
Reorder zend_op_array fields for better data locality and packing
authorDmitry Stogov <dmitry@zend.com>
Thu, 11 Jan 2018 16:50:27 +0000 (19:50 +0300)
committerDmitry Stogov <dmitry@zend.com>
Thu, 11 Jan 2018 16:50:27 +0000 (19:50 +0300)
Zend/zend_compile.h

index 1b0d0d9d32b1256af0895f9e70fade47e1fb67be..e26faf89eb3bc9ebdd05f2a7eeb4fb5640182293 100644 (file)
@@ -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];
 };