|
|
|
@ -676,7 +676,7 @@ class Decompiler
|
|
|
|
|
$op = array( |
|
|
|
|
'op1' => array(), |
|
|
|
|
'op2' => array(), |
|
|
|
|
'op3' => array(), |
|
|
|
|
'result' => array(), |
|
|
|
|
); |
|
|
|
|
foreach ($opcodes[$i] as $name => $value) { |
|
|
|
|
if (preg_match('!^(op1|op2|result)\\.(.*)!', $name, $m)) { |
|
|
|
@ -978,7 +978,11 @@ class Decompiler
|
|
|
|
|
$catchBodyFirst = $catchOpLine + 1; |
|
|
|
|
$this->dasmBasicBlock($EX, array($catchFirst, $catchOpLine)); |
|
|
|
|
$catchOp = &$opcodes[$catchOpLine]; |
|
|
|
|
echo $indent, 'catch (', str($this->getOpVal($catchOp['op1'], $EX)), ' ', str($this->getOpVal($catchOp['op2'], $EX)), ") {", PHP_EOL; |
|
|
|
|
echo $indent, 'catch (' |
|
|
|
|
, isset($catchOp['op1']['constant']) ? $catchOp['op1']['constant'] : str($this->getOpVal($catchOp['op1'], $EX)) |
|
|
|
|
, ' ' |
|
|
|
|
, str($this->getOpVal($catchOp['op2'], $EX)) |
|
|
|
|
, ") {", PHP_EOL; |
|
|
|
|
unset($catchOp); |
|
|
|
|
|
|
|
|
|
$EX['lastBlock'] = null; |
|
|
|
@ -1401,7 +1405,7 @@ class Decompiler
|
|
|
|
|
$op2 = $op['op2']; |
|
|
|
|
$res = $op['result']; |
|
|
|
|
$ext = $op['extended_value']; |
|
|
|
|
$currentSourceLine = $op['line']; |
|
|
|
|
$currentSourceLine = $op['lineno']; |
|
|
|
|
$EX['value2constant'][$currentSourceLine] = '__LINE__'; |
|
|
|
|
|
|
|
|
|
$opname = xcache_get_opcode($opc); |
|
|
|
@ -1969,7 +1973,7 @@ class Decompiler
|
|
|
|
|
break; |
|
|
|
|
// }}} |
|
|
|
|
case XC_INCLUDE_OR_EVAL: // {{{ |
|
|
|
|
$type = $op2['var']; // hack |
|
|
|
|
$type = ZEND_ENGINE_2_4 ? $ext : $op2['var']; // hack |
|
|
|
|
$keyword = $this->includeTypes[$type]; |
|
|
|
|
$resvar = "$keyword " . str($this->getOpVal($op1, $EX)); |
|
|
|
|
break; |
|
|
|
@ -2128,7 +2132,7 @@ class Decompiler
|
|
|
|
|
/* always removed by compiler */ |
|
|
|
|
break; |
|
|
|
|
case XC_TICKS: |
|
|
|
|
$lastphpop['ticks'] = $this->getOpVal($op1, $EX); |
|
|
|
|
$lastphpop['ticks'] = ZEND_ENGINE_2_4 ? $ext : $this->getOpVal($op1, $EX); |
|
|
|
|
// $EX['tickschanged'] = true; |
|
|
|
|
break; |
|
|
|
|
case XC_RAISE_ABSTRACT_ERROR: |
|
|
|
@ -2245,14 +2249,7 @@ class Decompiler
|
|
|
|
|
break; |
|
|
|
|
|
|
|
|
|
default: |
|
|
|
|
if ($k == 'result') { |
|
|
|
|
var_dump($op); |
|
|
|
|
assert(0); |
|
|
|
|
exit; |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
$d[$kk] = $this->getOpVal($op[$k], $EX); |
|
|
|
|
} |
|
|
|
|
$d[$kk] = $this->getOpVal($op[$k], $EX); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
$d[';'] = $op['extended_value']; |
|
|
|
|