Changeset 1338


Ignore:
Timestamp:
2013-07-22T08:06:39+02:00 (9 months ago)
Author:
moo
Message:

phpdop: show jumpouts/jmpins

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/bin/phpdop.phpr

    r1328 r1338  
    3333} 
    3434 
    35 function dump_opcodes($opcodes, $indent = '') 
     35function dump_opcodes($op_array, $indent = '') 
    3636{ 
    3737    global $decompiler; 
    3838 
    3939    $types = array('result' => 5, 'op1' => 20, 'op2' => 20); 
    40     foreach ($decompiler->fixOpcode($opcodes) as $line => $op) { 
     40    $opcodes = &$op_array['opcodes']; 
     41    $decompiler->fixOpcode($opcodes); 
     42    $decompiler->buildJmpInfo($op_array); 
     43    foreach ($opcodes as $line => $op) { 
    4144        echo $indent; 
    4245        echo sprintf("%3d ", $op['lineno']); 
     
    5356        } 
    5457        printf("%5s", isset($op['extended_value']) ?  $op['extended_value'] : ""); 
     58        if (isset($op['jmpouts']) || isset($op['jmpins'])) { 
     59            printf("%10s %10s" 
     60                    , (isset($op['jmpouts']) ? '>' . implode(',', $op['jmpouts']) : '') 
     61                    , (isset($op['jmpins']) ? '<' . implode(',', $op['jmpins']) : '') 
     62                    ); 
     63        } 
     64        if (isset($op['isCatchBegin'])) { 
     65            echo 'CB'; 
     66        } 
    5567 
    5668        echo "\n"; 
     
    7082    echo $indent, 'function ', $name, "\n"; 
    7183    if (isset($op_array)) { 
    72         dump_opcodes($op_array['opcodes'], "  " . $indent); 
     84        dump_opcodes($op_array, "  " . $indent); 
    7385    } 
    7486} 
     
    126138} 
    127139if (isset($op_array)) { 
    128     dump_opcodes($op_array['opcodes']); 
     140    dump_opcodes($op_array); 
    129141} 
    130142 
  • trunk/lib/Decompiler.class.php

    r1335 r1338  
    707707    } 
    708708    // }}} 
    709     function &fixOpcode($opcodes, $removeTailing = false, $defaultReturnValue = null) // {{{ 
     709    function fixOpCode(&$opcodes, $removeTailing = false, $defaultReturnValue = null) // {{{ 
    710710    { 
    711711        $last = count($opcodes) - 1; 
     
    758758            } 
    759759        } 
    760         return $opcodes; 
    761760    } 
    762761    // }}} 
     
    12971296    } 
    12981297    // }}} 
    1299     function &dop_array($op_array, $indent = '') // {{{ 
    1300     { 
    1301         $op_array['opcodes'] = $this->fixOpcode($op_array['opcodes'], true, $indent == '' ? 1 : null); 
     1298    function buildJmpInfo(&$op_array) // {{{ build jmpins/jmpouts to op_array 
     1299    { 
    13021300        $opcodes = &$op_array['opcodes']; 
    13031301        $last = count($opcodes) - 1; 
    1304         // {{{ build jmpins/jmpouts to op_array 
    13051302        for ($i = 0; $i <= $last; $i ++) { 
    13061303            $op = &$opcodes[$i]; 
     
    13851382            } 
    13861383        } 
    1387         // }}} 
     1384    } 
     1385    // }}} 
     1386    function &dop_array($op_array, $indent = '') // {{{ 
     1387    { 
     1388        $this->fixOpCode($op_array['opcodes'], true, $indent == '' ? 1 : null); 
     1389        $this->buildJmpInfo($op_array); 
     1390 
     1391        $opcodes = &$op_array['opcodes']; 
     1392        $last = count($opcodes) - 1; 
    13881393        // build semi-basic blocks 
    13891394        $nextbbs = array(); 
Note: See TracChangeset for help on using the changeset viewer.