Ignore:
Timestamp:
2013-07-15T19:37:57+02:00 (13 months ago)
Author:
moo
Message:

add back PHP_4 code for disassembler

File:
1 edited

Legend:

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

    r1319 r1321  
    146146class Decompiler_Value extends Decompiler_Object // {{{ 
    147147{ 
    148     public $value; 
     148    var $value; 
    149149 
    150150    function Decompiler_Value($value = null) 
     
    175175class Decompiler_Code extends Decompiler_Object // {{{ 
    176176{ 
    177     public $src; 
     177    var $src; 
    178178 
    179179    function Decompiler_Code($src) 
     
    193193class Decompiler_Binop extends Decompiler_Code // {{{ 
    194194{ 
    195     public $opc; 
    196     public $op1; 
    197     public $op2; 
    198     public $parent; 
     195    var $opc; 
     196    var $op1; 
     197    var $op2; 
     198    var $parent; 
    199199 
    200200    function Decompiler_Binop($parent, $op1, $opc, $op2) 
     
    234234class Decompiler_TriOp extends Decompiler_Code // {{{ 
    235235{ 
    236     public $condition; 
    237     public $trueValue; 
    238     public $falseValue; 
     236    var $condition; 
     237    var $trueValue; 
     238    var $falseValue; 
    239239 
    240240    function Decompiler_TriOp($condition, $trueValue, $falseValue) 
     
    262262class Decompiler_Fetch extends Decompiler_Code // {{{ 
    263263{ 
    264     public $src; 
    265     public $fetchType; 
     264    var $src; 
     265    var $fetchType; 
    266266 
    267267    function Decompiler_Fetch($src, $type, $globalSrc) 
     
    295295class Decompiler_Box // {{{ 
    296296{ 
    297     public $obj; 
     297    var $obj; 
    298298 
    299299    function Decompiler_Box(&$obj) 
     
    310310class Decompiler_Dim extends Decompiler_Value // {{{ 
    311311{ 
    312     public $offsets = array(); 
    313     public $isLast = false; 
    314     public $isObject = false; 
    315     public $assign = null; 
     312    var $offsets = array(); 
     313    var $isLast = false; 
     314    var $isObject = false; 
     315    var $assign = null; 
    316316 
    317317    function toCode($indent) 
     
    342342class Decompiler_List extends Decompiler_Code // {{{ 
    343343{ 
    344     public $src; 
    345     public $dims = array(); 
    346     public $everLocked = false; 
     344    var $src; 
     345    var $dims = array(); 
     346    var $everLocked = false; 
    347347 
    348348    function toCode($indent) 
     
    500500class Decompiler_ForeachBox extends Decompiler_Box // {{{ 
    501501{ 
    502     public $iskey; 
     502    var $iskey; 
    503503 
    504504    function toCode($indent) 
     
    511511class Decompiler 
    512512{ 
    513     public $namespace; 
    514     public $namespaceDecided; 
    515     public $activeFile; 
    516     public $activeClass; 
    517     public $activeMethod; 
    518     public $activeFunction; 
     513    var $namespace; 
     514    var $namespaceDecided; 
     515    var $activeFile; 
     516    var $activeClass; 
     517    var $activeMethod; 
     518    var $activeFunction; 
    519519 
    520520    function Decompiler() 
     
    13751375        } 
    13761376        unset($op); 
    1377         if ($op_array['try_catch_array']) { 
     1377        if (isset($op_array['try_catch_array'])) { 
    13781378            foreach ($op_array['try_catch_array'] as $try_catch_element) { 
    13791379                $catch_op = $try_catch_element['catch_op']; 
     
    14931493                $EX['object'] = (int) $res['var']; 
    14941494                $EX['called_scope'] = null; 
    1495                 $EX['fbc'] = 'new ' . $this->stripNamespace($this->getOpVal($op1, $EX)); 
     1495                $EX['fbc'] = 'new ' . $this->stripNamespace(isset($op1['constant']) ? $op1['constant'] : $this->getOpVal($op1, $EX)); 
    14961496                break; 
    14971497                // }}} 
     
    15391539 
    15401540                if ($op1['op_type'] == XC_IS_CONST) { 
     1541                    if (!ZEND_ENGINE_2) { 
     1542                        $resvar = $op1['constant']; 
     1543                        break; 
     1544                    } 
    15411545                    $resvar = $this->stripNamespace($op1['constant']); 
    15421546                } 
     
    15551559            case XC_FETCH_UNSET: 
    15561560            case XC_FETCH_IS: 
    1557                 $fetchType = defined('ZEND_FETCH_TYPE_MASK') ? ($ext & ZEND_FETCH_TYPE_MASK) : $op2['EA.type']; 
     1561                $fetchType = defined('ZEND_FETCH_TYPE_MASK') ? ($ext & ZEND_FETCH_TYPE_MASK) : $op2[!ZEND_ENGINE_2 ? 'fetch_type' : 'EA.type']; 
    15581562                $name = isset($op1['constant']) ? $op1['constant'] : unquoteName($this->getOpVal($op1, $EX), $EX); 
    15591563                if ($fetchType == ZEND_FETCH_STATIC_MEMBER) { 
     
    16011605                if (is_a($src, "Decompiler_ForeachBox")) { 
    16021606                    assert($opc == XC_FETCH_DIM_TMP_VAR); 
    1603                     $src = clone $src; 
     1607                    if (ZEND_ENGINE_2) { 
     1608                        $src = clone($src); 
     1609                    } 
     1610                    else { 
     1611                        $src = new Decompiler_ForeachBox($src->obj); 
     1612                    } 
    16041613                    $src->iskey = $op2['constant']; 
    16051614                    $resvar = $src; 
     
    16421651                } 
    16431652                else if ($opc == XC_UNSET_DIM_OBJ) { 
    1644                     $dim->isObject = $ext == ZEND_UNSET_OBJ; 
     1653                    $dim->isObject = ZEND_ENGINE_2 ? $ext == ZEND_UNSET_OBJ : false /* cannot distingue */; 
    16451654                } 
    16461655                unset($dim); 
     
    17921801                } 
    17931802 
    1794                 /* TODO: use type mask */ 
    1795                 switch (($ext & ZEND_ISSET_ISEMPTY_MASK)) { 
     1803                switch (((!ZEND_ENGINE_2 ? $op['op2']['var'] /* constant */ : $ext) & ZEND_ISSET_ISEMPTY_MASK)) { 
    17961804                case ZEND_ISSET: 
    17971805                    $rvalue = "isset(" . str($rvalue) . ")"; 
     
    18451853            case XC_INIT_NS_FCALL_BY_NAME: 
    18461854            case XC_INIT_FCALL_BY_NAME: // {{{ 
     1855                if (!ZEND_ENGINE_2 && ($ext & ZEND_CTOR_CALL)) { 
     1856                    break; 
     1857                } 
    18471858                array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope'])); 
    18481859                $EX['object'] = null; 
     
    25292540        // }}} 
    25302541        // {{{ properties 
    2531         if (!ZEND_ENGINE_2_4) { 
     2542        if (ZEND_ENGINE_2 && !ZEND_ENGINE_2_4) { 
    25322543            $default_static_members = $class[ZEND_ENGINE_2_1 ? 'default_static_members' : 'static_members']; 
    25332544        } 
    2534         $member_variables = $class['properties_info']; 
     2545        $member_variables = $class[ZEND_ENGINE_2 ? 'properties_info' : 'default_properties']; 
    25352546        if ($member_variables) { 
    25362547            echo "\n"; 
    2537             foreach ($member_variables as $name => $info) { 
    2538                 if (!empty($info['doc_comment'])) { 
     2548            foreach ($member_variables as $name => $dummy) { 
     2549                $info = isset($class['properties_info']) ? $class['properties_info'][$name] : null; 
     2550                if (isset($info) && !empty($info['doc_comment'])) { 
    25392551                    echo $newindent; 
    25402552                    echo $info['doc_comment']; 
     
    25432555 
    25442556                echo $newindent; 
    2545                 $static = ($info['flags'] & ZEND_ACC_STATIC); 
    2546  
    2547                 if ($static) { 
    2548                     echo "static "; 
     2557                if (ZEND_ENGINE_2) { 
     2558                    $static = ($info['flags'] & ZEND_ACC_STATIC); 
     2559 
     2560                    if ($static) { 
     2561                        echo "static "; 
     2562                    } 
    25492563                } 
    25502564 
    25512565                $mangleSuffix = ''; 
    2552                 if (!isset($info)) { 
     2566                if (!ZEND_ENGINE_2) { 
     2567                    echo 'var '; 
     2568                } 
     2569                else if (!isset($info)) { 
    25532570                    echo 'public '; 
    25542571                } 
     
    25762593                if (ZEND_ENGINE_2_4) { 
    25772594                    $value = $class[$static ? 'default_static_members_table' : 'default_properties_table'][$info['offset']]; 
     2595                } 
     2596                else if (!ZEND_ENGINE_2) { 
     2597                    $value = $class['default_properties'][$name]; 
    25782598                } 
    25792599                else { 
     
    27292749define('ZEND_ENGINE_2_2', ZEND_ENGINE_2_3 || PHP_VERSION >= "5.2."); 
    27302750define('ZEND_ENGINE_2_1', ZEND_ENGINE_2_2 || PHP_VERSION >= "5.1."); 
     2751define('ZEND_ENGINE_2',   ZEND_ENGINE_2_1 || PHP_VERSION >= "5.0."); 
    27312752 
    27322753define('ZEND_ACC_STATIC',         0x01); 
     
    28802901//*/ 
    28812902foreach (array ( 
     2903    'XC_ADD_INTERFACE' => -1, 
     2904    'XC_ASSIGN_DIM' => -1, 
     2905    'XC_ASSIGN_OBJ' => -1, 
     2906    'XC_CATCH' => -1, 
     2907    'XC_CLONE' => -1, 
     2908    'XC_DECLARE_CLASS' => -1, 
    28822909    'XC_DECLARE_CONST' => -1, 
     2910    'XC_DECLARE_FUNCTION' => -1, 
    28832911    'XC_DECLARE_FUNCTION_OR_CLASS' => -1, 
     2912    'XC_DECLARE_INHERITED_CLASS' => -1, 
    28842913    'XC_DECLARE_INHERITED_CLASS_DELAYED' => -1, 
    28852914    'XC_DECLARE_LAMBDA_FUNCTION' => -1, 
    28862915    'XC_DO_FCALL_BY_FUNC' => -1, 
     2916    'XC_FETCH_CLASS' => -1, 
    28872917    'XC_GOTO' => -1, 
     2918    'XC_HANDLE_EXCEPTION' => -1, 
    28882919    'XC_INIT_CTOR_CALL' => -1, 
    28892920    'XC_INIT_FCALL_BY_FUNC' => -1, 
     2921    'XC_INIT_METHOD_CALL' => -1, 
    28902922    'XC_INIT_NS_FCALL_BY_NAME' => -1, 
     2923    'XC_INIT_STATIC_METHOD_CALL' => -1, 
     2924    'XC_INSTANCEOF' => -1, 
    28912925    'XC_ISSET_ISEMPTY' => -1, 
     2926    'XC_ISSET_ISEMPTY_DIM_OBJ' => -1, 
     2927    'XC_ISSET_ISEMPTY_PROP_OBJ' => -1, 
     2928    'XC_ISSET_ISEMPTY_VAR' => -1, 
    28922929    'XC_JMP_NO_CTOR' => -1, 
    28932930    'XC_JMP_SET' => -1, 
    28942931    'XC_JMP_SET_VAR' => -1, 
     2932    'XC_OP_DATA' => -1, 
     2933    'XC_POST_DEC_OBJ' => -1, 
     2934    'XC_POST_INC_OBJ' => -1, 
     2935    'XC_PRE_DEC_OBJ' => -1, 
     2936    'XC_PRE_INC_OBJ' => -1, 
    28952937    'XC_QM_ASSIGN_VAR' => -1, 
     2938    'XC_RAISE_ABSTRACT_ERROR' => -1, 
     2939    'XC_THROW' => -1, 
    28962940    'XC_UNSET_DIM' => -1, 
    28972941    'XC_UNSET_DIM_OBJ' => -1, 
    28982942    'XC_UNSET_OBJ' => -1, 
    28992943    'XC_USER_OPCODE' => -1, 
     2944    'XC_VERIFY_ABSTRACT_CLASS' => -1, 
    29002945) as $k => $v) { 
    29012946    if (!defined($k)) { 
Note: See TracChangeset for help on using the changeset viewer.