Changeset 843


Ignore:
Timestamp:
2012-03-25T09:01:16+02:00 (2 years ago)
Author:
moo
Message:

PHP_5_4: handle exclude_from_classes

Location:
trunk/processor
Files:
6 edited
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/processor/hashtable.m4

    r824 r843  
    7878            IFRESTORE(`dst->canary = zend_hash_canary; DONE(canary)', ` 
    7979                dnl else 
    80                 DISPATCH(unsigned int, canary) 
     80                PROCESS(unsigned int, canary) 
    8181            ') 
    8282        ') 
    8383#endif 
    84         DISPATCH(uint, nTableSize) 
    85         DISPATCH(uint, nTableMask) 
    86         DISPATCH(uint, nNumOfElements) 
    87         DISPATCH(ulong, nNextFreeElement) 
     84        PROCESS(uint, nTableSize) 
     85        PROCESS(uint, nTableMask) 
     86        PROCESS(uint, nNumOfElements) 
     87        PROCESS(ulong, nNextFreeElement) 
    8888        IFCOPY(`dst->pInternalPointer = NULL;   /* Used for element traversal */') DONE(pInternalPointer) 
    8989        IFCOPY(`dst->pListHead = NULL;') DONE(pListHead) 
     
    165165        IFCOPY(`dst->pListTail = pnew;') DONE(pListTail) 
    166166        IFCOPY(`dst->pDestructor = src->pDestructor;') DONE(pDestructor) 
    167         DISPATCH(zend_bool, persistent) 
     167        PROCESS(zend_bool, persistent) 
    168168#ifdef IS_UNICODE 
    169         DISPATCH(zend_bool, unicode) 
     169        PROCESS(zend_bool, unicode) 
    170170#endif 
    171         DISPATCH(unsigned char, nApplyCount) 
    172         DISPATCH(zend_bool, bApplyProtection) 
     171        PROCESS(unsigned char, nApplyCount) 
     172        PROCESS(zend_bool, bApplyProtection) 
    173173#if ZEND_DEBUG 
    174         DISPATCH(int, inconsistent) 
     174        PROCESS(int, inconsistent) 
    175175#endif 
    176176        ')dnl IFDASM 
  • trunk/processor/head.m4

    r838 r843  
    3737define(`SIZEOF_xc_entry_name_t', `sizeof(xc_entry_name_t)') 
    3838define(`COUNTOF_xc_entry_name_t', `1') 
     39define(`SIZEOF_xc_ztstring', `sizeof(xc_ztstring)') 
     40define(`COUNTOF_xc_ztstring', `1') 
    3941 
    4042ifdef(`XCACHE_ENABLE_TEST', ` 
     
    5658typedef zval *zval_ptr; 
    5759typedef zval *zval_ptr_nullable; 
     60typedef char *xc_ztstring; 
    5861#ifdef ZEND_ENGINE_2_4 
    5962typedef zend_trait_alias *zend_trait_alias_ptr; 
     
    6164#endif 
    6265 
    63 typedef zend_uchar zval_data_type; 
     66typedef zend_uchar xc_zval_data_type; 
     67typedef int xc_op_type; 
     68typedef zend_uchar xc_opcode; 
    6469#ifdef IS_UNICODE 
    6570typedef UChar zstr_uchar; 
  • trunk/processor/main.m4

    r837 r843  
    2020define(`ZEND_STRS', `($1), (sizeof($1))') 
    2121define(`ZEND_STRL', `($1), (sizeof($1) - 1)') 
     22define(`DST', `dst->$1') 
     23define(`SRC', `src->$1') 
    2224dnl ============ 
    2325define(`INDENT', `xc_dprint_indent(indent);') 
     
    8183    popdef(`SIZE') 
    8284') 
    83 dnl CALLOC(1:dst, 2:type [, 3:count=1 ]) 
    84 define(`CALLOC', `ALLOC(`$1', `$2', `$3', `1')') 
    85 dnl }}} 
    86 dnl {{{ PROC_INT(1:elm, 2:format=%d, 3:type=, 4:spec=) 
    87 define(`PROC_INT', ` 
    88     IFNOTMEMCPY(`IFCOPY(`dst->$1 = src->$1;')') 
    89     IFDPRINT(` 
    90         INDENT() 
    91         ifelse( 
    92             `$3 $1', `zval_data_type type', `fprintf(stderr, "$3:$1:\t%d %s\n", src->$1, xc_get_data_type(src->$1));' 
    93         , `$3 $1', `int op_type', `fprintf(stderr, "$3:$1:\t%d %s\n", src->$1, xc_get_op_type(src->$1));' 
    94         , `$3 $1', `zend_uchar opcode', `fprintf(stderr, "$3:$1:\t%d %s\n", src->$1, xc_get_opcode(src->$1));' 
    95         , `', `', `fprintf(stderr, "$3:$1:\t%ifelse(`$2',`',`d',`$2')\n", src->$1);') 
    96     ') 
    97     IFDASM(` 
    98         ifelse( 
    99             `$3', `zend_bool', `add_assoc_bool_ex(dst, ZEND_STRS("$1"), src->$1 ? 1 : 0);' 
    100         , `', `', `add_assoc_long_ex(dst, ZEND_STRS("$1"), src->$1);' 
    101         ) 
    102     ') 
    103     DONE(`$1') 
    104 ') 
     85dnl CALLOC(1:dst, 2:type [, 3:count=1, 4:forcetype=$2 ]) 
     86define(`CALLOC', `ALLOC(`$1', `$2', `$3', `1', `$4')') 
    10587dnl }}} 
    10688dnl {{{ PROC_CLASS_ENTRY_P(1:elm) 
    107 define(`PROC_CLASS_ENTRY_P', `PROC_CLASS_ENTRY_P_EX(`dst->$1', `src->$1', `$1')`'DONE(`$1')') 
     89define(`PROC_CLASS_ENTRY_P', `PROC_CLASS_ENTRY_P_EX(`dst->$1', `SRC(`$1')', `$1')`'DONE(`$1')') 
    10890dnl PROC_CLASS_ENTRY_P_EX(1:dst, 2:src, 3:elm-name) 
    10991define(`PROC_CLASS_ENTRY_P_EX', ` 
     
    151133dnl }}} 
    152134dnl {{{ COPY 
    153 define(`COPY', `IFNOTMEMCPY(`IFCOPY(`dst->$1 = src->$1;')')DONE(`$1')') 
     135define(`COPY', `IFNOTMEMCPY(`IFCOPY(`dst->$1 = SRC(`$1');')')DONE(`$1')') 
    154136dnl }}} 
    155137dnl {{{ COPY_N_EX 
    156138define(`COPY_N_EX', ` 
    157     ALLOC(`dst->$3', `$2', `src->$1') 
     139    ALLOC(`dst->$3', `$2', `SRC(`$1')') 
    158140    IFCOPY(` 
    159         memcpy(dst->$3, src->$3, sizeof(dst->$3[0]) * src->$1); 
     141        memcpy(dst->$3, SRC(`$3'), sizeof(dst->$3[0]) * SRC(`$1')); 
    160142        ') 
    161143') 
     
    168150dnl }}} 
    169151dnl {{{ COPYARRAY_EX 
    170 define(`COPYARRAY_EX', `IFNOTMEMCPY(`IFCOPY(`memcpy(dst->$1, src->$1, sizeof(dst->$1));')')') 
     152define(`COPYARRAY_EX', `IFNOTMEMCPY(`IFCOPY(`memcpy(dst->$1, SRC(`$1'), sizeof(dst->$1));')')') 
    171153dnl }}} 
    172154dnl {{{ COPYARRAY 
     
    226208        } 
    227209    ') 
    228     DONE_SIZE(`sizeof(src->$1)') 
     210    DONE_SIZE(`sizeof(SRC(`$1'))') 
    229211') 
    230212define(`DISABLECHECK', ` 
     
    261243include(srcdir`/processor/string.m4') 
    262244include(srcdir`/processor/struct.m4') 
    263 include(srcdir`/processor/dispatch.m4') 
     245include(srcdir`/processor/process.m4') 
    264246include(srcdir`/processor/head.m4') 
    265247 
  • trunk/processor/process.m4

    r840 r843  
    1 dnl DISPATCH(1:type, 2:elm) 
    2 define(`DISPATCH', ` 
     1define(`PROCESS_SCALAR', `dnl {{{ (1:elm, 2:format=%d, 3:type=) 
     2    IFNOTMEMCPY(`IFCOPY(`DST(`$1') = SRC(`$1');')') 
     3    IFDPRINT(` 
     4        INDENT() 
     5        fprintf(stderr, "$3:$1:\t%ifelse(`$2',`',`d',`$2')\n", SRC(`$1')); 
     6    ') 
     7    IFDASM(` 
     8        ifelse( 
     9            `$3', `zend_bool', `add_assoc_bool_ex(dst, ZEND_STRS("$1"), SRC(`$1') ? 1 : 0);' 
     10        , `', `', `add_assoc_long_ex(dst, ZEND_STRS("$1"), SRC(`$1'));' 
     11        ) 
     12    ') 
     13    DONE(`$1') 
     14') 
     15dnl }}} 
     16define(`PROCESS_xc_ztstring', `dnl {{{ (1:elm) 
     17    PROC_STRING(`$1') 
     18') 
     19dnl }}} 
     20define(`PROCESS_zval_data_type', `dnl {{{ (1:elm) 
     21    IFDPRINT(` 
     22        INDENT() 
     23        fprintf(stderr, ":$1:\t%d %s\n", SRC(`$1'), xc_get_data_type(SRC(`$1'))); 
     24        DONE(`$1') 
     25    ', `PROCESS_SCALAR(`$1')') 
     26') 
     27dnl }}} 
     28define(`PROCESS_op_type', `dnl {{{ (1:elm) 
     29    IFDPRINT(` 
     30        INDENT() 
     31        fprintf(stderr, ":$1:\t%d %s\n", SRC(`$1'), xc_get_op_type(SRC(`$1'))); 
     32        DONE(`$1') 
     33    ', `PROCESS_SCALAR(`$1')') 
     34') 
     35dnl }}} 
     36define(`PROCESS_opcode', `dnl {{{ (1:elm) 
     37    IFDPRINT(` 
     38        INDENT() 
     39        fprintf(stderr, ":$1:\t%u %s\n", SRC(`$1'), xc_get_opcode(SRC(`$1'))); 
     40        DONE(`$1') 
     41    ', `PROCESS_SCALAR(`$1')') 
     42') 
     43dnl }}} 
     44define(`PROCESS', `dnl PROCESS(1:type, 2:elm) 
    345    DBG(`$0($*)') 
    4     assert(sizeof($1) == sizeof(src->$2)); 
     46    assert(sizeof($1) == sizeof(SRC(`$2'))); 
    547    ifelse( 
    6         `$1', `zend_bool',        `PROC_INT(`$2', `u',  `$1')' 
    7     , `$1', `zend_uchar',       `PROC_INT(`$2', `u',  `$1')' 
    8     , `$1', `char',             `PROC_INT(`$2', `d',  `$1')' 
    9     , `$1', `int32_t',          `PROC_INT(`$2', `d',  `$1')' 
    10     , `$1', `unsigned char',    `PROC_INT(`$2', `u',  `$1')' 
    11     , `$1', `zend_uint',        `PROC_INT(`$2', `u',  `$1')' 
    12     , `$1', `uint',             `PROC_INT(`$2', `u',  `$1')' 
    13     , `$1', `unsigned int',     `PROC_INT(`$2', `u',  `$1')' 
    14     , `$1', `zend_ulong',       `PROC_INT(`$2', `lu', `$1')' 
    15     , `$1', `ulong',            `PROC_INT(`$2', `lu', `$1')' 
    16     , `$1', `size_t',           `PROC_INT(`$2', `u', `$1')' 
    17     , `$1', `long',             `PROC_INT(`$2', `ld', `$1')' 
    18     , `$1', `time_t',           `PROC_INT(`$2', `ld', `$1')' 
    19     , `$1', `zend_ushort',      `PROC_INT(`$2', `hu', `$1')' 
    20     , `$1', `int',              `PROC_INT(`$2', `d',  `$1')' 
    21     , `$1', `double',           `PROC_INT(`$2', `f',  `$1')' 
    22     , `$1', `opcode_handler_t', `/* is copying enough? */COPY(`$2')' 
    23     , `$1', `zval_data_type',   `PROC_INT(`$2', `u',  `$1')' 
    24     , `$1', `xc_entry_type_t',  `PROC_INT(`$2', `d',  `$1')' 
    25     , `$1', `xc_hash_value_t',  `PROC_INT(`$2', `lu', `$1')' 
    26     , `$1', `xc_md5sum_t',      `COPY(`$2')' 
    27     , `', `', `m4_errprint(`Unknown type "$1"')' 
     48        `$1', `zend_bool',        `PROCESS_SCALAR(`$2', `u',  `$1')' 
     49    , `$1', `zend_uchar',       `PROCESS_SCALAR(`$2', `u',  `$1')' 
     50    , `$1', `char',             `PROCESS_SCALAR(`$2', `d',  `$1')' 
     51    , `$1', `int32_t',          `PROCESS_SCALAR(`$2', `d',  `$1')' 
     52    , `$1', `unsigned char',    `PROCESS_SCALAR(`$2', `u',  `$1')' 
     53    , `$1', `zend_uint',        `PROCESS_SCALAR(`$2', `u',  `$1')' 
     54    , `$1', `uint',             `PROCESS_SCALAR(`$2', `u',  `$1')' 
     55    , `$1', `unsigned int',     `PROCESS_SCALAR(`$2', `u',  `$1')' 
     56    , `$1', `zend_ulong',       `PROCESS_SCALAR(`$2', `lu', `$1')' 
     57    , `$1', `ulong',            `PROCESS_SCALAR(`$2', `lu', `$1')' 
     58    , `$1', `size_t',           `PROCESS_SCALAR(`$2', `u', `$1')' 
     59    , `$1', `long',             `PROCESS_SCALAR(`$2', `ld', `$1')' 
     60    , `$1', `time_t',           `PROCESS_SCALAR(`$2', `ld', `$1')' 
     61    , `$1', `zend_ushort',      `PROCESS_SCALAR(`$2', `hu', `$1')' 
     62    , `$1', `int',              `PROCESS_SCALAR(`$2', `d',  `$1')' 
     63    , `$1', `double',           `PROCESS_SCALAR(`$2', `f',  `$1')' 
     64    , `$1', `xc_entry_type_t',  `PROCESS_SCALAR(`$2', `d',  `$1')' 
     65    , `$1', `xc_hash_value_t',  `PROCESS_SCALAR(`$2', `lu', `$1')' 
     66 
     67    , `$1', `xc_ztstring',       `PROCESS_xc_ztstring(`$2')' 
     68    , `$1', `xc_zval_data_type', `PROCESS_zval_data_type(`$2')' 
     69    , `$1', `xc_op_type',        `PROCESS_op_type(`$2')' 
     70    , `$1', `xc_opcode',         `PROCESS_opcode(`$2')' 
     71    , `$1', `opcode_handler_t',  `/* is copying enough? */COPY(`$2')' 
     72    , `$1', `xc_md5sum_t',       `COPY(`$2')' 
     73    , `', `', `m4_errprint(`AUTOCHECK ERROR: Unknown type "$1"')define(`EXIT_PENDING', 1)' 
    2874    ) 
    2975') 
    30 dnl {{{ DISPATCH_ARRAY(1:count, 2:type, 3:elm) 
    31 define(`DISPATCH_ARRAY', ` 
     76define(`PROCESS_ARRAY', `dnl {{{ (1:count, 2:type, 3:elm, [4:force_type]) 
    3277    if (src->$3) { 
    33         int i; 
     78        int LOOPCOUNTER; 
    3479        IFDASM(` 
    3580            zval *arr; 
    3681            ALLOC_INIT_ZVAL(arr); 
    3782            array_init(arr); 
    38             for (i = 0; i < src->$1; i ++) { 
    39                 ifelse( 
    40                     `$2', `zend_bool', `add_assoc_bool_ex(arr, ZEND_STRS("$3"), src->$3[i] ? 1 : 0);' 
    41                 , `', `', `add_next_index_long(arr, src->$3[i]);') 
     83 
     84            for (LOOPCOUNTER = 0; 
     85                    ifelse(`$1', `', `src->$3[LOOPCOUNTER]', 
     86                    `', `', `LOOPCOUNTER < SRC(`$1')'); 
     87                    ++LOOPCOUNTER) { 
     88                pushdef(`dst', `arr') 
     89                pushdef(`SRC', defn(`SRC') `[LOOPCOUNTER]') 
     90                popdef(`add_assoc_bool_ex', `add_next_index_bool($1, $3)') 
     91                popdef(`add_assoc_string_ex', `add_next_index_string($1, $3)') 
     92                popdef(`add_assoc_long_ex', `add_next_index_long($1, $3)') 
     93                popdef(`add_assoc_zval_ex', `add_next_index_zval($1, $3)') 
     94                DISABLECHECK(` 
     95                    PROCESS(`$2', `$3') 
     96                ') 
     97                popdef(`add_assoc_zval_ex') 
     98                popdef(`add_assoc_long_ex') 
     99                popdef(`add_assoc_string_ex') 
     100                popdef(`add_assoc_bool_ex') 
     101                popdef(`SRC') 
     102                popdef(`dst') 
     103 
     104                ++LOOPCOUNTER; 
    42105            } 
    43106            add_assoc_zval_ex(dst, ZEND_STRS("$3"), arr); 
    44107        ', ` 
    45             COPY_N_EX($@) 
    46             for (i = 0; i < src->$1; i ++) { 
     108            dnl find count with NULL 
     109            ifelse(`$1', `', ` 
     110                size_t count = 0; 
     111                while (SRC(`$3[count]')) { 
     112                    ++count; 
     113                } 
     114                ++count; 
     115                pushdef(`STRUCT_COUNT', `count') 
     116            ', 
     117            `', `', `pushdef(`STRUCT_COUNT', `SRC(`$1')')') 
     118            ALLOC(`dst->$3', `$2', `STRUCT_COUNT', , `$4') 
     119            popdef(`STRUCT_COUNT') 
     120 
     121            for (LOOPCOUNTER = 0; 
     122                    ifelse(`$1', `', `src->$3[LOOPCOUNTER]', 
     123                    `', `', `LOOPCOUNTER < SRC(`$1')'); 
     124                    ++LOOPCOUNTER) { 
    47125                DISABLECHECK(` 
    48                     DISPATCH(`$2', `$3[i]', `$4') 
     126                    pushdef(`DST', defn(`DST') `[LOOPCOUNTER]') 
     127                    pushdef(`SRC', ((const char **) defn(`SRC'))`[LOOPCOUNTER]') 
     128                    PROCESS(`$2', `$3') 
     129                    popdef(`SRC') 
     130                    popdef(`DST') 
    49131                ') 
    50132            } 
     133            dnl the end marker 
     134            ifelse(`$1', `', `IFCOPY(`DST(`$3[LOOPCOUNTER]') = NULL;')') 
    51135        ')dnl IFDASM 
    52136        DONE(`$3') 
  • trunk/processor/processor.m4

    r841 r843  
    1818#ifdef IS_CV 
    1919DEF_STRUCT_P_FUNC(`zend_compiled_variable', , `dnl {{{ 
    20     DISPATCH(int, name_len) 
     20    PROCESS(int, name_len) 
    2121    PROC_ZSTRING_L(, name, name_len) 
    22     DISPATCH(ulong, hash_value) 
     22    PROCESS(ulong, hash_value) 
    2323') 
    2424dnl }}} 
     
    4646#ifdef ZEND_ENGINE_2 
    4747DEF_STRUCT_P_FUNC(`zend_try_catch_element', , `dnl {{{ 
    48     DISPATCH(zend_uint, try_op) 
    49     DISPATCH(zend_uint, catch_op) 
     48    PROCESS(zend_uint, try_op) 
     49    PROCESS(zend_uint, catch_op) 
    5050') 
    5151dnl }}} 
     
    5353DEF_STRUCT_P_FUNC(`zend_brk_cont_element', , `dnl {{{ 
    5454#ifdef ZEND_ENGINE_2_2 
    55     DISPATCH(int, start) 
    56 #endif 
    57     DISPATCH(int, cont) 
    58     DISPATCH(int, brk) 
    59     DISPATCH(int, parent) 
     55    PROCESS(int, start) 
     56#endif 
     57    PROCESS(int, cont) 
     58    PROCESS(int, brk) 
     59    PROCESS(int, parent) 
    6060') 
    6161dnl }}} 
     
    9191            case IS_RESOURCE: 
    9292            case IS_BOOL: 
    93                 DISPATCH(long, value.lval) 
     93                PROCESS(long, value.lval) 
    9494                break; 
    9595            case IS_DOUBLE: 
    96                 DISPATCH(double, value.dval) 
     96                PROCESS(double, value.dval) 
    9797                break; 
    9898            case IS_NULL: 
     
    110110            case FLAG_IS_BC: 
    111111#endif 
    112                 DISPATCH(int, value.str.len) 
     112                PROCESS(int, value.str.len) 
    113113                PROC_STRING_L(value.str.val, value.str.len) 
    114114                break; 
     
    116116            case IS_UNICODE: 
    117117proc_unicode: 
    118                 DISPATCH(int32_t, value.uni.len) 
     118                PROCESS(int32_t, value.uni.len) 
    119119                PROC_ZSTRING_L(1, value.uni.val, value.uni.len) 
    120120                break; 
     
    141141dnl }}} 
    142142        DONE(value) 
    143         DISPATCH(zval_data_type, type) 
     143        PROCESS(xc_zval_data_type, type) 
    144144#ifdef ZEND_ENGINE_2_3 
    145         DISPATCH(zend_uchar, is_ref__gc) 
    146 #else 
    147         DISPATCH(zend_uchar, is_ref) 
     145        PROCESS(zend_uchar, is_ref__gc) 
     146#else 
     147        PROCESS(zend_uchar, is_ref) 
    148148#endif 
    149149 
    150150#ifdef ZEND_ENGINE_2_3 
    151         DISPATCH(zend_uint, refcount__gc) 
     151        PROCESS(zend_uint, refcount__gc) 
    152152#elif defined(ZEND_ENGINE_2) 
    153         DISPATCH(zend_uint, refcount) 
    154 #else 
    155         DISPATCH(zend_ushort, refcount) 
     153        PROCESS(zend_uint, refcount) 
     154#else 
     155        PROCESS(zend_ushort, refcount) 
    156156#endif 
    157157    ')dnl IFDASM 
     
    224224#ifdef ZEND_ENGINE_2 
    225225DEF_STRUCT_P_FUNC(`zend_arg_info', , `dnl {{{ 
    226     DISPATCH(zend_uint, name_len) 
     226    PROCESS(zend_uint, name_len) 
    227227    PROC_ZSTRING_L(, name, name_len) 
    228     DISPATCH(zend_uint, class_name_len) 
     228    PROCESS(zend_uint, class_name_len) 
    229229    PROC_ZSTRING_L(, class_name, class_name_len) 
    230230#ifdef ZEND_ENGINE_2_4 
    231     DISPATCH(zend_uchar, type_hint) 
    232 #else 
    233     DISPATCH(zend_bool, array_type_hint) 
    234 #endif 
    235     DISPATCH(zend_bool, allow_null) 
    236     DISPATCH(zend_bool, pass_by_reference) 
     231    PROCESS(zend_uchar, type_hint) 
     232#else 
     233    PROCESS(zend_bool, array_type_hint) 
     234#endif 
     235    PROCESS(zend_bool, allow_null) 
     236    PROCESS(zend_bool, pass_by_reference) 
    237237#ifndef ZEND_ENGINE_2_4 
    238     DISPATCH(zend_bool, return_reference) 
    239     DISPATCH(int, required_num_args) 
     238    PROCESS(zend_bool, return_reference) 
     239    PROCESS(int, required_num_args) 
    240240#endif 
    241241') 
     
    245245DEF_STRUCT_P_FUNC(`zend_constant', , `dnl {{{ 
    246246    STRUCT(zval, value) 
    247     DISPATCH(int, flags) 
    248     DISPATCH(uint, name_len) 
     247    PROCESS(int, flags) 
     248    PROCESS(uint, name_len) 
    249249    pushdef(`estrndup', `zend_strndup') 
    250250    PROC_ZSTRING_N(, name, name_len) 
    251251    popdef(`estrndup') 
    252     DISPATCH(int, module_number) 
     252    PROCESS(int, module_number) 
    253253') 
    254254dnl }}} 
     
    277277#ifdef ZEND_ENGINE_2 
    278278DEF_STRUCT_P_FUNC(`zend_property_info', , `dnl {{{ 
    279     DISPATCH(zend_uint, flags) 
    280     DISPATCH(int, name_length) 
     279    PROCESS(zend_uint, flags) 
     280    PROCESS(int, name_length) 
    281281    PROC_ZSTRING_L(, name, name_length) 
    282     DISPATCH(ulong, h) 
    283 #ifdef ZEND_ENGINE_2_4 
    284     DISPATCH(int, offset) 
     282    PROCESS(ulong, h) 
     283#ifdef ZEND_ENGINE_2_4 
     284    PROCESS(int, offset) 
    285285#endif 
    286286#ifdef ZEND_ENGINE_2_1 
    287     DISPATCH(int, doc_comment_len) 
     287    PROCESS(int, doc_comment_len) 
    288288    PROC_ZSTRING_L(, doc_comment, doc_comment_len) 
    289289#endif 
     
    297297#ifdef ZEND_ENGINE_2_4 
    298298DEF_STRUCT_P_FUNC(`zend_trait_method_reference', , `dnl {{{ 
    299     DISPATCH(unsigned int, mname_len) 
     299    PROCESS(unsigned int, mname_len) 
    300300    PROC_STRING_L(method_name, mname_len) 
    301301    COPYNULL(ce) 
    302     DISPATCH(unsigned int, cname_len) 
     302    PROCESS(unsigned int, cname_len) 
    303303    PROC_STRING_L(class_name, cname_len) 
    304304') 
     
    306306DEF_STRUCT_P_FUNC(`zend_trait_alias', , `dnl {{{ 
    307307    STRUCT_P(zend_trait_method_reference, trait_method) 
    308     DISPATCH(unsigned int, alias_len) 
     308    PROCESS(unsigned int, alias_len) 
    309309    PROC_STRING_L(alias, alias_len) 
    310     DISPATCH(zend_uint, modifiers) 
     310    PROCESS(zend_uint, modifiers) 
    311311    COPYNULL(function) 
    312312') 
     
    314314DEF_STRUCT_P_FUNC(`zend_trait_precedence', , `dnl {{{ 
    315315    STRUCT_P(zend_trait_method_reference, trait_method) 
    316     dnl TODO 
    317     STRUCT_ARRAY(, xc_class_name_t, exclude_from_classes) 
     316    PROCESS_ARRAY(, xc_ztstring, exclude_from_classes, zend_class_entry*) 
    318317    COPYNULL(function) 
    319318') 
     
    351350        IFCOPY(`processor->active_class_entry_dst = dst;') 
    352351    ') 
    353     DISPATCH(char, type) 
    354     DISPATCH(zend_uint, name_length) 
     352    PROCESS(char, type) 
     353    PROCESS(zend_uint, name_length) 
    355354    PROC_ZSTRING_L(, name, name_length) 
    356355    IFRESTORE(` 
     
    365364    ') 
    366365#ifdef ZEND_ENGINE_2 
    367     DISPATCH(int, refcount) 
     366    PROCESS(int, refcount) 
    368367#else 
    369368    STRUCT_P(int, refcount) 
    370369#endif 
    371370#ifndef ZEND_ENGINE_2_4 
    372     DISPATCH(zend_bool, constants_updated) 
    373 #endif 
    374 #ifdef ZEND_ENGINE_2 
    375     DISPATCH(zend_uint, ce_flags) 
     371    PROCESS(zend_bool, constants_updated) 
     372#endif 
     373#ifdef ZEND_ENGINE_2 
     374    PROCESS(zend_uint, ce_flags) 
    376375#endif 
    377376 
     
    382381#ifdef ZEND_ENGINE_2_4 
    383382    STRUCT_ARRAY(default_properties_count, zval_ptr_nullable, default_properties_table) 
    384     DISPATCH(int, default_properties_count) 
     383    PROCESS(int, default_properties_count) 
    385384    STRUCT_ARRAY(default_static_members_count, zval_ptr_nullable, default_static_members_table) 
    386     DISPATCH(int, default_static_members_count) 
     385    PROCESS(int, default_static_members_count) 
    387386    IFCOPY(`dst->static_members_table = dst->default_static_members_table;') 
    388387    DONE(static_members_table) 
     
    425424        DONE(`interfaces') 
    426425    ') 
    427     DISPATCH(zend_uint, num_interfaces) 
     426    PROCESS(zend_uint, num_interfaces) 
    428427#endif 
    429428    STRUCT_ARRAY(, zend_trait_alias_ptr, trait_aliases) 
     
    433432    DISABLECHECK(` 
    434433    IFRESTORE(`dst->info.user.filename = processor->entry_src->filepath;', `PROC_STRING(info.user.filename)') 
    435     DISPATCH(zend_uint, info.user.line_start) 
    436     DISPATCH(zend_uint, info.user.line_end) 
    437     DISPATCH(zend_uint, info.user.doc_comment_len) 
     434    PROCESS(zend_uint, info.user.line_start) 
     435    PROCESS(zend_uint, info.user.line_end) 
     436    PROCESS(zend_uint, info.user.doc_comment_len) 
    438437    PROC_ZSTRING_L(, info.user.doc_comment, info.user.doc_comment_len) 
    439438    ') 
     
    441440#   else 
    442441    IFRESTORE(`dst->filename = processor->entry_src->filepath;DONE(filename)', `PROC_STRING(filename)') 
    443     DISPATCH(zend_uint, line_start) 
    444     DISPATCH(zend_uint, line_end) 
     442    PROCESS(zend_uint, line_start) 
     443    PROCESS(zend_uint, line_end) 
    445444#       ifdef ZEND_ENGINE_2_1 
    446     DISPATCH(zend_uint, doc_comment_len) 
     445    PROCESS(zend_uint, doc_comment_len) 
    447446    PROC_ZSTRING_L(, doc_comment, doc_comment_len) 
    448447#       endif 
     
    519518        case IS_CONST: 
    520519            ifelse($1, `result', ` 
    521                 DISPATCH(zend_uint, $1.constant) 
     520                PROCESS(zend_uint, $1.constant) 
    522521            ', ` 
    523522                IFDASM(`{ 
     
    532531                        dst->$1 = src->$1; 
    533532                    ', ` 
    534                         DISPATCH(zend_uint, $1.constant) 
     533                        PROCESS(zend_uint, $1.constant) 
    535534                    ') 
    536535                ') 
     
    546545        case IS_TMP_VAR: 
    547546        case IS_CV: 
    548             DISPATCH(zend_uint, $1.var) 
     547            PROCESS(zend_uint, $1.var) 
    549548            break; 
    550549        case IS_UNUSED: 
    551             IFDASM(`DISPATCH(zend_uint, $1.var)') 
    552             DISPATCH(zend_uint, $1.opline_num) 
     550            IFDASM(`PROCESS(zend_uint, $1.var)') 
     551            PROCESS(zend_uint, $1.opline_num) 
    553552            break; 
    554553        ') 
     
    560559#else 
    561560DEF_STRUCT_P_FUNC(`znode', , `dnl {{{ 
    562     DISPATCH(int, op_type) 
     561    PROCESS(xc_op_type, op_type) 
    563562 
    564563#ifdef IS_CV 
     
    588587        case IS_TMP_VAR: 
    589588        case XCACHE_IS_CV: 
    590             DISPATCH(zend_uint, u.var) 
    591             DISPATCH(zend_uint, u.EA.type) 
     589            PROCESS(zend_uint, u.var) 
     590            PROCESS(zend_uint, u.EA.type) 
    592591            break; 
    593592        case IS_UNUSED: 
    594             IFDASM(`DISPATCH(zend_uint, u.var)') 
    595             DISPATCH(zend_uint, u.opline_num) 
     593            IFDASM(`PROCESS(zend_uint, u.var)') 
     594            PROCESS(zend_uint, u.opline_num) 
    596595#ifndef ZEND_ENGINE_2 
    597             DISPATCH(zend_uint, u.fetch_type) 
    598 #endif 
    599             DISPATCH(zend_uint, u.EA.type) 
     596            PROCESS(zend_uint, u.fetch_type) 
     597#endif 
     598            PROCESS(zend_uint, u.EA.type) 
    600599            break; 
    601600        ') 
     
    611610#endif 
    612611DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{ 
    613     DISPATCH(zend_uchar, opcode) 
     612    PROCESS(xc_opcode, opcode) 
    614613#ifdef ZEND_ENGINE_2_4 
    615614    IFRESTORE(`', ` 
     
    628627    STRUCT(znode, op2) 
    629628#endif 
    630     DISPATCH(ulong, extended_value) 
    631     DISPATCH(uint, lineno) 
     629    PROCESS(ulong, extended_value) 
     630    PROCESS(uint, lineno) 
    632631#ifdef ZEND_ENGINE_2_1 
    633632#ifdef ZEND_ENGINE_2_4 
    634     DISPATCH(zend_uchar, op1_type) 
    635     DISPATCH(zend_uchar, op2_type) 
    636     DISPATCH(zend_uchar, result_type) 
     633    PROCESS(zend_uchar, op1_type) 
     634    PROCESS(zend_uchar, op2_type) 
     635    PROCESS(zend_uchar, result_type) 
    637636#endif 
    638637    IFCOPY(` 
     
    674673        } 
    675674    ') 
    676     DISPATCH(opcode_handler_t, handler) 
     675    PROCESS(opcode_handler_t, handler) 
    677676#endif 
    678677') 
     
    681680DEF_STRUCT_P_FUNC(`zend_literal', , `dnl {{{ 
    682681    STRUCT(zval, constant) 
    683     DISPATCH(zend_ulong, hash_value) 
    684     DISPATCH(zend_uint,  cache_slot) 
     682    PROCESS(zend_ulong, hash_value) 
     683    PROCESS(zend_uint,  cache_slot) 
    685684') 
    686685dnl }}} 
     
    777776 
    778777    /* Common elements */ 
    779     DISPATCH(zend_uchar, type) 
     778    PROCESS(zend_uchar, type) 
    780779    PROC_ZSTRING(, function_name) 
    781780#ifdef ZEND_ENGINE_2 
    782     DISPATCH(zend_uint, fn_flags) 
     781    PROCESS(zend_uint, fn_flags) 
    783782    STRUCT_ARRAY(num_args, zend_arg_info, arg_info) 
    784     DISPATCH(zend_uint, num_args) 
    785     DISPATCH(zend_uint, required_num_args) 
     783    PROCESS(zend_uint, num_args) 
     784    PROCESS(zend_uint, required_num_args) 
    786785#   ifndef ZEND_ENGINE_2_4 
    787     DISPATCH(zend_bool, pass_rest_by_reference) 
     786    PROCESS(zend_bool, pass_rest_by_reference) 
    788787#   endif 
    789788#else 
     
    808807#endif 
    809808#ifndef ZEND_ENGINE_2_4 
    810     DISPATCH(unsigned char, return_reference) 
     809    PROCESS(unsigned char, return_reference) 
    811810#endif 
    812811    /* END of common elements */ 
     
    822821    dnl before copying opcodes 
    823822    STRUCT_ARRAY(last_literal, zend_literal, literals) 
    824     DISPATCH(int, last_literal) 
     823    PROCESS(int, last_literal) 
    825824#endif 
    826825 
     
    835834    STRUCT_ARRAY(last, zend_op, opcodes) 
    836835    popdef(`AFTER_ALLOC') 
    837     DISPATCH(zend_uint, last) 
     836    PROCESS(zend_uint, last) 
    838837#ifndef ZEND_ENGINE_2_4 
    839     IFCOPY(`dst->size = src->last;DONE(size)', `DISPATCH(zend_uint, size)') 
     838    IFCOPY(`dst->size = src->last;DONE(size)', `PROCESS(zend_uint, size)') 
    840839#endif 
    841840 
    842841#ifdef IS_CV 
    843842    STRUCT_ARRAY(last_var, zend_compiled_variable, vars) 
    844     DISPATCH(int, last_var) 
     843    PROCESS(int, last_var) 
    845844#   ifndef ZEND_ENGINE_2_4 
    846     IFCOPY(`dst->size_var = src->last_var;DONE(size_var)', `DISPATCH(zend_uint, size_var)') 
     845    IFCOPY(`dst->size_var = src->last_var;DONE(size_var)', `PROCESS(zend_uint, size_var)') 
    847846#   endif 
    848847#else 
     
    853852#endif 
    854853 
    855     DISPATCH(zend_uint, T) 
     854    PROCESS(zend_uint, T) 
    856855 
    857856    STRUCT_ARRAY(last_brk_cont, zend_brk_cont_element, brk_cont_array) 
    858     DISPATCH(zend_uint, last_brk_cont) 
     857    PROCESS(zend_uint, last_brk_cont) 
    859858#ifndef ZEND_ENGINE_2_4 
    860     DISPATCH(zend_uint, current_brk_cont) 
     859    PROCESS(zend_uint, current_brk_cont) 
    861860#endif 
    862861#ifndef ZEND_ENGINE_2 
    863     DISPATCH(zend_bool, uses_globals) 
     862    PROCESS(zend_bool, uses_globals) 
    864863#endif 
    865864 
    866865#ifdef ZEND_ENGINE_2 
    867866    STRUCT_ARRAY(last_try_catch, zend_try_catch_element, try_catch_array) 
    868     DISPATCH(int, last_try_catch) 
     867    PROCESS(int, last_try_catch) 
    869868#endif 
    870869 
     
    873872#ifndef ZEND_ENGINE_2_4 
    874873    COPY(start_op) 
    875     DISPATCH(int, backpatch_count) 
     874    PROCESS(int, backpatch_count) 
    876875#endif 
    877876#ifdef ZEND_ENGINE_2_3 
    878     DISPATCH(zend_uint, this_var) 
     877    PROCESS(zend_uint, this_var) 
    879878#endif 
    880879 
    881880#ifndef ZEND_ENGINE_2_4 
    882     DISPATCH(zend_bool, done_pass_two) 
     881    PROCESS(zend_bool, done_pass_two) 
    883882#endif 
    884883    /* 5.0 <= ver < 5.3 */ 
    885884#if defined(ZEND_ENGINE_2) && !defined(ZEND_ENGINE_2_3) 
    886     DISPATCH(zend_bool, uses_this) 
     885    PROCESS(zend_bool, uses_this) 
    887886#endif 
    888887 
     
    896895#endif 
    897896#ifdef ZEND_ENGINE_2 
    898     DISPATCH(zend_uint, line_start) 
    899     DISPATCH(zend_uint, line_end) 
    900     DISPATCH(int, doc_comment_len) 
     897    PROCESS(zend_uint, line_start) 
     898    PROCESS(zend_uint, line_end) 
     899    PROCESS(int, doc_comment_len) 
    901900    PROC_ZSTRING_L(, doc_comment, doc_comment_len) 
    902901#endif 
    903902#ifdef ZEND_COMPILE_DELAYED_BINDING 
    904     DISPATCH(zend_uint, early_binding); 
     903    PROCESS(zend_uint, early_binding); 
    905904#endif 
    906905 
     
    908907    DONE(reserved) 
    909908#if defined(HARDENING_PATCH) && HARDENING_PATCH 
    910     DISPATCH(zend_bool, created_by_eval) 
     909    PROCESS(zend_bool, created_by_eval) 
    911910#endif 
    912911#ifdef ZEND_ENGINE_2_4 
    913912    SETNULL(run_time_cache) 
    914     DISPATCH(int, last_cache_slot) 
     913    PROCESS(int, last_cache_slot) 
    915914#endif 
    916915    } while (0); 
     
    967966#ifdef HAVE_XCACHE_CONSTANT 
    968967DEF_STRUCT_P_FUNC(`xc_constinfo_t', , `dnl {{{ 
    969     DISPATCH(zend_uint, key_size) 
     968    PROCESS(zend_uint, key_size) 
    970969#ifdef IS_UNICODE 
    971     DISPATCH(zend_uchar, type) 
     970    PROCESS(zend_uchar, type) 
    972971#endif 
    973972    IFRESTORE(`COPY(key)', ` 
    974973        PROC_ZSTRING_N(type, key, key_size) 
    975974    ') 
    976     DISPATCH(ulong, h) 
     975    PROCESS(ulong, h) 
    977976    STRUCT(zend_constant, constant) 
    978977') 
     
    980979#endif 
    981980DEF_STRUCT_P_FUNC(`xc_op_array_info_detail_t', , `dnl {{{ 
    982     DISPATCH(zend_uint, index) 
    983     DISPATCH(zend_uint, info) 
     981    PROCESS(zend_uint, index) 
     982    PROCESS(zend_uint, info) 
    984983') 
    985984dnl }}} 
    986985DEF_STRUCT_P_FUNC(`xc_op_array_info_t', , `dnl {{{ 
    987986#ifdef ZEND_ENGINE_2_4 
    988     DISPATCH(zend_uint, literalinfo_cnt) 
     987    PROCESS(zend_uint, literalinfo_cnt) 
    989988    STRUCT_ARRAY(literalinfo_cnt, xc_op_array_info_detail_t, literalinfos) 
    990989#else 
    991     DISPATCH(zend_uint, oplineinfo_cnt) 
     990    PROCESS(zend_uint, oplineinfo_cnt) 
    992991    STRUCT_ARRAY(oplineinfo_cnt, xc_op_array_info_detail_t, oplineinfos) 
    993992#endif 
     
    995994dnl }}} 
    996995DEF_STRUCT_P_FUNC(`xc_funcinfo_t', , `dnl {{{ 
    997     DISPATCH(zend_uint, key_size) 
     996    PROCESS(zend_uint, key_size) 
    998997#ifdef IS_UNICODE 
    999     DISPATCH(zend_uchar, type) 
     998    PROCESS(zend_uchar, type) 
    1000999#endif 
    10011000    IFRESTORE(`COPY(key)', ` 
    10021001        PROC_ZSTRING_N(type, key, key_size) 
    10031002    ') 
    1004     DISPATCH(ulong, h) 
     1003    PROCESS(ulong, h) 
    10051004    IFRESTORE(`COPY(op_array_info)', ` 
    10061005        STRUCT(xc_op_array_info_t, op_array_info) 
     
    10141013dnl }}} 
    10151014DEF_STRUCT_P_FUNC(`xc_classinfo_t', , `dnl {{{ 
    1016     DISPATCH(zend_uint, key_size) 
     1015    PROCESS(zend_uint, key_size) 
    10171016#ifdef IS_UNICODE 
    1018     DISPATCH(zend_uchar, type) 
     1017    PROCESS(zend_uchar, type) 
    10191018#endif 
    10201019    IFRESTORE(`COPY(key)', ` 
    10211020        PROC_ZSTRING_N(type, key, key_size) 
    10221021    ') 
    1023     DISPATCH(ulong, h) 
    1024     DISPATCH(zend_uint, methodinfo_cnt) 
     1022    PROCESS(ulong, h) 
     1023    PROCESS(zend_uint, methodinfo_cnt) 
    10251024    IFRESTORE(`COPY(methodinfos)', ` 
    10261025        STRUCT_ARRAY(methodinfo_cnt, xc_op_array_info_t, methodinfos) 
     
    10361035#endif 
    10371036#ifndef ZEND_COMPILE_DELAYED_BINDING 
    1038     DISPATCH(int, oplineno) 
     1037    PROCESS(int, oplineno) 
    10391038#endif 
    10401039') 
     
    10421041#ifdef ZEND_ENGINE_2_1 
    10431042DEF_STRUCT_P_FUNC(`xc_autoglobal_t', , `dnl {{{ 
    1044     DISPATCH(zend_uint, key_len) 
     1043    PROCESS(zend_uint, key_len) 
    10451044#ifdef IS_UNICODE 
    1046     DISPATCH(zend_uchar, type) 
     1045    PROCESS(zend_uchar, type) 
    10471046#endif 
    10481047    IFRESTORE(`COPY(key)', ` 
    10491048        PROC_ZSTRING_L(type, key, key_len) 
    10501049    ') 
    1051     DISPATCH(ulong, h) 
     1050    PROCESS(ulong, h) 
    10521051') 
    10531052dnl }}} 
     
    10551054#ifdef E_STRICT 
    10561055DEF_STRUCT_P_FUNC(`xc_compilererror_t', , `dnl {{{ 
    1057     DISPATCH(int, type) 
    1058     DISPATCH(uint, lineno) 
    1059     DISPATCH(int, error_len) 
     1056    PROCESS(int, type) 
     1057    PROCESS(uint, lineno) 
     1058    PROCESS(int, error_len) 
    10601059    PROC_STRING_L(error, error_len) 
    10611060') 
     
    10681067    ') 
    10691068 
    1070     DISPATCH(xc_hash_value_t, hvalue) 
     1069    PROCESS(xc_hash_value_t, hvalue) 
    10711070    /* skip */ 
    10721071    DONE(next) 
    10731072    COPY(cache) 
    1074     DISPATCH(xc_md5sum_t, md5) 
    1075     DISPATCH(zend_ulong, refcount) 
    1076  
    1077     DISPATCH(size_t, sourcesize) 
    1078     DISPATCH(zend_ulong, hits) 
    1079     DISPATCH(size_t, size) 
     1073    PROCESS(xc_md5sum_t, md5) 
     1074    PROCESS(zend_ulong, refcount) 
     1075 
     1076    PROCESS(size_t, sourcesize) 
     1077    PROCESS(zend_ulong, hits) 
     1078    PROCESS(size_t, size) 
    10801079 
    10811080    IFRESTORE(`COPY(op_array_info)', ` 
     
    10891088 
    10901089#ifdef HAVE_XCACHE_CONSTANT 
    1091     DISPATCH(zend_uint, constinfo_cnt) 
     1090    PROCESS(zend_uint, constinfo_cnt) 
    10921091    STRUCT_ARRAY(constinfo_cnt, xc_constinfo_t, constinfos) 
    10931092#endif 
    10941093 
    1095     DISPATCH(zend_uint, funcinfo_cnt) 
     1094    PROCESS(zend_uint, funcinfo_cnt) 
    10961095    STRUCT_ARRAY(funcinfo_cnt, xc_funcinfo_t, funcinfos) 
    10971096 
    1098     DISPATCH(zend_uint, classinfo_cnt) 
     1097    PROCESS(zend_uint, classinfo_cnt) 
    10991098    STRUCT_ARRAY(classinfo_cnt, xc_classinfo_t, classinfos, , IFRESTORE(`processor->active_class_index')) 
    11001099#ifdef ZEND_ENGINE_2_1 
    1101     DISPATCH(zend_uint, autoglobal_cnt) 
     1100    PROCESS(zend_uint, autoglobal_cnt) 
    11021101    IFRESTORE(` 
    11031102        COPY(autoglobals) 
     
    11071106#endif 
    11081107#ifdef E_STRICT 
    1109     DISPATCH(zend_uint, compilererror_cnt) 
     1108    PROCESS(zend_uint, compilererror_cnt) 
    11101109    IFRESTORE(` 
    11111110        COPY(compilererrors) 
     
    11151114#endif 
    11161115#ifndef ZEND_COMPILE_DELAYED_BINDING 
    1117     DISPATCH(zend_bool, have_early_binding) 
    1118 #endif 
    1119     DISPATCH(zend_bool, have_references) 
     1116    PROCESS(zend_bool, have_early_binding) 
     1117#endif 
     1118    PROCESS(zend_bool, have_references) 
    11201119') 
    11211120dnl }}} 
     
    11231122    IFDPRINT(`INDENT()`'fprintf(stderr, "zval:value");') 
    11241123    STRUCT_P_EX(zval_ptr, dst->value, src->value, `value', `', `&') 
    1125     DISPATCH(zend_bool, have_references) 
     1124    PROCESS(zend_bool, have_references) 
    11261125    DONE(value) 
    11271126') 
    11281127dnl }}} 
    11291128DEF_STRUCT_P_FUNC(`xc_entry_t', , `dnl {{{ 
    1130     DISPATCH(xc_entry_type_t, type) 
    1131     DISPATCH(size_t, size) 
    1132  
    1133     DISPATCH(xc_hash_value_t, hvalue) 
     1129    PROCESS(xc_entry_type_t, type) 
     1130    PROCESS(size_t, size) 
     1131 
     1132    PROCESS(xc_hash_value_t, hvalue) 
    11341133    COPY(cache) 
    11351134    /* skip */ 
    11361135    DONE(next) 
    11371136 
    1138     IFSTORE(`dst->refcount = 0; DONE(refcount)', `DISPATCH(long, refcount)') 
    1139  
    1140     DISPATCH(time_t, ctime) 
    1141     DISPATCH(time_t, atime) 
    1142     DISPATCH(time_t, dtime) 
    1143     DISPATCH(long, ttl) 
    1144     DISPATCH(zend_ulong, hits) 
     1137    IFSTORE(`dst->refcount = 0; DONE(refcount)', `PROCESS(long, refcount)') 
     1138 
     1139    PROCESS(time_t, ctime) 
     1140    PROCESS(time_t, atime) 
     1141    PROCESS(time_t, dtime) 
     1142    PROCESS(long, ttl) 
     1143    PROCESS(zend_ulong, hits) 
    11451144#ifdef IS_UNICODE 
    1146     DISPATCH(zend_uchar, name_type) 
     1145    PROCESS(zend_uchar, name_type) 
    11471146#endif 
    11481147    dnl {{{ name 
     
    11501149#ifdef IS_UNICODE 
    11511150        if (src->name_type == IS_UNICODE) { 
    1152             DISPATCH(int32_t, name.ustr.len) 
     1151            PROCESS(int32_t, name.ustr.len) 
    11531152        } 
    11541153        else { 
    1155             DISPATCH(int, name.str.len) 
     1154            PROCESS(int, name.str.len) 
    11561155        } 
    11571156#else 
    1158         DISPATCH(int, name.str.len) 
     1157        PROCESS(int, name.str.len) 
    11591158#endif 
    11601159        IFRESTORE(`COPY(name.str.val)', ` 
     
    11861185    DONE(data) 
    11871186    dnl }}} 
    1188     DISPATCH(time_t, mtime) 
     1187    PROCESS(time_t, mtime) 
    11891188#ifdef HAVE_INODE 
    1190     DISPATCH(int, device) 
    1191     DISPATCH(int, inode) 
     1189    PROCESS(int, device) 
     1190    PROCESS(int, inode) 
    11921191#endif 
    11931192 
    11941193    if (src->type == XC_TYPE_PHP) { 
    1195         DISPATCH(int, filepath_len) 
     1194        PROCESS(int, filepath_len) 
    11961195        IFRESTORE(`COPY(filepath)', `PROC_STRING_L(filepath, filepath_len)') 
    1197         DISPATCH(int, dirpath_len) 
     1196        PROCESS(int, dirpath_len) 
    11981197        IFRESTORE(`COPY(dirpath)', `PROC_STRING_L(dirpath, dirpath_len)') 
    11991198#ifdef IS_UNICODE 
    1200         DISPATCH(int, ufilepath_len) 
     1199        PROCESS(int, ufilepath_len) 
    12011200        IFRESTORE(`COPY(ufilepath)', `PROC_USTRING_L(ufilepath, ufilepath_len)') 
    1202         DISPATCH(int, udirpath_len) 
     1201        PROCESS(int, udirpath_len) 
    12031202        IFRESTORE(`COPY(udirpath)', `PROC_USTRING_L(udirpath, udirpath_len)') 
    12041203#endif 
  • trunk/processor/string.m4

    r828 r843  
    8787dnl }}} 
    8888dnl PROC_STRING_N(1:name, 2:size, 3:type) 
    89 define(`PROC_STRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `src->$2', `$1', `char')') 
    90 define(`PROC_USTRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `src->$2', `$1', `UChar')') 
     89define(`PROC_STRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `SRC(`$2')', `$1', `char')') 
     90define(`PROC_USTRING_N', `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `SRC(`$2')', `$1', `UChar')') 
    9191 
    9292define(`PROC_STRING_L', `DBG(`$0($*)') PROC_STRING_N(`$1', `$2 + 1')') 
    9393define(`PROC_USTRING_L', `DBG(`$0($*)') PROC_USTRING_N(`$1', `$2 + 1')') 
    94 define(`PROC_STRING',   `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `strlen(src->$1) + 1', `$1', `char')') 
    95 define(`PROC_USTRING',  `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`dst->$1', `src->$1', `strlen(src->$1) + 1', `$1', `UChar')') 
     94define(`PROC_STRING',   `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `strlen(SRC(`$1')) + 1', `$1', `char')') 
     95define(`PROC_USTRING',  `DBG(`$0($*)') DONE(`$1')`'PROC_STRING_N_EX(`DST(`$1')', `SRC(`$1')', `strlen(SRC(`$1')) + 1', `$1', `UChar')') 
    9696 
    9797dnl {{{ PROC_ZSTRING_N(1:type, 2:name, 3:size, 4:size_type) 
     
    100100#ifdef IS_UNICODE 
    101101    pushdef(`NSIZE', ifelse( 
    102             `$4', `strlen', `UNI_STRLEN (src->$2) + 1', 
    103             `$4', `len',    `src->$3 + 1', 
    104             `',   `',       `src->$3', 
     102            `$4', `strlen', `UNI_STRLEN (SRC(`$2')) + 1', 
     103            `$4', `len',    `SRC(`$3') + 1', 
     104            `',   `',       `SRC(`$3')', 
    105105            )) 
    106106    DONE(`$2') 
    107     ifelse(`$1', `1', `PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_uchar') 
     107    ifelse(`$1', `1', `PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', defn(`NSIZE'), `$2', `zstr_uchar') 
    108108    ', ` 
    109         if (ifelse(`$1', `', `UG(unicode)', `src->$1 == IS_UNICODE')) { 
    110             PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_uchar') 
     109        if (ifelse(`$1', `', `UG(unicode)', `SRC(`$1') == IS_UNICODE')) { 
     110            PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', defn(`NSIZE'), `$2', `zstr_uchar') 
    111111        } 
    112112        else { 
    113             PROC_STRING_N_EX(`dst->$2', `src->$2', defn(`NSIZE'), `$2', `zstr_char') 
     113            PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', defn(`NSIZE'), `$2', `zstr_char') 
    114114        } 
    115115    ') 
    116116#else 
    117117    DONE(`$2') 
    118     PROC_STRING_N_EX(`dst->$2', `src->$2', NSIZE, `$2', `zstr_char') 
     118    PROC_STRING_N_EX(`DST(`$2')', `SRC(`$2')', NSIZE, `$2', `zstr_char') 
    119119#endif 
    120120    popdef(`NSIZE') 
  • trunk/processor/struct.m4

    r835 r843  
    128128    DBG(`$0($*)') 
    129129    pushdefFUNC_NAME(`$1', `$5') 
    130     ifdef(`DEFINED_'ifelse(`$5', `', `$1', `$5'), `', `m4_errprint(`Unknown struct "'ifelse(`$5', `', `$1', `$5')`"')') 
     130    ifdef(`DEFINED_'ifelse(`$5', `', `$1', `$5'), `', `m4_errprint(`AUTOCHECK ERROR: Unknown struct "'ifelse(`$5', `', `$1', `$5')`"')define(`EXIT_PENDING', 1)') 
    131131    assert(sizeof($1) == sizeof(($6 $3)[0])); 
    132132    ifelse(`$6', `', `ALLOC(`$2', `$1')') 
     
    156156define(`STRUCT_P', ` 
    157157    DBG(`$0($*)') 
    158     if (src->$2) { 
     158    if (SRC(`$2')) { 
    159159        IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2 ");') 
    160         STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$2', `$3') 
     160        STRUCT_P_EX(`$1', `dst->$2', `SRC(`$2')', `$2', `$3') 
    161161    } 
    162162    else { 
     
    170170define(`STRUCT', ` 
    171171    DBG(`$0($*)') 
    172     assert(sizeof($1) == sizeof(src->$2)); 
     172    assert(sizeof($1) == sizeof(SRC(`$2'))); 
    173173    IFDPRINT(`INDENT()`'fprintf(stderr, "$1:$2 ");') 
    174     STRUCT_P_EX(`$1', `dst->$2', `src->$2', `$2', `$3', `&') 
     174    STRUCT_P_EX(`$1', `dst->$2', `SRC(`$2')', `$2', `$3', `&') 
    175175    DONE(`$2') 
    176176') 
     
    178178dnl {{{ STRUCT_ARRAY(1:count, 2:type, 3:elm, 4:name=type, 5:loopcounter) 
    179179define(`STRUCT_ARRAY', ` 
    180     if (src->$3) { 
     180    if (SRC(`$3')) { 
    181181        ifelse( 
    182182            `$5', `', `int i; pushdef(`LOOPCOUNTER', `i')', 
     
    188188            array_init(arr); 
    189189 
    190             LOOPCOUNTER = 0; 
    191             while ( 
    192             ifelse(`$1', `', `src->$3[LOOPCOUNTER]', 
    193             `', `', `LOOPCOUNTER < src->$1') 
    194             ) { 
     190            for (LOOPCOUNTER = 0; 
     191                    ifelse(`$1', `', `SRC(`$3[LOOPCOUNTER]')', 
     192                    `', `', `LOOPCOUNTER < SRC(`$1')'); 
     193                    ++LOOPCOUNTER) { 
    195194                zval *zv; 
    196195 
    197196                ALLOC_INIT_ZVAL(zv); 
    198197                array_init(zv); 
    199                 FUNC_NAME (zv, &(src->$3[LOOPCOUNTER]) TSRMLS_CC); 
     198                FUNC_NAME (zv, &(SRC(`$3[LOOPCOUNTER]')) TSRMLS_CC); 
    200199                add_next_index_zval(arr, zv); 
    201  
    202                 ++LOOPCOUNTER; 
    203200            } 
    204201            add_assoc_zval_ex(dst, ZEND_STRS("$3"), arr); 
     
    206203            dnl find count with NULL 
    207204            ifelse(`$1', `', ` 
    208                 int count; 
    209                 for (count = 0; src->$3[count]; ++count) { 
    210                     /* just count */ 
     205                size_t count = 0; 
     206                while (SRC(`$3[count]')) { 
     207                    ++count; 
    211208                } 
    212209                ++count; 
    213                 pushdef(`STRUCT_COUNT', `count') 
     210                pushdef(`ARRAY_ELEMENT_COUNT', `count') 
    214211            ', 
    215             `', `', `pushdef(`STRUCT_COUNT', `src->$1')') 
    216             ALLOC(`dst->$3', `$2', `STRUCT_COUNT') 
     212            `', `', `pushdef(`ARRAY_ELEMENT_COUNT', `SRC(`$1')')') 
     213            ALLOC(`dst->$3', `$2', `ARRAY_ELEMENT_COUNT') 
     214            popdef(`ARRAY_ELEMENT_COUNT') 
     215 
    217216            ifdef(`AFTER_ALLOC', AFTER_ALLOC) 
    218217 
    219             LOOPCOUNTER = 0; 
    220             while ( 
    221             ifelse(`$1', `', `src->$3[LOOPCOUNTER]', 
    222             `', `', `LOOPCOUNTER < src->$1') 
    223             ) { 
     218            for (LOOPCOUNTER = 0; 
     219                    ifelse(`$1', `', `SRC(`$3[LOOPCOUNTER]')', 
     220                    `', `', `LOOPCOUNTER < SRC(`$1')'); 
     221                    ++LOOPCOUNTER) { 
    224222                DISABLECHECK(` 
    225223                    STRUCT(`$2', `$3[LOOPCOUNTER]', `$4') 
    226224                ') 
    227  
    228                 ++LOOPCOUNTER; 
    229225            } 
    230             dnl tailing NULL 
    231             ifelse(`$1', `', `IFCOPY(`dst->$3[LOOPCOUNTER] = NULL;')') 
    232             popdef(`STRUCT_COUNT') 
     226            dnl the end marker 
     227            ifelse(`$1', `', `IFCOPY(`DST(`$3[LOOPCOUNTER]') = NULL;')') 
    233228        ')dnl IFDASM 
    234229        DONE(`$3') 
Note: See TracChangeset for help on using the changeset viewer.