Changeset 791
- Timestamp:
- 2011-04-25T17:27:44+02:00 (2 years ago)
- File:
-
- 1 edited
-
trunk/Decompiler.class.php (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Decompiler.class.php
r790 r791 585 585 $ret = foldToCode($ret, $EX); 586 586 } 587 if ($free ) {587 if ($free && empty($this->keepTs)) { 588 588 unset($T[$op['var']]); 589 589 } … … 880 880 $opcodes = &$EX['opcodes']; 881 881 882 $ i = $starti = $first;883 while ($i <= $last) {882 $starti = $first; 883 for ($i = $starti; $i <= $last; ++$i) { 884 884 $op = $opcodes[$i]; 885 885 if (!empty($op['jmpins']) || !empty($op['jmpouts'])) { 886 886 $blockFirst = $i; 887 887 $blockLast = -1; 888 $i = $blockFirst; 889 // $this->dumpRange($EX, $i, $last, $indent); 888 $j = $blockFirst; 890 889 do { 891 $op = $opcodes[$ i];890 $op = $opcodes[$j]; 892 891 if (!empty($op['jmpins'])) { 893 892 // care about jumping from blocks behind, not before … … 901 900 $blockLast = max($blockLast, max($op['jmpouts']) - 1); 902 901 } 903 ++$ i;904 } while ($ i<= $blockLast);902 ++$j; 903 } while ($j <= $blockLast); 905 904 assert('$blockLast <= $last'); 906 905 … … 910 909 } 911 910 $this->decompileComplexBlock($EX, $blockFirst, $blockLast, $indent); 912 $i = $starti = $blockLast + 1; 911 $starti = $blockLast + 1; 912 $i = $starti - 1; 913 913 continue; 914 914 } 915 915 } 916 ++$i;917 916 } 918 917 if ($starti <= $last) { … … 1030 1029 1031 1030 /* dump whole array 1031 $this->keepTs = true; 1032 1032 $this->dasmBasicBlock($EX, $first, $last); 1033 1033 for ($i = $first; $i <= $last; ++$i) { … … 1778 1778 // }}} 1779 1779 case XC_FE_FETCH: // {{{ 1780 $op['fe_src'] = $this->getOpVal($op1, $EX );1780 $op['fe_src'] = $this->getOpVal($op1, $EX, false, true); 1781 1781 $fe = new Decompiler_ForeachBox($op); 1782 1782 $fe->iskey = false;
Note: See TracChangeset
for help on using the changeset viewer.

