Changeset 803 in svn


Ignore:
Timestamp:
2011-04-27T04:52:34Z (4 years ago)
Author:
Xuefer
Message:

Decompile: remove tostr in getOpVal. it is implemented by str() and foldToCode()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Decompiler.class.php

    r802 r803  
    609609    }
    610610    // }}}
    611     function getOpVal($op, &$EX, $tostr = true, $free = false) // {{{
     611    function getOpVal($op, &$EX, $free = false) // {{{
    612612    {
    613613        switch ($op['op_type']) {
    614614        case XC_IS_CONST:
    615             return foldToCode(value($op['constant']), $EX);
     615            return value($op['constant']);
    616616
    617617        case XC_IS_VAR:
     
    619619            $T = &$EX['Ts'];
    620620            $ret = $T[$op['var']];
    621             if ($tostr) {
    622                 $ret = foldToCode($ret, $EX);
    623             }
    624621            if ($free && empty($this->keepTs)) {
    625622                unset($T[$op['var']]);
     
    753750
    754751            $this->recognizeAndDecompileClosedBlocks($EX, array($range[0], $range[0]), $indent . INDENT);
    755             $op1 = $this->getOpVal($firstOp['op1'], $EX, false, true);
     752            $op1 = $this->getOpVal($firstOp['op1'], $EX, true);
    756753
    757754            $this->recognizeAndDecompileClosedBlocks($EX, array($range[0] + 1, $range[1]), $indent . INDENT);
    758             $op2 = $this->getOpVal($lastOp['op1'], $EX, false, true);
     755            $op2 = $this->getOpVal($lastOp['op1'], $EX, true);
    759756
    760757            $T[$firstOp['result']['var']] = new Decompiler_Binop($this, $op1, $firstOp['opcode'], $op2);
     
    775772            $condition = $this->getOpVal($firstOp['op1'], $EX);
    776773            $this->recognizeAndDecompileClosedBlocks($EX, $trueRange, $indent . INDENT);
    777             $trueValue = $this->getOpVal($opcodes[$trueRange[1]]['op1'], $EX, false, true);
     774            $trueValue = $this->getOpVal($opcodes[$trueRange[1]]['op1'], $EX, true);
    778775            $this->recognizeAndDecompileClosedBlocks($EX, $falseRange, $indent . INDENT);
    779             $falseValue = $this->getOpVal($opcodes[$falseRange[1]]['op1'], $EX, false, true);
     776            $falseValue = $this->getOpVal($opcodes[$falseRange[1]]['op1'], $EX, true);
    780777            $T[$opcodes[$trueRange[1]]['result']['var']] = new Decompiler_TriOp($condition, $trueValue, $falseValue);
    781778            return false;
     
    14791476            case XC_UNSET_DIM:
    14801477            case XC_UNSET_OBJ:
    1481                 $src = $this->getOpVal($op1, $EX, false);
     1478                $src = $this->getOpVal($op1, $EX);
    14821479                if (is_a($src, "Decompiler_ForeachBox")) {
    14831480                    $src->iskey = $this->getOpVal($op2, $EX);
     
    14911488                else {
    14921489                    if (!is_a($src, "Decompiler_ListBox")) {
    1493                         $op1val = $this->getOpVal($op1, $EX, false);
     1490                        $op1val = $this->getOpVal($op1, $EX);
    14941491                        $list = new Decompiler_List(isset($op1val) ? $op1val : '$this');
    14951492
     
    15401537            case XC_ASSIGN: // {{{
    15411538                $lvalue = $this->getOpVal($op1, $EX);
    1542                 $rvalue = $this->getOpVal($op2, $EX, false);
     1539                $rvalue = $this->getOpVal($op2, $EX);
    15431540                if (is_a($rvalue, 'Decompiler_ForeachBox')) {
    15441541                    $type = $rvalue->iskey ? 'fe_key' : 'fe_as';
     
    15761573            case XC_ASSIGN_REF: // {{{
    15771574                $lvalue = $this->getOpVal($op1, $EX);
    1578                 $rvalue = $this->getOpVal($op2, $EX, false);
     1575                $rvalue = $this->getOpVal($op2, $EX);
    15791576                if (is_a($rvalue, 'Decompiler_Fetch')) {
    15801577                    $src = str($rvalue->src, $EX);
     
    17101707                }
    17111708
    1712                 $EX['fbc'] = $this->getOpVal($op2, $EX, false);
     1709                $EX['fbc'] = $this->getOpVal($op2, $EX);
    17131710                if (($opc == XC_INIT_STATIC_METHOD_CALL || $opc == XC_INIT_METHOD_CALL) && !isset($EX['fbc'])) {
    17141711                    $EX['fbc'] = '__construct';
     
    17411738                break;
    17421739            case XC_DO_FCALL:
    1743                 $fname = unquoteName($this->getOpVal($op1, $EX, false), $EX);
     1740                $fname = unquoteName($this->getOpVal($op1, $EX), $EX);
    17441741                $args = $this->popargs($EX, $ext);
    17451742                $resvar = $fname . "($args)";
     
    18711868            case XC_INIT_ARRAY:
    18721869            case XC_ADD_ARRAY_ELEMENT: // {{{
    1873                 $rvalue = $this->getOpVal($op1, $EX, false, true);
     1870                $rvalue = $this->getOpVal($op1, $EX, true);
    18741871
    18751872                if ($opc == XC_ADD_ARRAY_ELEMENT) {
     
    19281925                // }}}
    19291926            case XC_FE_FETCH: // {{{
    1930                 $op['fe_src'] = $this->getOpVal($op1, $EX, false, true);
     1927                $op['fe_src'] = $this->getOpVal($op1, $EX, true);
    19311928                $fe = new Decompiler_ForeachBox($op);
    19321929                $fe->iskey = false;
     
    21272124                else if (isset($this->binops[$opc])) { // {{{
    21282125                    $this->usedOps[$opc] = true;
    2129                     $op1val = $this->getOpVal($op1, $EX, false);
    2130                     $op2val = $this->getOpVal($op2, $EX, false);
     2126                    $op1val = $this->getOpVal($op1, $EX);
     2127                    $op2val = $this->getOpVal($op2, $EX);
    21312128                    $rvalue = new Decompiler_Binop($this, $op1val, $opc, $op2val);
    21322129                    $resvar = $rvalue;
Note: See TracChangeset for help on using the changeset viewer.