Changeset 1487 in svn


Ignore:
Timestamp:
2014-05-27T14:34:07Z (15 months ago)
Author:
Xuefer
Message:

PHP_5_6: finish support for zend_ast

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r1486 r1487  
    88========
    99 * cacher:
     10   * PHP_5_6 support
    1011   * (WIP) defragment
    1112   * (WIP) cache to disk
    12    * (WIP) PHP_5_6 support
     13 * disassembler, decompiler:
     14   * PHP_5_6 support
    1315 * misc:
    1416   * Reflection info added for APIs
  • trunk/processor/processor.m4

    r1486 r1487  
    7171#endif
    7272#ifdef IS_CONSTANT_AST
    73 define(`ZEND_AST_HELPER', `
    74     {
     73define(`ZEND_AST_HELPER', `dnl {{{
     74{
    7575    IFCALCCOPY(`
    76         size_t zend_ast_size = $1->kind == ZEND_CONST
     76        size_t zend_ast_size = ($1->kind == ZEND_CONST)
    7777         ? sizeof(zend_ast) + sizeof(zval)
    7878         : sizeof(zend_ast) + sizeof(zend_ast *) * ($1->children - 1);
     
    8282    $2
    8383    popdef(`ALLOC_SIZE_HELPER')
    84     }
    85 ')
     84}
     85')
     86dnl }}}
    8687DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{
    8788        zend_ushort i;
     
    9394                assert(SRC()->u.val);
    9495                IFCOPY(`
     96                    DST()->u.val = (zval *) (DST() + 1);
    9597                    memcpy(DST()->u.val, SRC()->u.val, sizeof(zval));
    9698                ')
     
    101103                for (i = 0; i < SRC()->children; ++i) {
    102104                    zend_ast *src_ast = (&SRC()->u.child)[i];
    103                     ALLOC(`(&DST()->u.child)[i]', zend_ast)
    104                     ZEND_AST_HELPER(`src_ast', `STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ')')
    105                     RELOCATE_EX(zend_ast, (&DST()->u.child)[i])
     105                    if (src_ast) {
     106                        ZEND_AST_HELPER(`src_ast', `
     107                            ALLOC(`(&DST()->u.child)[i]', zend_ast)
     108                            STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ')
     109                        ')
     110                        RELOCATE_EX(zend_ast, (&DST()->u.child)[i])
     111                    }
     112                    else {
     113                        COPYNULL_EX(`(&DST()->u.child)[i]')
     114                    }
    106115                }
    107116            }
Note: See TracChangeset for help on using the changeset viewer.