Changeset 1486 in svn for trunk/processor/processor.m4


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

WIP PHP_5_6 support

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/processor.m4

    r1481 r1486  
    6969#ifdef ZEND_ENGINE_2
    7070DEF_HASH_TABLE_FUNC(`HashTable_zend_property_info', `zend_property_info')
     71#endif
     72#ifdef IS_CONSTANT_AST
     73define(`ZEND_AST_HELPER', `
     74    {
     75    IFCALCCOPY(`
     76        size_t zend_ast_size = $1->kind == ZEND_CONST
     77         ? sizeof(zend_ast) + sizeof(zval)
     78         : sizeof(zend_ast) + sizeof(zend_ast *) * ($1->children - 1);
     79    ')
     80
     81    pushdef(`ALLOC_SIZE_HELPER', `zend_ast_size')
     82    $2
     83    popdef(`ALLOC_SIZE_HELPER')
     84    }
     85')
     86DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{
     87        zend_ushort i;
     88        PROCESS(zend_ushort, kind)
     89        PROCESS(zend_ushort, children)
     90        DONE(u)
     91        DISABLECHECK(`
     92            if (SRC()->kind == ZEND_CONST) {
     93                assert(SRC()->u.val);
     94                IFCOPY(`
     95                    memcpy(DST()->u.val, SRC()->u.val, sizeof(zval));
     96                ')
     97                STRUCT_P_EX(zval, DST()->u.val, SRC()->u.val, `', `', ` ')
     98                RELOCATE_EX(zval, DST()->u.val)
     99            }
     100            else {
     101                for (i = 0; i < SRC()->children; ++i) {
     102                    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])
     106                }
     107            }
     108        ')
     109')
     110dnl }}}
    71111#endif
    72112DEF_STRUCT_P_FUNC(`zval', , `dnl {{{
     
    126166
    127167            case IS_ARRAY:
     168#ifdef IS_CONSTANT_ARRAY
    128169            case IS_CONSTANT_ARRAY:
     170#endif
     171                assert(SRC()->value.ht);
    129172                STRUCT_P(HashTable, value.ht, HashTable_zval_ptr)
    130173                break;
     174
     175#ifdef IS_CONSTANT_AST
     176            case IS_CONSTANT_AST:
     177                assert(SRC()->value.ast);
     178                ZEND_AST_HELPER(`SRC()->value.ast', `STRUCT_P(zend_ast, value.ast)')
     179                break;
     180#endif
    131181
    132182            case IS_OBJECT:
     
    238288    PROCESS(zend_bool, array_type_hint)
    239289#endif
     290#ifdef ZEND_ENGINE_2_6
     291    PROCESS(zend_uchar, pass_by_reference)
     292#endif
    240293    PROCESS(zend_bool, allow_null)
     294
     295#ifdef ZEND_ENGINE_2_6
     296    PROCESS(zend_bool, is_variadic)
     297#else
    241298    PROCESS(zend_bool, pass_by_reference)
     299#endif
     300
    242301#ifndef ZEND_ENGINE_2_4
    243302    PROCESS(zend_bool, return_reference)
     
    481540    PROCESS_CTEXTPOINTER(__unset)
    482541    PROCESS_CTEXTPOINTER(__isset)
    483 #    if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
     542#   endif
     543# if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
    484544    PROCESS_CTEXTPOINTER(__tostring)
    485 #    endif
    486 #   endif
     545# endif
     546# if defined(ZEND_ENGINE_2_6)
     547    PROCESS_CTEXTPOINTER(__debugInfo)
     548# endif
    487549    PROCESS_CTEXTPOINTER(__call)
    488550#   ifdef ZEND_CALLSTATIC_FUNC_NAME
Note: See TracChangeset for help on using the changeset viewer.