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


Ignore:
Timestamp:
2011-04-09T09:07:48+02:00 (4 years ago)
Author:
Xuefer
Message:

PHP 6: initial catch up with php 6 literals and trait

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/processor/processor.m4

    r713 r716  
    223223    DISPATCH(zend_uint, class_name_len)
    224224    PROC_ZSTRING_L(, class_name, class_name_len)
     225#ifdef ZEND_ENGINE_2_4
     226    DISPATCH(zend_uchar, type_hint)
     227#else
    225228    DISPATCH(zend_bool, array_type_hint)
     229#endif
    226230    DISPATCH(zend_bool, allow_null)
    227231    DISPATCH(zend_bool, pass_by_reference)
     232#ifndef ZEND_ENGINE_2_4
    228233    DISPATCH(zend_bool, return_reference)
    229234    DISPATCH(int, required_num_args)
     235#endif
    230236')
    231237#endif
     
    273279    PROC_ZSTRING_L(, name, name_length)
    274280    DISPATCH(ulong, h)
     281#ifdef ZEND_ENGINE_2_4
     282    DISPATCH(int, offset)
     283#endif
    275284#ifdef ZEND_ENGINE_2_1
    276285    DISPATCH(int, doc_comment_len)
     
    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    ')
     
    351386            */
    352387            DONE(`interfaces')
     388#   ifdef ZEND_ENGINE_2_4
     389            DONE(`traits')
     390            DONE(`trait_aliases')
     391            DONE(`trait_precedences')
     392#   endif
    353393        }
    354394        else {
    355             COPYNULL(interfaces)
     395            COPYNULL(`interfaces')
     396#   ifdef ZEND_ENGINE_2_4
     397            COPYNULL(`traits')
     398            COPYNULL(`trait_aliases')
     399            COPYNULL(`trait_precedences')
     400#   endif
    356401        }
    357402    ')
     
    359404        IFDASM(`', `
    360405            DONE(`interfaces')
     406#   ifdef ZEND_ENGINE_2_4
     407            DONE(`traits')
     408            DONE(`trait_aliases')
     409            DONE(`trait_precedences')
     410#   endif
    361411        ')
    362412    ')
    363413    DISPATCH(zend_uint, num_interfaces)
    364 
     414#   ifdef ZEND_ENGINE_2_4
     415    DISPATCH(zend_uint, num_traits)
     416#   endif
     417
     418#   ifdef ZEND_ENGINE_2_4
     419    DISABLECHECK(`
     420    IFRESTORE(`dst->info.user.filename = processor->entry_src->filepath;', `PROC_STRING(info.user.filename)')
     421    DISPATCH(zend_uint, info.user.line_start)
     422    DISPATCH(zend_uint, info.user.line_end)
     423    DISPATCH(zend_uint, info.user.doc_comment_len)
     424    PROC_ZSTRING_L(, info.user.doc_comment, info.user.doc_comment_len)
     425    ')
     426    DONE(info)
     427#   else
    365428    IFRESTORE(`dst->filename = processor->entry_src->filepath;DONE(filename)', `PROC_STRING(filename)')
    366429    DISPATCH(zend_uint, line_start)
    367430    DISPATCH(zend_uint, line_end)
    368 #ifdef ZEND_ENGINE_2_1
     431#       ifdef ZEND_ENGINE_2_1
    369432    DISPATCH(zend_uint, doc_comment_len)
    370433    PROC_ZSTRING_L(, doc_comment, doc_comment_len)
    371 #endif
     434#       endif
     435#   endif
     436
    372437    /* # NOT DONE */
    373438    COPY(serialize_func)
     
    377442    COPY(get_iterator)
    378443    COPY(interface_gets_implemented)
    379 #ifdef ZEND_ENGINE_2_3
     444#   ifdef ZEND_ENGINE_2_3
    380445    COPY(get_static_method)
    381 #endif
     446#   endif
    382447    COPY(serialize)
    383448    COPY(unserialize)
     
    389454    COPY(__set)
    390455/* should be >5.1 */
    391 #ifdef ZEND_ENGINE_2_1
     456#   ifdef ZEND_ENGINE_2_1
    392457    COPY(__unset)
    393458    COPY(__isset)
    394 # if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
     459#    if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
    395460    COPY(__tostring)
    396 # endif
    397 #endif
     461#    endif
     462#   endif
    398463    COPY(__call)
    399 #ifdef ZEND_CALLSTATIC_FUNC_NAME
     464#   ifdef ZEND_CALLSTATIC_FUNC_NAME
    400465    COPY(__callstatic)
    401 #endif
     466#   endif
     467#   ifndef ZEND_ENGINE_2_4
    402468    /* # NOT DONE */
    403469    COPY(module)
    404 #else
     470#   endif
     471#else /* ZEND_ENGINE_2 */
    405472    COPY(handle_function_call)
    406473    COPY(handle_property_get)
     
    416483')
    417484dnl }}}
     485#ifdef ZEND_ENGINE_2_4
     486undefine(`UNION_znode_op')
     487define(`UNION_znode_op', `dnl {{{
     488    assert(src->$1_type == IS_CONST ||
     489        src->$1_type == IS_VAR ||
     490        src->$1_type == IS_CV ||
     491        src->$1_type == IS_TMP_VAR ||
     492        src->$1_type == IS_UNUSED);
     493    dnl dirty dispatch
     494    DISABLECHECK(`
     495    switch (src->$1_type) {
     496        case IS_CONST:
     497            dnl TODO: fix me, use literals
     498            IFDASM(`{
     499                zval *zv;
     500                ALLOC_INIT_ZVAL(zv);
     501                *zv = ((zend_literal *) src->$1.ptr)->constant;
     502                zval_copy_ctor(zv);
     503                add_assoc_zval_ex(dst, ZEND_STRS("$1.constant"), zv);
     504                }
     505            ', `
     506                DISPATCH(zend_uint, $1.constant)
     507            ')
     508            break;
     509        IFCOPY(`
     510            IFNOTMEMCPY(`
     511                default:
     512                    *dst = *src;
     513            ')
     514        ', `
     515        case IS_VAR:
     516        case IS_TMP_VAR:
     517        case IS_CV:
     518            DISPATCH(zend_uint, $1.var)
     519            break;
     520        case IS_UNUSED:
     521            IFDASM(`DISPATCH(zend_uint, $1.var)')
     522            DISPATCH(zend_uint, $1.opline_num)
     523            break;
     524        ')
     525    }
     526    ')
     527    DONE($1)
     528')
     529dnl }}}
     530#else
    418531DEF_STRUCT_P_FUNC(`znode', , `dnl {{{
    419532    DISPATCH(int, op_type)
     
    460573    ')
    461574    DONE(u)
     575#if 0
     576    DONE(EA)
     577#endif
    462578#undef XCACHE_IS_CV
    463579')
    464580dnl }}}
     581#endif
    465582DEF_STRUCT_P_FUNC(`zend_op', , `dnl {{{
    466583    DISPATCH(zend_uchar, opcode)
     584#ifdef ZEND_ENGINE_2_4
     585    UNION_znode_op(result)
     586    UNION_znode_op(op1)
     587    UNION_znode_op(op2)
     588#else
    467589    STRUCT(znode, result)
    468590    STRUCT(znode, op1)
    469591    STRUCT(znode, op2)
     592#endif
    470593    DISPATCH(ulong, extended_value)
    471594    DISPATCH(uint, lineno)
    472595#ifdef ZEND_ENGINE_2_1
     596#ifdef ZEND_ENGINE_2_4
     597    DISPATCH(zend_uchar, op1_type)
     598    DISPATCH(zend_uchar, op2_type)
     599    DISPATCH(zend_uchar, result_type)
     600#endif
    473601    IFCOPY(`
    474602        switch (src->opcode) {
     
    477605#endif
    478606            case ZEND_JMP:
    479                 dst->op1.u.jmp_addr = processor->active_opcodes_dst + (src->op1.u.jmp_addr - processor->active_opcodes_src);
     607                Z_OP(dst->op1).jmp_addr = processor->active_opcodes_dst + (Z_OP(src->op1).jmp_addr - processor->active_opcodes_src);
    480608                break;
    481609
     
    487615            case ZEND_JMP_SET:
    488616#endif
    489                 dst->op2.u.jmp_addr = processor->active_opcodes_dst + (src->op2.u.jmp_addr - processor->active_opcodes_src);
     617                Z_OP(dst->op2).jmp_addr = processor->active_opcodes_dst + (Z_OP(src->op2).jmp_addr - processor->active_opcodes_src);
    490618                break;
    491619
     
    498626')
    499627dnl }}}
     628#ifdef ZEND_ENGINE_2_4
     629DEF_STRUCT_P_FUNC(`zend_literal', , `dnl {{{
     630    STRUCT(zval, constant)
     631    DISPATCH(zend_ulong, hash_value)
     632    DISPATCH(zend_uint,  cache_slot)
     633')
     634dnl }}}
     635#endif
    500636DEF_STRUCT_P_FUNC(`zend_op_array', , `dnl {{{
    501637    IFRESTORE(`
     
    552688    DISPATCH(zend_uint, num_args)
    553689    DISPATCH(zend_uint, required_num_args)
     690#   ifndef ZEND_ENGINE_2_4
    554691    DISPATCH(zend_bool, pass_rest_by_reference)
     692#   endif
    555693#else
    556694    if (src->arg_types) {
     
    583721    }
    584722#endif
     723#ifndef ZEND_ENGINE_2_4
    585724    DISPATCH(unsigned char, return_reference)
     725#endif
    586726    /* END of common elements */
    587727#ifdef IS_UNICODE
     
    600740    popdef(`AFTER_ALLOC')
    601741    DISPATCH(zend_uint, last)
     742#ifndef ZEND_ENGINE_2_4
    602743    IFCOPY(`dst->size = src->last;DONE(size)', `DISPATCH(zend_uint, size)')
     744#endif
    603745
    604746#ifdef IS_CV
    605747    STRUCT_ARRAY(last_var, zend_compiled_variable, vars)
    606748    DISPATCH(int, last_var)
     749#   ifndef ZEND_ENGINE_2_4
    607750    IFCOPY(`dst->size_var = src->last_var;DONE(size_var)', `DISPATCH(zend_uint, size_var)')
     751#   endif
    608752#else
    609753    dnl zend_cv.m4 is illegal to be made public, don not ask me for it
     
    617761    STRUCT_ARRAY(last_brk_cont, zend_brk_cont_element, brk_cont_array)
    618762    DISPATCH(zend_uint, last_brk_cont)
     763#ifndef ZEND_ENGINE_2_4
    619764    DISPATCH(zend_uint, current_brk_cont)
     765#endif
    620766#ifndef ZEND_ENGINE_2
    621767    DISPATCH(zend_bool, uses_globals)
     
    629775    STRUCT_P(HashTable, static_variables, HashTable_zval_ptr)
    630776
     777#ifndef ZEND_ENGINE_2_4
    631778    COPY(start_op)
    632779    DISPATCH(int, backpatch_count)
     780#endif
    633781#ifdef ZEND_ENGINE_2_3
    634782    DISPATCH(zend_uint, this_var)
    635783#endif
    636784
     785#ifndef ZEND_ENGINE_2_4
    637786    DISPATCH(zend_bool, done_pass_two)
     787#endif
    638788    /* 5.0 <= ver < 5.3 */
    639789#if defined(ZEND_ENGINE_2) && !defined(ZEND_ENGINE_2_3)
     
    697847            ')
    698848    ')
     849#ifdef ZEND_ENGINE_2_4
     850    DISPATCH(int, last_literal)
     851    IFRESTORE(`COPY(literals)', `STRUCT_ARRAY(last_literal, zend_literal, literals)')
     852
     853    COPYNULL(run_time_cache)
     854    COPYNULL(last_cache_slot)
     855#endif
     856
    699857#endif
    700858
Note: See TracChangeset for help on using the changeset viewer.