Browse Source

Decompiler: dump any unhandled complex block

git-svn-id: svn://svn.lighttpd.net/xcache/trunk@806 c26eb9a1-5813-0410-bd6c-c2e55f420ca7
3.0
Xuefer 11 years ago
parent
commit
0921bdce74
  1. 11
      Decompiler.class.php

11
Decompiler.class.php

@ -699,10 +699,12 @@ class Decompiler
return $opcodes;
}
// }}}
function decompileBasicBlock(&$EX, $range, $indent) // {{{
function decompileBasicBlock(&$EX, $range, $indent, $unhandled = false) // {{{
{
$this->dasmBasicBlock($EX, $range);
// $this->dumpRange($EX, $range, $indent);
if ($unhandled) {
$this->dumpRange($EX, $range, $indent);
}
$this->outputPhp($EX, $range, $indent);
}
// }}}
@ -1004,11 +1006,14 @@ class Decompiler
echo $indent, '}', PHP_EOL;
$this->endComplexBlock($EX);
if ($opcodes[$range[1] + 1]['opcode'] == XC_SWITCH_FREE) {
$this->removeJmpInfo($EX, $range[1] + 1);
}
return;
}
// }}}
$this->decompileBasicBlock($EX, $range, $indent);
$this->decompileBasicBlock($EX, $range, $indent, true);
}
// }}}
function recognizeAndDecompileClosedBlocks(&$EX, $range, $indent) // {{{ decompile in a tree way

Loading…
Cancel
Save