coins.ssa
Class BackTranslateFromSsaBriggs

java.lang.Object
  extended bycoins.ssa.BackTranslateFromSsaBriggs
All Implemented Interfaces:
LocalTransformer, Transformer

class BackTranslateFromSsaBriggs
extends java.lang.Object
implements LocalTransformer


Nested Class Summary
(package private)  class BackTranslateFromSsaBriggs.Couple
           
(package private)  class BackTranslateFromSsaBriggs.CoupleSet
           
(package private)  class BackTranslateFromSsaBriggs.PickingRegister
           
(package private)  class BackTranslateFromSsaBriggs.ReplaceVisitor
           
 
Field Summary
static int THR
          The threshold of debug print
 
Constructor Summary
BackTranslateFromSsaBriggs(SsaEnvironment enviroment, SsaSymTab ssasymtab, boolean ex)
           
 
Method Summary
(package private)  boolean asDest(LirNode src, LirNode instr)
           
(package private)  boolean asUse(LirNode node, LirNode instr)
           
(package private)  void checkWeak(Function func)
           
(package private)  void cutting(LirNode src, LirNode dest, LirNode instr)
           
(package private)  LirNode cuttingCopy(LirNode src, LirNode dest, LirNode copy)
           
 boolean doIt(Data data, ImList args)
          Transform the DATA component.
 boolean doIt(Function function, ImList args)
          Transform the L-function func.
(package private)  LirNode getJthOperand(BasicBlk block, LirNode phinode)
          return J-th operand (corresponding to "block") from "phinode".
(package private)  LirNode getPhiDest(LirNode phinode)
          retun "dest" of "phinode".
(package private)  BiList getPhiNodes(BasicBlk block)
          return "list" of phi-nodes in "block".
(package private)  void insertCopyAtHead(BasicBlk block, LirNode node)
          Insert "node" at block'head.
(package private)  void insertCopyAtTail(BasicBlk block, LirNode node)
           
(package private)  boolean inSucc(BasicBlk block, BasicBlk child)
           
(package private)  boolean isCopy(LirNode node)
           
(package private)  boolean isLiveAtSuccEntry(Symbol s, BasicBlk block)
           
(package private)  boolean isNeedCopy(LirNode node, BasicBlk block)
           
(package private)  boolean isReg(LirNode node)
          retun true if "node" is register.
(package private)  void jumpRepair(BasicBlk block)
           
 java.lang.String name()
          Return the name of the transforming engine.
(package private)  void phiNodeModify(LirNode node, BasicBlk block)
           
(package private)  void printList(BiList target)
           
(package private)  void removePhiNodes()
           
(package private)  boolean removeUselessCopy()
           
(package private)  boolean removeUselessCopyBEFORE()
           
(package private)  void repair(LirNode instr, BasicBlk block)
           
(package private)  void replaceNode(LirNode node1, LirNode node2, LirNode instr)
           
 java.lang.String subject()
          Return brief description of the tranformation.
(package private)  void travel(BasicBlk block, LirNode dest, BiList candidates)
           
(package private)  void updateHash(java.util.Hashtable hashtable, java.lang.Object key, java.lang.Object elem)
          Update "elem" of "hashtable" at "key".
(package private)  void walkPreorder(LirVisitor v, LirNode node)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

THR

public static final int THR
The threshold of debug print

See Also:
Constant Field Values
Constructor Detail

BackTranslateFromSsaBriggs

public BackTranslateFromSsaBriggs(SsaEnvironment enviroment,
                                  SsaSymTab ssasymtab,
                                  boolean ex)
Method Detail

doIt

public boolean doIt(Data data,
                    ImList args)
Description copied from interface: LocalTransformer
Transform the DATA component.

Specified by:
doIt in interface LocalTransformer
Parameters:
data - DATA to be transformed.
args - list of optional arguments.
Returns:
true if transformation suceeded.

name

public java.lang.String name()
Description copied from interface: Transformer
Return the name of the transforming engine. Used for trace tag name.

Specified by:
name in interface Transformer
Returns:
the name of the transforming engine.

subject

public java.lang.String subject()
Description copied from interface: Transformer
Return brief description of the tranformation.

Specified by:
subject in interface Transformer
Returns:
brief description of the tranformation.

doIt

public boolean doIt(Function function,
                    ImList args)
Description copied from interface: LocalTransformer
Transform the L-function func.

Specified by:
doIt in interface LocalTransformer
Parameters:
function - L-function to be transformed.
args - list of optional arguments.
Returns:
true if transformation suceeded.

getPhiNodes

BiList getPhiNodes(BasicBlk block)
return "list" of phi-nodes in "block".


getPhiDest

LirNode getPhiDest(LirNode phinode)
retun "dest" of "phinode".


getJthOperand

LirNode getJthOperand(BasicBlk block,
                      LirNode phinode)
return J-th operand (corresponding to "block") from "phinode".


isReg

boolean isReg(LirNode node)
retun true if "node" is register. retun false if "node" is not register.


updateHash

void updateHash(java.util.Hashtable hashtable,
                java.lang.Object key,
                java.lang.Object elem)
Update "elem" of "hashtable" at "key".


insertCopyAtHead

void insertCopyAtHead(BasicBlk block,
                      LirNode node)
Insert "node" at block'head. If there are some phi-functions, "node" is inserted behind thoes.


insertCopyAtTail

void insertCopyAtTail(BasicBlk block,
                      LirNode node)

removePhiNodes

void removePhiNodes()

checkWeak

void checkWeak(Function func)

isNeedCopy

boolean isNeedCopy(LirNode node,
                   BasicBlk block)

phiNodeModify

void phiNodeModify(LirNode node,
                   BasicBlk block)

printList

void printList(BiList target)

travel

void travel(BasicBlk block,
            LirNode dest,
            BiList candidates)

isCopy

boolean isCopy(LirNode node)

inSucc

boolean inSucc(BasicBlk block,
               BasicBlk child)

replaceNode

void replaceNode(LirNode node1,
                 LirNode node2,
                 LirNode instr)

asUse

boolean asUse(LirNode node,
              LirNode instr)

asDest

boolean asDest(LirNode src,
               LirNode instr)

cutting

void cutting(LirNode src,
             LirNode dest,
             LirNode instr)

cuttingCopy

LirNode cuttingCopy(LirNode src,
                    LirNode dest,
                    LirNode copy)

jumpRepair

void jumpRepair(BasicBlk block)

repair

void repair(LirNode instr,
            BasicBlk block)

isLiveAtSuccEntry

boolean isLiveAtSuccEntry(Symbol s,
                          BasicBlk block)

removeUselessCopy

boolean removeUselessCopy()

removeUselessCopyBEFORE

boolean removeUselessCopyBEFORE()

walkPreorder

void walkPreorder(LirVisitor v,
                  LirNode node)