Changeset 1316 in svn


Ignore:
Timestamp:
2013-07-15T06:40:37+02:00 (23 months ago)
Author:
Xuefer
Message:

Decompiler, disassembler: update PHP 5.0 support

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Decompiler.class.php

    r1315 r1316  
    15941594            case XC_ASSIGN_DIM:
    15951595            case XC_UNSET_DIM:
     1596            case XC_UNSET_DIM_OBJ:
    15961597            case XC_UNSET_OBJ:
    15971598                $src = $this->getOpVal($op1, $EX);
     
    21292130                $flags = array_flip(explode('_', $opname));
    21302131                if (isset($flags['OBJ'])) {
    2131                     $resvar = $this->getOpVal($op1, $EX) . '->' . unquoteVariableName($this->getOpVal($op2, $EX), $EX);
     2132                    $name = isset($op2['constant']) ? $op2['constant'] : unquoteVariableName($this->getOpVal($op2, $EX), $EX);
     2133                    $resvar = str($this->getOpVal($op1, $EX)) . '->' . $name;
    21322134                }
    21332135                else {
    2134                     $resvar = $this->getOpVal($op1, $EX);
     2136                    $resvar = str($this->getOpVal($op1, $EX));
    21352137                }
    21362138                $opstr = isset($flags['DEC']) ? '--' : '++';
     
    21662168                assert(isset($type2cast[$type]));
    21672169                $cast = $type2cast[$type];
    2168                 $resvar = $cast . ' ' . $this->getOpVal($op1, $EX);
     2170                $resvar = $cast . ' ' . str($this->getOpVal($op1, $EX));
    21692171                break;
    21702172                // }}}
     
    21732175            case XC_EXT_FCALL_END:
    21742176            case XC_EXT_NOP:
     2177            case XC_INIT_CTOR_CALL:
    21752178                break;
    21762179            case XC_DECLARE_FUNCTION:
     
    28372840define('IS_LONG',     1);
    28382841define('IS_DOUBLE',   2);
    2839 define('IS_BOOL',     3);
     2842define('IS_BOOL',     ZEND_ENGINE_2_1 ? 3 : 6);
    28402843define('IS_ARRAY',    4);
    28412844define('IS_OBJECT',   5);
    2842 define('IS_STRING',   6);
     2845define('IS_STRING',   ZEND_ENGINE_2_1 ? 6 : 3);
    28432846define('IS_RESOURCE', 7);
    28442847define('IS_CONSTANT', 8);
     
    28762879    'XC_DO_FCALL_BY_FUNC' => -1,
    28772880    'XC_GOTO' => -1,
     2881    'XC_INIT_CTOR_CALL' => -1,
    28782882    'XC_INIT_FCALL_BY_FUNC' => -1,
    28792883    'XC_INIT_NS_FCALL_BY_NAME' => -1,
     
    28842888    'XC_QM_ASSIGN_VAR' => -1,
    28852889    'XC_UNSET_DIM' => -1,
     2890    'XC_UNSET_DIM_OBJ' => -1,
    28862891    'XC_UNSET_OBJ' => -1,
    28872892    'XC_USER_OPCODE' => -1,
  • trunk/xcache/xc_opcode_spec_def.h

    r1306 r1316  
    7171#ifdef ZEND_ENGINE_2_3
    7272    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 69 INIT_NS_FCALL_BY_NAME          */
     73#elif defined(ZEND_ENGINE_2_1)
     74    OPSPEC(    UNUSED,     UNUSED,     UNUSED,     UNUSED)
    7375#else
    7476    OPSPEC(    UNUSED,        STD,     OPLINE,     UNUSED) /* 69 JMP_NO_CTOR                    */
     
    7880    OPSPEC(       BIT,        STD,        STD,        TMP) /* 72 ADD_ARRAY_ELEMENT              */
    7981    OPSPEC(    UNUSED,        STD,    INCLUDE,        VAR) /* 73 INCLUDE_OR_EVAL                */
     82    OPSPEC(    UNUSED,        STD,      FETCH,     UNUSED) /* 74 UNSET_VAR                      */
    8083#ifdef ZEND_ENGINE_2_1
    8184  /* php 5.1 and up */
    82     OPSPEC(    UNUSED,        STD,      FETCH,     UNUSED) /* 74 UNSET_VAR                      */
    8385    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 75 UNSET_DIM                      */
    8486    OPSPEC(       STD,        STD,        STD,     UNUSED) /* 76 UNSET_OBJ                      */
     
    8789  /* <= php 5.0 */
    8890  /* though there is no ISSET_ISEMPTY in php 5.0 it's better to leave it here i guess */
    89     OPSPEC(    UNUSED,        STD,     UNUSED,     UNUSED)
    90     OPSPEC(    UNUSED,        VAR,        STD,     UNUSED)
     91    OPSPEC(    UNUSED,        VAR,        STD,     UNUSED) /* 75 UNSET_DIM_OBJ                  */
    9192    OPSPEC(    UNUSED,        VAR,      ISSET,        TMP)
    9293    OPSPEC(       BIT,        STD,     UNUSED,        VAR)
Note: See TracChangeset for help on using the changeset viewer.