Changeset 991


Ignore:
Timestamp:
2012-07-18T09:52:35+02:00 (2 years ago)
Author:
moo
Message:

refactor: split compatibility

Location:
trunk
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/config.m4

    r990 r991  
    2929                  xcache.c \ 
    3030                  xcache/xc_const_string.c \ 
     31                  xcache/xc_compatibility.c \ 
    3132                  xcache/xc_lock.c \ 
    3233                  xcache/xc_mem.c \ 
  • trunk/config.w32

    r990 r991  
    1717                          xcache.c \ 
    1818                          xcache/xc_const_string.c \ 
     19                          xcache/xc_compatibility.c \ 
    1920                          xcache/xc_lock.c \ 
    2021                          xcache/xc_mem.c \ 
  • trunk/xcache.h

    r987 r991  
    2222#include "xcache/xc_shm.h" 
    2323#include "xcache/xc_lock.h" 
    24  
    25 #if !defined(ZEND_ENGINE_2_4) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 4 || PHP_MAJOR_VERSION > 5) 
    26 #   define ZEND_ENGINE_2_4 
    27 #endif 
    28 #if !defined(ZEND_ENGINE_2_3) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 3 || defined(ZEND_ENGINE_2_4)) 
    29 #   define ZEND_ENGINE_2_3 
    30 #endif 
    31 #if !defined(ZEND_ENGINE_2_2) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 2 || defined(ZEND_ENGINE_2_3)) 
    32 #   define ZEND_ENGINE_2_2 
    33 #endif 
    34 #if !defined(ZEND_ENGINE_2_1) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 1 || defined(ZEND_ENGINE_2_2)) 
    35 #   define ZEND_ENGINE_2_1 
    36 #endif 
    37  
    38 #define NOTHING 
    39 /* ZendEngine code Switcher */ 
    40 #ifndef ZEND_ENGINE_2 
    41 #   define ZESW(v1, v2) v1 
    42 #else 
    43 #   define ZESW(v1, v2) v2 
    44 #endif 
    45 #ifdef ZEND_ENGINE_2_4 
    46 #   define ZEND_24(pre24, v24) v24 
    47 #else 
    48 #   define ZEND_24(pre24, v24) pre24 
    49 #endif 
    50  
    51 #ifdef do_alloca_with_limit 
    52 #   define my_do_alloca(size, use_heap) do_alloca_with_limit(size, use_heap) 
    53 #   define my_free_alloca(size, use_heap) free_alloca_with_limit(size, use_heap) 
    54 #elif defined(ALLOCA_FLAG) 
    55 #   define my_do_alloca(size, use_heap) do_alloca(size, use_heap) 
    56 #   define my_free_alloca(size, use_heap) free_alloca(size, use_heap) 
    57 #else 
    58 #   define my_do_alloca(size, use_heap) do_alloca(size) 
    59 #   define my_free_alloca(size, use_heap) free_alloca(size) 
    60 #   define ALLOCA_FLAG(x) 
    61 #endif 
    62 #ifndef Z_ISREF 
    63 #   define Z_ISREF(z) (z).is_ref 
    64 #endif 
    65 #ifndef Z_SET_ISREF 
    66 #   define Z_SET_ISREF(z) (z).is_ref = 1 
    67 #endif 
    68 #ifndef Z_UNSET_ISREF 
    69 #   define Z_UNSET_ISREF(z) (z).is_ref = 0 
    70 #endif 
    71 #ifndef Z_REFCOUNT 
    72 #   define Z_REFCOUNT(z) (z).refcount 
    73 #endif 
    74 #ifndef Z_SET_REFCOUNT 
    75 #   define Z_SET_REFCOUNT(z, rc) (z).refcount = rc 
    76 #endif 
    77 #ifndef IS_CONSTANT_TYPE_MASK 
    78 #   define IS_CONSTANT_TYPE_MASK (~IS_CONSTANT_INDEX) 
    79 #endif 
    80  
    81 /* {{{ dirty fix for PHP 6 */ 
    82 #ifdef add_assoc_long_ex 
    83 static inline void my_add_assoc_long_ex(zval *arg, char *key, uint key_len, long value) 
    84 { 
    85     add_assoc_long_ex(arg, key, key_len, value); 
    86 } 
    87 #   undef add_assoc_long_ex 
    88 #   define add_assoc_long_ex my_add_assoc_long_ex 
    89 #endif 
    90 #ifdef add_assoc_bool_ex 
    91 static inline void my_add_assoc_bool_ex(zval *arg, char *key, uint key_len, zend_bool value) 
    92 { 
    93     add_assoc_bool_ex(arg, key, key_len, value); 
    94 } 
    95 #   undef add_assoc_bool_ex 
    96 #   define add_assoc_bool_ex my_add_assoc_bool_ex 
    97 #endif 
    98 #ifdef add_assoc_null_ex 
    99 static inline void my_add_assoc_null_ex(zval *arg, char *key, uint key_len) 
    100 { 
    101     add_assoc_null_ex(arg, key, key_len); 
    102 } 
    103 #   undef add_assoc_null_ex 
    104 #   define add_assoc_null_ex my_add_assoc_null_ex 
    105 #endif 
    106  
    107 #ifdef ZEND_ENGINE_2_4 
    108 #   define Z_OP(op) (op) 
    109 #   define Z_OP_CONSTANT(op) (op).literal->constant 
    110 #   define Z_OP_TYPE(op) op##_##type 
    111 #   define Z_OP_TYPEOF_TYPE zend_uchar 
    112  
    113 #   define Z_CLASS_INFO(className) (className).info.user 
    114 #else 
    115 #   define Z_OP(op) (op).u 
    116 #   define Z_OP_CONSTANT(op) (op).u.constant 
    117 #   define Z_OP_TYPE(op) (op).op_type 
    118 #   define Z_OP_TYPEOF_TYPE int 
    119 typedef znode znode_op; 
    120  
    121 #   define Z_CLASS_INFO(className) (className) 
    122 #endif 
    123  
    124 /* }}} */ 
    125  
    126 /* unicode */ 
    127 #ifdef IS_UNICODE 
    128 #   define UNISW(text, unicode) unicode 
    129 #else 
    130 #   define UNISW(text, unicode) text 
    131 #endif 
    132 #define BUCKET_KEY_SIZE(b) \ 
    133         (UNISW( \ 
    134             (b)->nKeyLength, \ 
    135                 ((b)->key.type == IS_UNICODE) \ 
    136                 ? UBYTES(b->nKeyLength) \ 
    137                 : b->nKeyLength \ 
    138                 )) 
    139 #define BUCKET_KEY(b)      (UNISW((b)->arKey, (b)->key.arKey)) 
    140 #define BUCKET_KEY_S(b)    ZSTR_S(BUCKET_KEY(b)) 
    141 #define BUCKET_KEY_U(b)    ZSTR_U(BUCKET_KEY(b)) 
    142 #define BUCKET_KEY_TYPE(b) (UNISW(IS_STRING,  (b)->key.type)) 
    143 #ifdef IS_UNICODE 
    144 #   define BUCKET_HEAD_SIZE(b) XtOffsetOf(Bucket, key.arKey) 
    145 #else 
    146 #   define BUCKET_HEAD_SIZE(b) XtOffsetOf(Bucket, arKey) 
    147 #endif 
    148  
    149 #ifdef ZEND_ENGINE_2_4 
    150 #   define BUCKET_SIZE(b) (sizeof(Bucket) + BUCKET_KEY_SIZE(b)) 
    151 #else 
    152 #   define BUCKET_SIZE(b) (BUCKET_HEAD_SIZE(b) + BUCKET_KEY_SIZE(b)) 
    153 #endif 
    154  
    155 #ifndef IS_UNICODE 
    156 typedef char *zstr; 
    157 typedef const char *const_zstr; 
    158 #ifdef ZEND_ENGINE_2_4 
    159 typedef const char *const24_zstr; 
    160 typedef const char *const24_str; 
    161 #else 
    162 typedef char *const24_zstr; 
    163 typedef char *const24_str; 
    164 #endif 
    165  
    166 #   define ZSTR_S(s)     (s) 
    167 #   define ZSTR_U(s)     (s) 
    168 #   define ZSTR_V(s)     (s) 
    169 #   define ZSTR_PS(s)    (s) 
    170 #   define ZSTR_PU(s)    (s) 
    171 #   define ZSTR_PV(s)    (s) 
    172 #else 
    173 typedef const zstr const_zstr; 
    174 #   define ZSTR_S(zs)    ((zs).s) 
    175 #   define ZSTR_U(zs)    ((zs).u) 
    176 #   define ZSTR_V(zs)    ((zs).v) 
    177 #   define ZSTR_PS(pzs)  ((pzs)->s) 
    178 #   define ZSTR_PU(pzs)  ((pzs)->u) 
    179 #   define ZSTR_PV(pzs)  ((pzs)->v) 
    180 #endif 
    181  
    182 #ifndef ZSTR 
    183 #   define ZSTR(s)      (s) 
    184 #endif 
    185  
    186 #ifndef Z_UNIVAL 
    187 #   define Z_UNIVAL(zval) (zval).value.str.val 
    188 #   define Z_UNILEN(zval) (zval).value.str.len 
    189 #endif 
    190  
    191 /* {{{ u hash wrapper */ 
    192 #ifndef IS_UNICODE 
    193 #   define zend_u_hash_add(ht, type, arKey, nKeyLength, pData, nDataSize, pDest) \ 
    194        zend_hash_add(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength, pData, nDataSize, pDest) 
    195  
    196 #   define zend_u_hash_quick_add(ht, type, arKey, nKeyLength, h, pData, nDataSize, pDest) \ 
    197        zend_hash_quick_add(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength, h, pData, nDataSize, pDest) 
    198  
    199 #   define zend_u_hash_update(ht, type, arKey, nKeyLength, pData, nDataSize, pDest) \ 
    200        zend_hash_update(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength, pData, nDataSize, pDest) 
    201  
    202 #   define zend_u_hash_quick_update(ht, type, arKey, nKeyLength, h, pData, nDataSize, pDest) \ 
    203        zend_hash_quick_update(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength, h, pData, nDataSize, pDest) 
    204  
    205 #   define zend_u_hash_find(ht, type, arKey, nKeyLength, pData) \ 
    206        zend_hash_find(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength, pData) 
    207  
    208 #   define zend_u_hash_quick_find(ht, type, arKey, nKeyLength, h, pData) \ 
    209        zend_hash_quick_find(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength, h, pData) 
    210  
    211 #   define zend_u_hash_exists(ht, type, arKey, nKeyLength) \ 
    212        zend_hash_exists(ht, ZEND_24((char *), NOTHING) arKey, nKeyLength) 
    213  
    214 #   define add_u_assoc_zval_ex(arg, type, key, key_len, value) \ 
    215         add_assoc_zval_ex(arg, key, key_len, value) 
    216  
    217 #   define zend_u_is_auto_global(type, name, name_len) \ 
    218         zend_is_auto_global(name, name_len) 
    219 #endif 
    220 /* }}} */ 
    221  
     24#include "xcache/xc_compatibility.h" 
    22225 
    22326#define ECALLOC_N(x, n) ((x) = ecalloc(n, sizeof((x)[0]))) 
    22427#define ECALLOC_ONE(x) ECALLOC_N(x, 1) 
    225  
    226  
    22728 
    22829typedef ulong xc_hash_value_t; 
     
    23233    xc_hash_value_t mask; 
    23334} xc_hash_t; 
    234  
    235 /* the class entry type to be stored in class_table */ 
    236 typedef ZESW(zend_class_entry, zend_class_entry*) xc_cest_t; 
    237  
    238 /* xc_cest_t to (zend_class_entry*) */ 
    239 #define CestToCePtr(st) (ZESW(\ 
    240             &(st), \ 
    241             st \ 
    242             ) ) 
    243  
    244 /* ZCEP=zend class entry ptr */ 
    245 #define ZCEP_REFCOUNT_PTR(pce) (ZESW( \ 
    246             (pce)->refcount, \ 
    247             &((pce)->refcount) \ 
    248             )) 
    249  
    250 #define ZCE_REFCOUNT_PTR(ce) ZCE_REFCOUNT_PTR(&ce) 
    25135 
    25236typedef zend_op_array *(zend_compile_file_t)(zend_file_handle *h, int type TSRMLS_DC); 
  • trunk/xcache/xc_sandbox.c

    r990 r991  
    434434#endif 
    435435 
    436 #ifndef ZEND_ENGINE_2_3 
    437 #include "ext/standard/php_string.h" 
    438 size_t xc_dirname(char *path, size_t len) /* {{{ */ 
    439 { 
    440 #ifdef ZEND_ENGINE_2 
    441     return php_dirname(path, len); 
    442 #else 
    443     php_dirname(path, len); 
    444     return strlen(path); 
    445 #endif 
    446 } 
    447 /* }}} */ 
    448  
    449 long xc_atol(const char *str, int str_len) /* {{{ */ 
    450 { 
    451     long retval; 
    452  
    453     if (!str_len) { 
    454         str_len = strlen(str); 
    455     } 
    456  
    457     retval = strtol(str, NULL, 0); 
    458     if (str_len > 0) { 
    459         switch (str[str_len - 1]) { 
    460         case 'g': 
    461         case 'G': 
    462             retval *= 1024; 
    463             /* break intentionally missing */ 
    464         case 'm': 
    465         case 'M': 
    466             retval *= 1024; 
    467             /* break intentionally missing */ 
    468         case 'k': 
    469         case 'K': 
    470             retval *= 1024; 
    471             break; 
    472         } 
    473     } 
    474  
    475     return retval; 
    476 } 
    477 /* }}} */ 
    478  
    479 #endif 
    480  
    481436/* init/destroy */ 
    482437int xc_util_init(int module_number TSRMLS_DC) /* {{{ */ 
  • trunk/xcache/xc_sandbox.h

    r989 r991  
    55#pragma once 
    66#endif // _MSC_VER > 1000 
     7 
     8/* Purpose: run specified function in compiler sandbox, restore everything to previous state after it returns 
     9 */ 
    710 
    811/* return op_array to install */ 
  • trunk/xcache/xc_utils.h

    r990 r991  
    4949void xc_copy_internal_zend_constants(HashTable *target, HashTable *source); 
    5050#endif 
    51  
    52 #ifndef ZEND_ENGINE_2_3 
    53 size_t xc_dirname(char *path, size_t len); 
    54 #define zend_dirname xc_dirname 
    55 long xc_atol(const char *str, int len); 
    56 #define zend_atol xc_atol 
    57 #endif 
Note: See TracChangeset for help on using the changeset viewer.