Changeset 1440 in svn for trunk/processor/struct.m4


Ignore:
Timestamp:
2013-11-05T18:17:07+01:00 (20 months ago)
Author:
Xuefer
Message:

adds ptrmove

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/struct.m4

    r1416 r1440  
    1212        IFSTORE(  `xc_processor_t *processor, $1 *dst, const $1 * const src')
    1313        IFRESTORE(`xc_processor_t *processor, $1 *dst, const $1 * const src')
     14        IFPTRMOVE(`const xc_ptrmove_t *ptrmove, $1 * const dst, const $1 * const src')
    1415        IFDASM(   `xc_dasm_t *dasm, zval *dst, const $1 * const src')
    1516        TSRMLS_DC
     
    5960            IFRESTORE(`assert(xc_is_shm(src));')
    6061            IFCALCSTORE(`assert(!xc_is_shm(src));')
    61             do {
    6262        ')
    6363        ifdef(`SIZEOF_$1', , `m4_errprint(`AUTOCHECK WARN: $1: missing structinfo, dont panic')')
     
    6565        ifdef(`USEMEMCPY', `IFCOPY(`
    6666            memcpy(dst, src, sizeof($1));
    67             do {
    6867        ')')
    6968
     
    7170            fprintf(stderr, "%s", "{\n");
    7271            indent ++;
    73             {
    74         ')
    75         $3`'
     72        ')
     73        {
     74            $3`'
     75        }
    7676        IFDPRINT(`
    77             }
    7877            indent --;
    7978            INDENT()fprintf(stderr, "}\n");
    8079        ')
     80
    8181        IFAUTOCHECK(`
    8282        /* {{{ autocheck */
     
    105105        /* }}} */
    106106        ')
    107         ifdef(`ELEMENTSOF_$1', `
    108             pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE')))
    109             ifelse(defn(`ELEMENTS_UNDONE'), , `m4_errprint(`AUTOCHECK INFO: $1: processor looks good')', `
    110                 m4_errprint(`AUTOCHECK ERROR: ====' PROCESSOR_TYPE `$1 =================')
    111                 m4_errprint(`AUTOCHECK expected:' defn(`ELEMENTSOF_$1'))
    112                 m4_errprint(`AUTOCHECK missing :' defn(`ELEMENTS_UNDONE'))
    113                 define(`EXIT_PENDING', 1)
    114             ')
    115             popdef(`ELEMENTS_UNDONE')
    116         ')
    117         ifdef(`USEMEMCPY', `IFCOPY(`
    118             } while (0);
    119         ')')
    120         IFAUTOCHECK(`
    121             } while (0);
    122         ')
     107        ifdef(`AUTOCHECK_SKIP', `undefine(`AUTOCHECK_SKIP')', `
     108            ifdef(`ELEMENTSOF_$1', `
     109                pushdef(`ELEMENTS_UNDONE', LIST_DIFF(defn(`ELEMENTSOF_$1'), defn(`ELEMENTS_DONE')))
     110                ifelse(defn(`ELEMENTS_UNDONE'), , `m4_errprint(`AUTOCHECK INFO: $1: processor looks good')', `
     111                    m4_errprint(`AUTOCHECK ERROR: ====' PROCESSOR_TYPE `$1 =================')
     112                    m4_errprint(`AUTOCHECK expected:' defn(`ELEMENTSOF_$1'))
     113                    m4_errprint(`AUTOCHECK missing :' defn(`ELEMENTS_UNDONE'))
     114                    define(`EXIT_PENDING', 1)
     115                ')
     116                popdef(`ELEMENTS_UNDONE')
     117            ')
     118        ')
     119
    123120        popdef(`ELEMENTS_DONE')
    124121    }
     
    146143        IFSTORE(  `processor, $6 $2, $6 $3')
    147144        IFRESTORE(`processor, $6 $2, $6 $3')
     145        IFPTRMOVE(`
     146            ptrmove
     147            , ifelse(`$6', `', `DSTPTR_EX(`$1', `$2')', `$6 $2')
     148            , ifelse(`$6', `', `SRCPTR_EX(`$1', `$3')', `$6 $3')
     149        ')
    148150        IFDASM(   `dasm, ifdef(`DASM_STRUCT_DIRECT', `dst', `zv'), $6 $3')
    149151        TSRMLS_CC
     
    156158')
    157159    popdef(`FUNC_NAME')
    158     ifelse(`$6', , `FIXPOINTER_EX(`$1', `$2')')
     160    ifelse(`$6', , `FIXPOINTER_EX(`$1', `$2', `$3')')
    159161')
    160162dnl }}}
Note: See TracChangeset for help on using the changeset viewer.