Ignore:
Timestamp:
2011-04-09T14:59:31+02:00 (4 years ago)
Author:
moo
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.