Changeset 1486 in svn for trunk


Ignore:
Timestamp:
2014-05-27T06:53:34+02:00 (14 months ago)
Author:
Xuefer
Message:

WIP PHP_5_6 support

Location:
trunk
Files:
1 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r1482 r1486  
    1010   * (WIP) defragment
    1111   * (WIP) cache to disk
     12   * (WIP) PHP_5_6 support
    1213 * misc:
    1314   * Reflection info added for APIs
  • trunk/NEWS

    r1478 r1486  
    114.0.0 2014-??-??
     2========
    23 * api updates
    34 * cache defragment, cache to disk
     5 * PHP_5_6 support
    46
    573.2.1 2013-??-??
  • trunk/devel/prepare.cfg.example

    r1321 r1486  
    66PHP5_4_DIR=
    77PHP5_5_DIR=
     8PHP5_6_DIR=
    89PHP6_x_DIR=
    910
    10 PHP_DEVEL_DIR=
     11PHP_DEVEL_DIR=$(PHP5_6_DIR)
    1112
    1213# path to eaccelerator source dir
  • trunk/devel/prepare.mak

    r1325 r1486  
    2525    xcache/xc_const_string_opcodes_php5.4.h \
    2626    xcache/xc_const_string_opcodes_php5.5.h \
     27    xcache/xc_const_string_opcodes_php5.6.h \
    2728    xcache/xc_const_string_opcodes_php6.x.h
    2829
     
    99100endif
    100101
     102ifeq (${PHP5_6_DIR},)
     103xcache/xc_const_string_opcodes_php5.6.h: dummy
     104    @echo "Skipped $@: PHP_5_6_DIR not set"
     105else
     106xcache/xc_const_string_opcodes_php5.6.h: ${PHP5_6_DIR}/Zend/zend_vm_def.h
     107    $(AWK) -f ./devel/gen_const_string_opcodes.awk < "$<" > "$@.tmp"
     108    mv "$@.tmp" "$@"
     109endif
     110
    101111ifeq (${PHP6_x_DIR},)
    102112xcache/xc_const_string_opcodes_php6.x.h: dummy
  • trunk/lib/Decompiler.class.php

    r1374 r1486  
    27972797
    27982798// {{{ defines
    2799 define('ZEND_ENGINE_2_4', PHP_VERSION >= "5.4");
     2799define('ZEND_ENGINE_2_6', PHP_VERSION >= "5.6");
     2800define('ZEND_ENGINE_2_5', ZEND_ENGINE_2_6 || PHP_VERSION >= "5.5.");
     2801define('ZEND_ENGINE_2_4', ZEND_ENGINE_2_5 || PHP_VERSION >= "5.4.");
    28002802define('ZEND_ENGINE_2_3', ZEND_ENGINE_2_4 || PHP_VERSION >= "5.3.");
    28012803define('ZEND_ENGINE_2_2', ZEND_ENGINE_2_3 || PHP_VERSION >= "5.2.");
     
    29262928define('IS_RESOURCE', 7);
    29272929define('IS_CONSTANT', 8);
    2928 define('IS_CONSTANT_ARRAY',   9);
     2930if (ZEND_ENGINE_2_6) {
     2931    define('IS_CONSTANT_ARRAY', -1);
     2932    define('IS_CONSTANT_AST', 9);
     2933}
     2934else {
     2935    define('IS_CONSTANT_ARRAY', 9);
     2936}
    29292937if (ZEND_ENGINE_2_4) {
    29302938    define('IS_CALLABLE', 10);
  • trunk/processor/main.m4

    r1475 r1486  
    3535define(`ALLOC', `
    3636    pushdef(`COUNT', `ifelse(`$3', `', `1', `$3')')
    37     pushdef(`SIZE', `sizeof($2)ifelse(`$3', `', `', ` * $3')')
     37    ifdef(`ALLOC_SIZE_HELPER', `
     38        pushdef(`SIZE', `ALLOC_SIZE_HELPER()')
     39    ', `
     40        pushdef(`SIZE', `sizeof($2)ifelse(`$3', `', `', ` * $3')')
     41    ')
    3842    pushdef(`REALTYPE', `ifelse(`$5', , `$2', `$5')')
    3943    /* allocate */
  • trunk/processor/processor.m4

    r1481 r1486  
    6969#ifdef ZEND_ENGINE_2
    7070DEF_HASH_TABLE_FUNC(`HashTable_zend_property_info', `zend_property_info')
     71#endif
     72#ifdef IS_CONSTANT_AST
     73define(`ZEND_AST_HELPER', `
     74    {
     75    IFCALCCOPY(`
     76        size_t zend_ast_size = $1->kind == ZEND_CONST
     77         ? sizeof(zend_ast) + sizeof(zval)
     78         : sizeof(zend_ast) + sizeof(zend_ast *) * ($1->children - 1);
     79    ')
     80
     81    pushdef(`ALLOC_SIZE_HELPER', `zend_ast_size')
     82    $2
     83    popdef(`ALLOC_SIZE_HELPER')
     84    }
     85')
     86DEF_STRUCT_P_FUNC(`zend_ast', , `dnl {{{
     87        zend_ushort i;
     88        PROCESS(zend_ushort, kind)
     89        PROCESS(zend_ushort, children)
     90        DONE(u)
     91        DISABLECHECK(`
     92            if (SRC()->kind == ZEND_CONST) {
     93                assert(SRC()->u.val);
     94                IFCOPY(`
     95                    memcpy(DST()->u.val, SRC()->u.val, sizeof(zval));
     96                ')
     97                STRUCT_P_EX(zval, DST()->u.val, SRC()->u.val, `', `', ` ')
     98                RELOCATE_EX(zval, DST()->u.val)
     99            }
     100            else {
     101                for (i = 0; i < SRC()->children; ++i) {
     102                    zend_ast *src_ast = (&SRC()->u.child)[i];
     103                    ALLOC(`(&DST()->u.child)[i]', zend_ast)
     104                    ZEND_AST_HELPER(`src_ast', `STRUCT_P_EX(zend_ast, (&DST()->u.child)[i], src_ast, `[i]', `', ` ')')
     105                    RELOCATE_EX(zend_ast, (&DST()->u.child)[i])
     106                }
     107            }
     108        ')
     109')
     110dnl }}}
    71111#endif
    72112DEF_STRUCT_P_FUNC(`zval', , `dnl {{{
     
    126166
    127167            case IS_ARRAY:
     168#ifdef IS_CONSTANT_ARRAY
    128169            case IS_CONSTANT_ARRAY:
     170#endif
     171                assert(SRC()->value.ht);
    129172                STRUCT_P(HashTable, value.ht, HashTable_zval_ptr)
    130173                break;
     174
     175#ifdef IS_CONSTANT_AST
     176            case IS_CONSTANT_AST:
     177                assert(SRC()->value.ast);
     178                ZEND_AST_HELPER(`SRC()->value.ast', `STRUCT_P(zend_ast, value.ast)')
     179                break;
     180#endif
    131181
    132182            case IS_OBJECT:
     
    238288    PROCESS(zend_bool, array_type_hint)
    239289#endif
     290#ifdef ZEND_ENGINE_2_6
     291    PROCESS(zend_uchar, pass_by_reference)
     292#endif
    240293    PROCESS(zend_bool, allow_null)
     294
     295#ifdef ZEND_ENGINE_2_6
     296    PROCESS(zend_bool, is_variadic)
     297#else
    241298    PROCESS(zend_bool, pass_by_reference)
     299#endif
     300
    242301#ifndef ZEND_ENGINE_2_4
    243302    PROCESS(zend_bool, return_reference)
     
    481540    PROCESS_CTEXTPOINTER(__unset)
    482541    PROCESS_CTEXTPOINTER(__isset)
    483 #    if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
     542#   endif
     543# if defined(ZEND_ENGINE_2_2) || PHP_MAJOR_VERSION >= 6
    484544    PROCESS_CTEXTPOINTER(__tostring)
    485 #    endif
    486 #   endif
     545# endif
     546# if defined(ZEND_ENGINE_2_6)
     547    PROCESS_CTEXTPOINTER(__debugInfo)
     548# endif
    487549    PROCESS_CTEXTPOINTER(__call)
    488550#   ifdef ZEND_CALLSTATIC_FUNC_NAME
  • trunk/xcache.c

    r1477 r1486  
    367367        break;
    368368
     369#ifdef IS_CONSTANT_ARRAY
    369370    case IS_CONSTANT_ARRAY:
    370371        *return_value = *value;
     
    372373        return_value->type = IS_ARRAY;
    373374        break;
     375#endif
     376
     377#ifdef IS_CONSTANT_AST
     378    case IS_CONSTANT_AST:
     379        RETURN_NULL();
     380        break;
     381#endif
    374382
    375383    default:
  • trunk/xcache/xc_compatibility.h

    r1321 r1486  
    1111 */
    1212
    13 #if !defined(ZEND_ENGINE_2_5) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 5 || PHP_MAJOR_VERSION > 6)
     13#if !defined(ZEND_ENGINE_2_6) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 6 || PHP_MAJOR_VERSION > 6)
     14#   define ZEND_ENGINE_2_6
     15#endif
     16#if !defined(ZEND_ENGINE_2_5) && (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION == 5 || defined(ZEND_ENGINE_2_6))
    1417#   define ZEND_ENGINE_2_5
    1518#endif
  • trunk/xcache/xc_const_string.c

    r1326 r1486  
    7272#if PHP_MAJOR_VERSION >= 6
    7373#   include "xc_const_string_opcodes_php6.x.h"
     74#elif defined(ZEND_ENGINE_2_6)
     75#   include "xc_const_string_opcodes_php5.6.h"
    7476#elif defined(ZEND_ENGINE_2_5)
    7577#   include "xc_const_string_opcodes_php5.5.h"
  • trunk/xcache/xc_opcode_spec_def.h

    r1371 r1486  
    301301    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED) /* 163 FAST_RET                       */
    302302#endif
     303#ifdef ZEND_ENGINE_2_6
     304    OPSPEC(    UNUSED,        ARG,     UNUSED,        VAR) /* 164 RECV_VARIADIC                  */
     305    OPSPEC(      SEND,        STD,        ARG,     UNUSED) /* 165 SEND_UNPACK                    */
     306    OPSPEC(    UNUSED,        STD,        STD,        TMP) /* 166 POW                            */
     307    OPSPEC(    ASSIGN,        STD,        STD,        VAR) /* 167 ASSIGN_POW                     */
     308#endif
    303309};
Note: See TracChangeset for help on using the changeset viewer.