Ignore:
Timestamp:
2014-05-27T06:53:34+02:00 (6 months ago)
Author:
moo
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.