Changeset 1316 for trunk


Ignore:
Timestamp:
2013-07-15T06:40:37+02:00 (13 months ago)
Author:
moo
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.