Changeset 1281 in svn for trunk/xcache


Ignore:
Timestamp:
2013-07-08T08:00:36Z (6 years ago)
Author:
Xuefer
Message:

remove php 4 support completely

Location:
trunk/xcache
Files:
1 deleted
10 edited

Legend:

Unmodified
Added
Removed
  • trunk/xcache/xc_compatibility.c

    r991 r1281  
    22
    33#ifndef ZEND_ENGINE_2_3
    4 #include "ext/standard/php_string.h"
    5 size_t xc_dirname(char *path, size_t len) /* {{{ */
    6 {
    7 #ifdef ZEND_ENGINE_2
    8     return php_dirname(path, len);
    9 #else
    10     php_dirname(path, len);
    11     return strlen(path);
    12 #endif
    13 }
    14 /* }}} */
    15 
    164long xc_atol(const char *str, int str_len) /* {{{ */
    175{
  • trunk/xcache/xc_compatibility.h

    r1280 r1281  
    2828
    2929#define NOTHING
    30 /* ZendEngine code Switcher */
    31 #ifndef ZEND_ENGINE_2
    32 #   define ZESW(v1, v2) v1
    33 #else
    34 #   define ZESW(v1, v2) v2
    35 #endif
     30/* ZendEngine version code Switcher */
    3631#ifdef ZEND_ENGINE_2_4
    3732#   define ZEND_24(pre24, v24) v24
     
    112107#   define Z_CLASS_INFO(className) (className)
    113108
    114 static inline int php_output_start_default(TSRMLS_D) { php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC); }
    115 static inline int php_output_get_contents(zval *p TSRMLS_DC) { php_ob_get_buffer(p TSRMLS_CC); }
    116 static inline int php_output_discard(TSRMLS_D) { php_end_ob_buffer(0, 0 TSRMLS_CC); }
     109static inline int php_output_start_default(TSRMLS_D) { return php_start_ob_buffer(NULL, 0, 1 TSRMLS_CC); }
     110static inline int php_output_get_contents(zval *p TSRMLS_DC) { return php_ob_get_buffer(p TSRMLS_CC); }
     111static inline int php_output_discard(TSRMLS_D) { php_end_ob_buffer(0, 0 TSRMLS_CC); return SUCCESS; }
    117112#endif
    118113
     
    213208/* }}} */
    214209
    215 /* the class entry type to be stored in class_table */
    216 typedef ZESW(zend_class_entry, zend_class_entry*) xc_cest_t;
    217 
    218 /* xc_cest_t to (zend_class_entry*) */
    219 #define CestToCePtr(st) (ZESW(\
    220             &(st), \
    221             st \
    222             ) )
    223 
    224 /* ZCEP=zend class entry ptr */
    225 #define ZCEP_REFCOUNT_PTR(pce) (ZESW( \
    226             (pce)->refcount, \
    227             &((pce)->refcount) \
    228             ))
    229 
    230210#ifndef ZEND_ENGINE_2_3
    231 size_t xc_dirname(char *path, size_t len);
    232 #define zend_dirname xc_dirname
     211#include "ext/standard/php_string.h"
     212static inline size_t zend_dirname(char *path, size_t len) { return php_dirname(path, len); }
    233213long xc_atol(const char *str, int len);
    234214#define zend_atol xc_atol
     
    240220
    241221#ifndef PHP_FE_END
    242 #   ifdef ZEND_ENGINE_2
    243 #       define PHP_FE_END {NULL, NULL, NULL, 0, 0}
    244 #   else
    245 #       define PHP_FE_END {NULL, NULL, NULL}
    246 #   endif
     222#   define PHP_FE_END {NULL, NULL, NULL, 0, 0}
    247223#endif
    248224
  • trunk/xcache/xc_const_string.c

    r1254 r1281  
    7272#elif defined(ZEND_ENGINE_2_1)
    7373#   include "xc_const_string_opcodes_php5.1.h"
    74 #elif defined(ZEND_ENGINE_2)
     74#else
    7575#   include "xc_const_string_opcodes_php5.0.h"
    76 #else
    77 #   include "xc_const_string_opcodes_php4.x.h"
    7876#endif
    7977
  • trunk/xcache/xc_const_string_opcodes_php5.3.h

    r1095 r1281  
    152152/* 149 */   "HANDLE_EXCEPTION",
    153153/* 150 */   "USER_OPCODE",
     154#ifdef ZEND_ENGINE_2_3
    154155/* 151 */   "UNDEF",
    155156/* 152 */   "JMP_SET",
    156157/* 153 */   "DECLARE_LAMBDA_FUNCTION"
     158#endif
    157159};
  • trunk/xcache/xc_ini.h

    r1044 r1281  
    1313PHP_INI_MH(xcache_OnUpdateBool);
    1414PHP_INI_MH(xcache_OnUpdateString);
    15 #ifndef ZEND_ENGINE_2
    16 #define OnUpdateLong OnUpdateInt
    17 #endif
    1815
    1916#endif /* XC_INI_H_E208B8E597E7FAD950D249BE9C6B6F53 */
  • trunk/xcache/xc_opcode_spec.c

    r982 r1281  
    55/* {{{ opcode_spec */
    66#define OPSPEC(ext, op1, op2, res) { OPSPEC_##ext, OPSPEC_##op1, OPSPEC_##op2, OPSPEC_##res },
    7 #ifdef ZEND_ENGINE_2
    8 #   define OPSPEC_VAR_2 OPSPEC_STD
    9 #else
    10 #   define OPSPEC_VAR_2 OPSPEC_VAR
    11 #endif
     7#define OPSPEC_VAR_2 OPSPEC_STD
    128#include "xc_opcode_spec_def.h"
    139
  • trunk/xcache/xc_opcode_spec_def.h

    r1213 r1281  
    2323    OPSPEC(      CAST,        STD,     UNUSED,        TMP) /* 21 CAST                           */
    2424    OPSPEC(    UNUSED,        STD,     UNUSED,        TMP) /* 22 QM_ASSIGN                      */
    25 #ifdef ZEND_ENGINE_2
    2625    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 23 ASSIGN_ADD                     */
    2726    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 24 ASSIGN_SUB                     */
     
    3534    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 32 ASSIGN_BW_AND                  */
    3635    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 33 ASSIGN_BW_XOR                  */
    37 #else
    38     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    39     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    40     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    41     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    42     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    43     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    44     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    45     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    46     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    47     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    48     OPSPEC(    UNUSED,        VAR,        STD,        VAR)
    49 #endif
    5036    OPSPEC(    UNUSED,        VAR,     UNUSED,        VAR) /* 34 PRE_INC                        */
    5137    OPSPEC(    UNUSED,        VAR,     UNUSED,        VAR) /* 35 PRE_DEC                        */
     
    5642    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 40 ECHO                           */
    5743    OPSPEC(    UNUSED,        STD,     UNUSED,        TMP) /* 41 PRINT                          */
    58 #ifdef ZEND_ENGINE_2
    5944    OPSPEC(    UNUSED,    JMPADDR,     UNUSED,     UNUSED) /* 42 JMP                            */
    6045    OPSPEC(    UNUSED,        STD,    JMPADDR,     UNUSED) /* 43 JMPZ                           */
    6146    OPSPEC(    UNUSED,        STD,    JMPADDR,     UNUSED) /* 44 JMPNZ                          */
    62 #else
    63     OPSPEC(    UNUSED,     OPLINE,     UNUSED,     UNUSED)
    64     OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED)
    65     OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED)
    66 #endif
    6747    OPSPEC(    OPLINE,        STD,     OPLINE,     UNUSED) /* 45 JMPZNZ                         */
    68 #ifdef ZEND_ENGINE_2
    6948    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 46 JMPZ_EX                        */
    7049    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 47 JMPNZ_EX                       */
    71 #else
    72     OPSPEC(    UNUSED,        STD,     OPLINE,        TMP)
    73     OPSPEC(    UNUSED,        STD,     OPLINE,        TMP)
    74 #endif
    7550    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 48 CASE                           */
    7651    OPSPEC(       BIT,        STD,     UNUSED,     UNUSED) /* 49 SWITCH_FREE                    */
     
    8560    OPSPEC(    UNUSED,        TMP,     UNUSED,     UNUSED) /* 58 END_SILENCE                    */
    8661    OPSPEC(INIT_FCALL,        STD,        STD,     UNUSED) /* 59 INIT_FCALL_BY_NAME             */
    87 #ifdef ZEND_ENGINE_2
    8862    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 60 DO_FCALL                       */
    8963    OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 61 DO_FCALL_BY_NAME               */
    90 #else
    91     OPSPEC(     FCALL,        STD,     UNUSED,        VAR)
    92     OPSPEC(     FCALL,        STD,     UNUSED,        VAR)
    93 #endif
    9464    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 62 RETURN                         */
    9565    OPSPEC(    UNUSED,        ARG,     UNUSED,        VAR) /* 63 RECV                           */
     
    9868    OPSPEC(      SEND,        VAR,        ARG,     UNUSED) /* 66 SEND_VAR                       */
    9969    OPSPEC(      SEND,        VAR,        ARG,     UNUSED) /* 67 SEND_REF                       */
    100 #ifdef ZEND_ENGINE_2
    10170    OPSPEC(    UNUSED,      CLASS,     UNUSED,        VAR) /* 68 NEW                            */
    102 #else
    103     OPSPEC(    UNUSED,        STD,     UNUSED,        VAR)
    104 #endif
    10571#ifdef ZEND_ENGINE_2_3
    10672    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 69 INIT_NS_FCALL_BY_NAME          */
     
    149115#ifdef ZEND_ENGINE_2_3
    150116    OPSPEC(    UNUSED,      VAR_2,        STD,        TMP) /* 99 FETCH_CONSTANT                 */
    151 #elif defined(ZEND_ENGINE_2)
     117#else
    152118    OPSPEC(    UNUSED,     UCLASS,        STD,        TMP) /* 99 FETCH_CONSTANT                 */
    153 #else
    154     OPSPEC(    UNUSED,        STD,     UNUSED,        TMP) /* 99 FETCH_CONSTANT                 */
    155119#endif
    156120#ifdef ZEND_ENGINE_2_3
     
    165129    OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED) /* 105 TICKS                          */
    166130    OPSPEC(SEND_NOREF,        VAR,        ARG,     UNUSED) /* 106 SEND_VAR_NO_REF                */
    167 #ifdef ZEND_ENGINE_2
    168131    OPSPEC(    OPLINE,      CLASS,        STD,     UNUSED) /* 107 CATCH                          */
    169132    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED) /* 108 THROW                          */
     
    178141
    179142    OPSPEC(    UNUSED,        STD,        STD,        VAR) /* 112 INIT_METHOD_CALL               */
    180 #   ifdef ZEND_ENGINE_2_3
     143#ifdef ZEND_ENGINE_2_3
    181144    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */
    182 #   else
     145#else
    183146    OPSPEC(    UNUSED,     UCLASS,        STD,     UNUSED) /* 113 INIT_STATIC_METHOD_CALL        */
    184 #   endif
     147#endif
    185148    OPSPEC(     ISSET,        STD,      FETCH,        TMP) /* 114 ISSET_ISEMPTY_VAR              */
    186149    OPSPEC(     ISSET,        STD,        STD,        TMP) /* 115 ISSET_ISEMPTY_DIM_OBJ          */
     
    234197    OPSPEC(       STD,     UNUSED,     UNUSED,        STD) /* 149 HANDLE_EXCEPTION               */
    235198    OPSPEC(       STD,     UNUSED,     UNUSED,        STD) /* 150 USER_OPCODE                    */
    236 # ifdef ZEND_ENGINE_2_3
     199#ifdef ZEND_ENGINE_2_3
    237200    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 151 UNDEF                          */
    238201    OPSPEC(    UNUSED,        STD,    JMPADDR,        TMP) /* 152 JMP_SET                        */
    239202    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 153 DECLARE_LAMBDA_FUNCTION        */
    240 # endif
    241 # ifdef ZEND_ENGINE_2_4
     203#endif
     204#ifdef ZEND_ENGINE_2_4
    242205    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 154 ADD_TRAIT                      */
    243206    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 155 BIND_TRAITS                    */
     
    245208    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 157 QM_ASSIGN_VAR                  */
    246209    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 158 JMP_SET_VAR                    */
    247 # endif
    248 # ifdef ZEND_ENGINE_2_5
     210#endif
     211#ifdef ZEND_ENGINE_2_5
    249212    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 159 DISCARD_EXCEPTION              */
    250213    OPSPEC(    UNUSED,        STD,        STD,     UNUSED) /* 160 YIELD                          */
     
    252215    OPSPEC(    UNUSED,    JMPADDR,     UNUSED,     UNUSED) /* 162 FAST_CALL                      */
    253216    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 163 FAST_RET                       */
    254 # endif
    255 #else
    256     OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 107 UNDEF                          */
    257     OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 108 UNDEF                          */
    258     OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 109 UNDEF                          */
    259     OPSPEC(     FCALL,        STD,     OPLINE,        VAR) /* 61 DO_FCALL_BY_FUNC                */
    260     OPSPEC(INIT_FCALL,        STD,        STD,     UNUSED) /* 111 INIT_FCALL_BY_FUNC             */
    261     OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 112 UNDEF                          */
    262217#endif
    263218};
  • trunk/xcache/xc_sandbox.c

    r1275 r1281  
    195195#if 0 && TODO
    196196    {
    197         xc_cest_t tmp_cest;
    198         zend_hash_copy(&TG(class_table), &XG(internal_class_table), NULL, (void *) &tmp_cest, sizeof(tmp_cest));
     197        zend_class_entry *dummy_class_entry;
     198        zend_hash_copy(&TG(class_table), &XG(internal_class_table), NULL, (void *) &dummy_class_entry, sizeof(dummy_class_entry));
    199199    }
    200200#endif
     
    278278    /* install class */
    279279    while (b != NULL) {
    280         xc_install_class(sandbox->filename, (xc_cest_t*) b->pData, -1,
     280        xc_install_class(sandbox->filename, *(zend_class_entry **)b->pData, -1,
    281281                BUCKET_KEY_TYPE(b), ZSTR(BUCKET_KEY_S(b)), b->nKeyLength, b->h TSRMLS_CC);
    282282        b = b->pListNext;
  • trunk/xcache/xc_utils.c

    r1213 r1281  
    7878{
    7979    /* avoid duplicate apply for shadowed method */
    80 #ifdef ZEND_ENGINE_2
    8180    if (mi->ce != zf->common.scope) {
    8281        /* fprintf(stderr, "avoided duplicate %s\n", zf->common.function_name); */
    8382        return 0;
    8483    }
    85 #else
    86     char *name = zf->common.function_name;
    87     int name_s = strlen(name) + 1;
    88     zend_class_entry *ce;
    89     zend_function *ptr;
    90 
    91     for (ce = mi->ce->parent; ce; ce = ce->parent) {
    92         if (zend_hash_find(&ce->function_table, name, name_s, (void **) &ptr) == SUCCESS) {
    93             if (ptr->op_array.refcount == zf->op_array.refcount) {
    94                 return 0;
    95             }
    96         }
    97     }
    98 #endif
    9984    return xc_apply_function(zf, &mi->fi TSRMLS_CC);
    10085}
    10186/* }}} */
    102 static int xc_apply_cest(xc_cest_t *cest, xc_apply_func_info *fi TSRMLS_DC) /* {{{ */
     87static int xc_apply_class(zend_class_entry **ce, xc_apply_func_info *fi TSRMLS_DC) /* {{{ */
    10388{
    10489    xc_apply_method_info mi;
    10590
    10691    mi.fi = *fi;
    107     mi.ce = CestToCePtr(*cest);
    108     zend_hash_apply_with_argument(&(CestToCePtr(*cest)->function_table), (apply_func_arg_t) xc_apply_method, &mi TSRMLS_CC);
     92    mi.ce = *ce;
     93    zend_hash_apply_with_argument(&((*ce)->function_table), (apply_func_arg_t) xc_apply_method, &mi TSRMLS_CC);
    10994    return 0;
    11095}
     
    115100    fi.applyer = applyer;
    116101    zend_hash_apply_with_argument(cr->function_table, (apply_func_arg_t) xc_apply_function, &fi TSRMLS_CC);
    117     zend_hash_apply_with_argument(cr->class_table, (apply_func_arg_t) xc_apply_cest, &fi TSRMLS_CC);
     102    zend_hash_apply_with_argument(cr->class_table, (apply_func_arg_t) xc_apply_class, &fi TSRMLS_CC);
    118103
    119104    return applyer(cr->op_array TSRMLS_CC);
     
    278263static void xc_fix_opcode_ex_znode(int tofix, xc_op_spec_t spec, Z_OP_TYPEOF_TYPE *op_type, znode_op *op, int type TSRMLS_DC) /* {{{ */
    279264{
    280 #ifdef ZEND_ENGINE_2
    281265    if ((*op_type != IS_UNUSED && (spec == OPSPEC_UCLASS || spec == OPSPEC_CLASS)) ||
    282266            spec == OPSPEC_FETCH) {
     
    304288        }
    305289    }
    306 #endif
    307290}
    308291/* }}} */
     
    380363                break;
    381364
    382 #ifdef ZEND_ENGINE_2
    383365            case ZEND_DECLARE_INHERITED_CLASS:
    384366                callback(opline, opline - begin, data TSRMLS_CC);
    385367                break;
    386 #else
    387             case ZEND_DECLARE_FUNCTION_OR_CLASS:
    388                 if (opline->extended_value == ZEND_DECLARE_INHERITED_CLASS) {
    389                     callback(opline, opline - begin, data TSRMLS_CC);
    390                 }
    391                 break;
    392 #endif
    393368        }
    394369
     
    415390
    416391    switch (opline->opcode) {
    417 #ifdef ZEND_ENGINE_2
    418392    case ZEND_DECLARE_INHERITED_CLASS:
    419393        {
     
    464438            ZEND_VM_SET_OPCODE_HANDLER(abstract_op);
    465439        }
    466 #else
    467     case ZEND_DECLARE_FUNCTION_OR_CLASS:
    468         if (do_bind_function_or_class(opline, NULL, class_table, 1) == FAILURE) {
    469             return FAILURE;
    470         }
    471 #endif
    472440        break;
    473441
     
    531499                    NULL
    532500                    ) == FAILURE) {
    533             CG(zend_lineno) = ZESW(func->op_array.opcodes[0].lineno, func->op_array.line_start);
     501            CG(zend_lineno) = func->op_array.line_start;
    534502#ifdef IS_UNICODE
    535503            zend_error(E_ERROR, "Cannot redeclare %R()", type, key);
     
    541509}
    542510/* }}} */
    543 ZESW(xc_cest_t *, void) xc_install_class(ZEND_24(NOTHING, const) char *filename, xc_cest_t *cest, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC) /* {{{ */
     511void xc_install_class(ZEND_24(NOTHING, const) char *filename, zend_class_entry *ce, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC) /* {{{ */
    544512{
    545513    zend_bool istmpkey;
    546     zend_class_entry *cep = CestToCePtr(*cest);
    547     ZESW(void *stored_ce_ptr, NOTHING);
    548514
    549515#ifdef IS_UNICODE
     
    554520    if (istmpkey) {
    555521        zend_u_hash_quick_update(CG(class_table), type, key, len, h,
    556                     cest, sizeof(xc_cest_t),
    557                     ZESW(&stored_ce_ptr, NULL)
     522                    ce, sizeof(zend_class_entry *),
     523                    NULL
    558524                    );
    559525#ifndef ZEND_COMPILE_DELAYED_BINDING
     
    564530    }
    565531    else if (zend_u_hash_quick_add(CG(class_table), type, key, len, h,
    566                 cest, sizeof(xc_cest_t),
    567                 ZESW(&stored_ce_ptr, NULL)
     532                ce, sizeof(zend_class_entry *),
     533                NULL
    568534                ) == FAILURE) {
    569         CG(zend_lineno) = ZESW(0, Z_CLASS_INFO(*cep).line_start);
     535        CG(zend_lineno) = Z_CLASS_INFO(*ce).line_start;
    570536#ifdef IS_UNICODE
    571         zend_error(E_ERROR, "Cannot redeclare class %R", type, cep->name);
    572 #else
    573         zend_error(E_ERROR, "Cannot redeclare class %s", cep->name);
     537        zend_error(E_ERROR, "Cannot redeclare class %R", type, ce->name);
     538#else
     539        zend_error(E_ERROR, "Cannot redeclare class %s", ce->name);
    574540#endif
    575541        assert(oplineno == -1);
    576542    }
    577     ZESW(return (xc_cest_t *) stored_ce_ptr, NOTHING);
    578543}
    579544/* }}} */
  • trunk/xcache/xc_utils.h

    r1051 r1281  
    4040#endif
    4141void xc_install_function(ZEND_24(NOTHING, const) char *filename, zend_function *func, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
    42 ZESW(xc_cest_t *, void) xc_install_class(ZEND_24(NOTHING, const) char *filename, xc_cest_t *cest, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
     42void xc_install_class(ZEND_24(NOTHING, const) char *filename, zend_class_entry *class_entry, int oplineno, zend_uchar type, const24_zstr key, uint len, ulong h TSRMLS_DC);
    4343
    4444typedef zend_bool (*xc_if_func_t)(void *data);
Note: See TracChangeset for help on using the changeset viewer.