Ignore:
Timestamp:
2011-04-09T14:59:31+02:00 (4 years ago)
Author:
Xuefer
Message:

merge from trunk

Location:
branches/1.3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/1.3

  • branches/1.3/processor/processor.m4

    r646 r726  
    8585#endif
    8686    } while(0);
    87     return;
    8887    ', `
    8988        dnl IFDASM else
     
    223222    DISPATCH(zend_uint, class_name_len)
    224223    PROC_ZSTRING_L(, class_name, class_name_len)
     224#ifdef ZEND_ENGINE_2_4
     225    DISPATCH(zend_uchar, type_hint)
     226#else
    225227    DISPATCH(zend_bool, array_type_hint)
     228#endif
    226229    DISPATCH(zend_bool, allow_null)
    227230    DISPATCH(zend_bool, pass_by_reference)
     231#ifndef ZEND_ENGINE_2_4
    228232    DISPATCH(zend_bool, return_reference)
    229233    DISPATCH(int, required_num_args)
     234#endif
    230235')
    231236#endif
     
    273278    PROC_ZSTRING_L(, name, name_length)
    274279    DISPATCH(ulong, h)
     280#ifdef ZEND_ENGINE_2_4
     281    DISPATCH(int, offset)
     282#endif
    275283#ifdef ZEND_ENGINE_2_1
    276284    DISPATCH(int, doc_comment_len)
     
    285293dnl }}}
    286294DEF_STRUCT_P_FUNC(`zend_class_entry', , `dnl {{{
     295    int i;
    287296    IFCALCCOPY(`
    288297        processor->active_class_entry_src = src;
     
    307316    STRUCT_P(int, refcount)
    308317#endif
     318#ifndef ZEND_ENGINE_2_4
    309319    DISPATCH(zend_bool, constants_updated)
     320#endif
    310321#ifdef ZEND_ENGINE_2
    311322    DISPATCH(zend_uint, ce_flags)
    312323#endif
    313324
    314     STRUCT(HashTable, default_properties, HashTable_zval_ptr)
     325#ifdef ZEND_ENGINE_2_4
     326    DISPATCH(int, default_properties_count)
     327    STRUCT_ARRAY(default_properties_count, zval, default_properties_table)
     328    DISPATCH(int, default_static_members_count)
     329    STRUCT_ARRAY(default_static_members_count, zval, default_static_members_table)
     330    IFCOPY(`dst->static_members_table = &dst->default_static_members_table;')
     331    DONE(static_members_table)
     332#else
    315333    IFCOPY(`dst->builtin_functions = src->builtin_functions;')
    316334    DONE(builtin_functions)
    317 #ifdef ZEND_ENGINE_2
     335    STRUCT(HashTable, default_properties, HashTable_zval_ptr)
     336#   ifdef ZEND_ENGINE_2
    318337    STRUCT(HashTable, properties_info, HashTable_zend_property_info)
    319 #   ifdef ZEND_ENGINE_2_1
     338#       ifdef ZEND_ENGINE_2_1
    320339    STRUCT(HashTable, default_static_members, HashTable_zval_ptr)
    321340    IFCOPY(`dst->static_members = &dst->default_static_members;')
    322341    DONE(static_members)
    323 #   else
     342#       else
    324343    STRUCT_P(HashTable, static_members, HashTable_zval_ptr)
    325 #   endif
     344#       endif
     345#   endif
     346#endif /* ZEND_ENGINE_2_4 */
     347
     348#ifdef ZEND_ENGINE_2
    326349    STRUCT(HashTable, constants_table, HashTable_zval_ptr)
    327350
    328351    dnl runtime binding: ADD_INTERFACE will deal with it
     352    dnl runtime binding: ADD_TRAIT will deal with it
    329353    IFRESTORE(`
    330354        if (src->num_interfaces) {
    331355            CALLOC(dst->interfaces, zend_class_entry*, src->num_interfaces)
    332356            DONE(`interfaces')
     357#   ifdef ZEND_ENGINE_2_4
     358            CALLOC(dst->traits, zend_class_entry*, src->num_traits)
     359            DONE(`traits')
     360            DONE(`trait_aliases')
     361            DONE(`trait_precedences')
     362#   endif
    333363        }
    334364        else {
    335             COPYNULL(interfaces)
     365            COPYNULL(`interfaces')
     366#   ifdef ZEND_ENGINE_2_4
     367            COPYNULL(`traits')
     368            COPYNULL(`trait_aliases')
     369            COPYNULL(`trait_precedences')
     370#   endif
    336371        }
    337372    ')
     
    350385            */
    351386            DONE(`interfaces')
     387#   ifdef ZEND_ENGINE_2_4
     388            DONE(`traits')
     389            DONE(`trait_aliases')
     390            DONE(`trait_precedences')
     391#   endif
    352392        }
    353393        else {
    354             COPYNULL(interfaces)
     394            COPYNULL(`interfaces')
     395#   ifdef ZEND_ENGINE_2_4
     396            COPYNULL(`traits')
     397            COPYNULL(`trait_aliases')
     398            COPYNULL(`trait_precedences')
     399#   endif
    355400        }
    356401    ')
     
    358403        IFDASM(`', `
    359404            DONE(`interfaces')
     405#   ifdef ZEND_ENGINE_2_4
     406            DONE(`traits')
     407            DONE(`trait_aliases')
     408            DONE(`trait_precedences')
     409#   endif
    360410        ')
    361411    ')
    362412    DISPATCH(zend_uint, num_interfaces)
    363 
     413#   ifdef ZEND_ENGINE_2_4
     414    DISPATCH(zend_uint, num_traits)
     415#   endif
     416
     417#   ifdef ZEND_ENGINE_2_4
     418    DISABLECHECK(`
     419    IFRESTORE(`COPY(info.user.filename)', `PROC_STRING(info.user.filename)')
     420    DISPATCH(zend_uint, info.user.line_start)
     421    DISPATCH(zend_uint, info.user.line_end)
     422    DISPATCH(zend_uint, info.user.doc_comment_len)
     423    PROC_ZSTRING_L(, info.user.doc_comment, info.user.doc_comment_len)
     424    ')
     425    DONE(info)
     426#   else
    364427    IFRESTORE(`COPY(filename)', `PROC_STRING(filename)')
    365428    DISPATCH(zend_uint, line_start)
    366429    DISPATCH(zend_uint, line_end)
    367 #ifdef ZEND_ENGINE_2_1
     430#       ifdef ZEND_ENGINE_2_1
    368431    DISPATCH(zend_uint, doc_comment_len)
    369432    PROC_ZSTRING_L(, doc_comment, doc_comment_len)
    370 #endif
     433#       endif
     434#   endif
     435
    371436    /* # NOT DONE */
    372437    COPY(serialize_func)
     
    376441    COPY(get_iterator)
    377442    COPY(interface_gets_implemented)
    378 #ifdef ZEND_ENGINE_2_3
     443#   ifdef ZEND_ENGINE_2_3
    379444    COPY(get_static_method)
    380 #endif
     445#   endif
    381446    COPY(serialize)
    382447    COPY(unserialize)
     
    388453    COPY(__set)
    389454/* should be >5.1 */
    390 #ifdef ZEND_ENGINE_2_1
     455#   ifdef ZEND_ENGINE_2_1
    391456    COPY(__unset)
    392457    COPY(__isset)
    393 # if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
     458#    if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
    394459    COPY(__tostring)
    395 # endif
    396 #endif
     460#    endif
     461#   endif
    397462    COPY(__call)
    398 #ifdef ZEND_CALLSTATIC_FUNC_NAME
     463#   ifdef ZEND_CALLSTATIC_FUNC_NAME
    399464    COPY(__callstatic)
    400 #endif
     465#   endif
     466#   ifndef ZEND_ENGINE_2_4
    401467    /* # NOT DONE */
    402468    COPY(module)
    403 #else
     469#   endif
     470#else /* ZEND_ENGINE_2 */
    404471    COPY(handle_function_call)
    405472    COPY(handle_property_get)
     
    415482')
    416483dnl }}}
     484#ifdef ZEND_ENGINE_2_4
     485undefine(`UNION_znode_op')
     486define(`UNION_znode_op', `dnl {{{
     487    assert(src->$1_type == IS_CONST ||
     488        src->$1_type == IS_VAR ||
     489        src->$1_type == IS_CV ||
     490        src->$1_type == IS_TMP_VAR ||
     491        src->$1_type == IS_UNUSED);
     492    dnl dirty dispatch
     493    DISABLECHECK(`
     494    switch (src->$1_type) {
     495        case IS_CONST:
     496            dnl TODO: fix me, use literals
     497            IFDASM(`{
     498                zval *zv;
     499                ALLOC_INIT_ZVAL(zv);
     500                *zv = ((zend_literal *) src->$1.ptr)->constant;
     501                zval_copy_ctor(zv);
     502                add_assoc_zval_ex(dst, ZEND_STRS("$1.constant"), zv);
     503                }
     504            ', `
     505                DISPATCH(zend_uint, $1.constant)
     506            ')
     507            break;
     508        IFCOPY(`
     509            IFNOTMEMCPY(`
     510                default:
     511                    *dst = *src;
     512            ')
     513        ', `
     514        case IS_VAR:
     515        case IS_TMP_VAR:
     516        case IS_CV:
     517            DISPATCH(zend_uint, $1.var)
     518            break;
     519        case IS_UNUSED:
     520            IFDASM(`DISPATCH(zend_uint, $1.var)')
     521            DISPATCH(zend_uint, $1.opline_num)
     522            break;
     523        ')
     524    }
     525    ')
     526    DONE($1)
     527')
     528dnl }}}
     529#else
    417530DEF_STRUCT_P_FUNC(`znode', , `dnl {{{
    418531    DISPATCH(int, op_type)
     
    459572    ')
    460573    DONE(u)
     574#if 0
     575    DONE(EA)
     576#endif
    461577#undef XCACHE_IS_CV
    462578')
    463579dnl }}}
     580#endif
    464581DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{
    465582    DISPATCH(zend_uchar, opcode)
     583#ifdef ZEND_ENGINE_2_4
     584    UNION_znode_op(result)
     585    UNION_znode_op(op1)
     586    UNION_znode_op(op2)
     587#else
    466588    STRUCT(znode, result)
    467589    STRUCT(znode, op1)
    468590    STRUCT(znode, op2)
     591#endif
    469592    DISPATCH(ulong, extended_value)
    470593    DISPATCH(uint, lineno)
    471594#ifdef ZEND_ENGINE_2_1
     595#ifdef ZEND_ENGINE_2_4
     596    DISPATCH(zend_uchar, op1_type)
     597    DISPATCH(zend_uchar, op2_type)
     598    DISPATCH(zend_uchar, result_type)
     599#endif
    472600    IFCOPY(`
    473601        switch (src->opcode) {
     
    476604#endif
    477605            case ZEND_JMP:
    478                 dst->op1.u.jmp_addr = processor->active_opcodes_dst + (src->op1.u.jmp_addr - processor->active_opcodes_src);
     606                Z_OP(dst->op1).jmp_addr = processor->active_opcodes_dst + (Z_OP(src->op1).jmp_addr - processor->active_opcodes_src);
    479607                break;
    480608
     
    486614            case ZEND_JMP_SET:
    487615#endif
    488                 dst->op2.u.jmp_addr = processor->active_opcodes_dst + (src->op2.u.jmp_addr - processor->active_opcodes_src);
     616                Z_OP(dst->op2).jmp_addr = processor->active_opcodes_dst + (Z_OP(src->op2).jmp_addr - processor->active_opcodes_src);
    489617                break;
    490618
     
    497625')
    498626dnl }}}
     627#ifdef ZEND_ENGINE_2_4
     628DEF_STRUCT_P_FUNC(`zend_literal', , `dnl {{{
     629    STRUCT(zval, constant)
     630    DISPATCH(zend_ulong, hash_value)
     631    DISPATCH(zend_uint,  cache_slot)
     632')
     633dnl }}}
     634#endif
    499635DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
    500636    IFRESTORE(`
     
    535671    DISPATCH(zend_uint, num_args)
    536672    DISPATCH(zend_uint, required_num_args)
     673#   ifndef ZEND_ENGINE_2_4
    537674    DISPATCH(zend_bool, pass_rest_by_reference)
     675#   endif
    538676#else
    539677    if (src->arg_types) {
     
    541679        IFCOPY(`memcpy(dst->arg_types, src->arg_types, sizeof(src->arg_types[0]) * (src->arg_types[0]+1));')
    542680        IFDASM(`do {
    543             zend_uint ii;
    544681            int i;
    545682            zval *zv;
     
    567704    }
    568705#endif
     706#ifndef ZEND_ENGINE_2_4
    569707    DISPATCH(unsigned char, return_reference)
     708#endif
    570709    /* END of common elements */
    571710#ifdef IS_UNICODE
     
    584723    popdef(`AFTER_ALLOC')
    585724    DISPATCH(zend_uint, last)
     725#ifndef ZEND_ENGINE_2_4
    586726    IFCOPY(`dst->size = src->last;DONE(size)', `DISPATCH(zend_uint, size)')
     727#endif
    587728
    588729#ifdef IS_CV
    589730    STRUCT_ARRAY(last_var, zend_compiled_variable, vars)
    590731    DISPATCH(int, last_var)
     732#   ifndef ZEND_ENGINE_2_4
    591733    IFCOPY(`dst->size_var = src->last_var;DONE(size_var)', `DISPATCH(zend_uint, size_var)')
     734#   endif
    592735#else
    593736    dnl zend_cv.m4 is illegal to be made public, don not ask me for it
     
    601744    STRUCT_ARRAY_I(last_brk_cont, zend_brk_cont_element, brk_cont_array)
    602745    DISPATCH(zend_uint, last_brk_cont)
     746#ifndef ZEND_ENGINE_2_4
    603747    DISPATCH(zend_uint, current_brk_cont)
     748#endif
    604749#ifndef ZEND_ENGINE_2
    605750    DISPATCH(zend_bool, uses_globals)
     
    613758    STRUCT_P(HashTable, static_variables, HashTable_zval_ptr)
    614759
     760#ifndef ZEND_ENGINE_2_4
    615761    COPY(start_op)
    616762    DISPATCH(int, backpatch_count)
     763#endif
    617764#ifdef ZEND_ENGINE_2_3
    618765    DISPATCH(zend_uint, this_var)
    619766#endif
    620767
     768#ifndef ZEND_ENGINE_2_4
    621769    DISPATCH(zend_bool, done_pass_two)
     770#endif
    622771    /* 5.0 <= ver < 5.3 */
    623772#if defined(ZEND_ENGINE_2) && !defined(ZEND_ENGINE_2_3)
     
    647796#if defined(HARDENING_PATCH) && HARDENING_PATCH
    648797    DISPATCH(zend_bool, created_by_eval)
     798#endif
     799#ifdef ZEND_ENGINE_2_4
     800    DISPATCH(int, last_literal)
     801    IFRESTORE(`COPY(literals)', `STRUCT_ARRAY_I(last_literal, zend_literal, literals)')
     802
     803    COPYNULL(run_time_cache)
     804    COPYNULL(last_cache_slot)
    649805#endif
    650806    } while (0);
     
    680836            ')
    681837    ')
     838
    682839#endif
    683840
Note: See TracChangeset for help on using the changeset viewer.