Changeset 1303 in svn for trunk/lib/Decompiler.class.php


Ignore:
Timestamp:
2013-07-12T16:59:43Z (2 years ago)
Author:
Xuefer
Message:

disassembler, Decompiler: fix catch, ticks

File:
1 edited

Legend:

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

    r1302 r1303  
    677677                    'op1' => array(),
    678678                    'op2' => array(),
    679                     'op3' => array(),
     679                    'result' => array(),
    680680                );
    681681                foreach ($opcodes[$i] as $name => $value) {
     
    979979                $this->dasmBasicBlock($EX, array($catchFirst, $catchOpLine));
    980980                $catchOp = &$opcodes[$catchOpLine];
    981                 echo $indent, 'catch (', str($this->getOpVal($catchOp['op1'], $EX)), ' ', str($this->getOpVal($catchOp['op2'], $EX)), ") {", PHP_EOL;
     981                echo $indent, 'catch ('
     982                        , isset($catchOp['op1']['constant']) ? $catchOp['op1']['constant'] : str($this->getOpVal($catchOp['op1'], $EX))
     983                        , ' '
     984                        , str($this->getOpVal($catchOp['op2'], $EX))
     985                        , ") {", PHP_EOL;
    982986                unset($catchOp);
    983987
     
    14021406            $res = $op['result'];
    14031407            $ext = $op['extended_value'];
    1404             $currentSourceLine = $op['line'];
     1408            $currentSourceLine = $op['lineno'];
    14051409            $EX['value2constant'][$currentSourceLine] = '__LINE__';
    14061410
     
    19701974                // }}}
    19711975            case XC_INCLUDE_OR_EVAL: // {{{
    1972                 $type = $op2['var']; // hack
     1976                $type = ZEND_ENGINE_2_4 ? $ext : $op2['var']; // hack
    19731977                $keyword = $this->includeTypes[$type];
    19741978                $resvar = "$keyword " . str($this->getOpVal($op1, $EX));
     
    21292133                break;
    21302134            case XC_TICKS:
    2131                 $lastphpop['ticks'] = $this->getOpVal($op1, $EX);
     2135                $lastphpop['ticks'] = ZEND_ENGINE_2_4 ? $ext : $this->getOpVal($op1, $EX);
    21322136                // $EX['tickschanged'] = true;
    21332137                break;
     
    22462250
    22472251            default:
    2248                 if ($k == 'result') {
    2249                     var_dump($op);
    2250                     assert(0);
    2251                     exit;
    2252                 }
    2253                 else {
    2254                     $d[$kk] = $this->getOpVal($op[$k], $EX);
    2255                 }
     2252                $d[$kk] = $this->getOpVal($op[$k], $EX);
    22562253            }
    22572254        }
Note: See TracChangeset for help on using the changeset viewer.