coins.opt
クラス OptUtil

java.lang.Object
  |
  +--coins.opt.OptUtil

public class OptUtil
extends java.lang.Object

OptUtil Utility methods that perform some modifications on the program. Those that do not perform modifications should be moved to FlowUtil.


コンストラクタの概要
OptUtil()
           
 
メソッドの概要
static void addFirstStmt(BlockStmt pBlock, Stmt pStmt)
           
static void addLastStmt(BlockStmt pBlock, Stmt pStmt)
          Add pStmt at the tail of pBlock if the tail of pBlock is not a branch statement.
static void addNextStmt(Stmt pCurrentStmt, Stmt pNewStmt)
          Add pNewStmt so that it follows pCurrentStmt.
static ConstNode create0ConstNode(Type pType, FlowRoot pFlowRoot)
          create0ConstNode
static IR createConstNodeFromConstNode(IR pConstNode, FlowRoot pFlowRoot)
          createConstNodeFromConstNode
static ConstNode createConstNodeFromPrimitive(double pFloatVal, Type pType, FlowRoot pFlowRoot)
          ceateConstNodeFromPrimitive
static ConstNode createConstNodeFromPrimitive(long pIntVal, Type pType, FlowRoot pFlowRoot)
          ceateConstNodeFromPrimitive
static void deleteStmt(Stmt pStmt)
           
static IR fold(IR pIR, FlowRoot pFlowRoot)
          fold
static void insertPreviousStmt(Stmt pCurrentStmt, Stmt pNewStmt)
          Insert pNewStmt in front of pCurrentStmt.
static boolean isCall(IR pIR)
          isCall
static boolean isOutOfValueRange(Type pType)
          isOutOfValueRange
static void replaceNode(IR pOld, IR pNew)
          peplaceNode No longer necessary?
static void replaceStmt(Stmt pOldStmt, Stmt pNewStmt)
          Replace pOldStmt by pNewStmt.
static void setStmt(LabeledStmt pLabeledStmt, Stmt pStmt)
           
static IR wrapCallNode(IR pCallNode, FlowRoot pFlowRoot)
          wrapCallNode If pCallNode is a FunctionExp node, wraps the node with an ExpStmt.
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

OptUtil

public OptUtil()
メソッドの詳細

replaceNode

public static void replaceNode(IR pOld,
                               IR pNew)
peplaceNode No longer necessary?


replaceStmt

public static void replaceStmt(Stmt pOldStmt,
                               Stmt pNewStmt)
Replace pOldStmt by pNewStmt.

パラメータ:
pOldStmt - statement to be deleted.
pNewStmt - statement to override.

addNextStmt

public static void addNextStmt(Stmt pCurrentStmt,
                               Stmt pNewStmt)
Add pNewStmt so that it follows pCurrentStmt. If pCurrentStmt is not given, do nothing.

パラメータ:
pCurrentStmt - show the position to insert.
pNewStmt - statement to be inserted.

insertPreviousStmt

public static void insertPreviousStmt(Stmt pCurrentStmt,
                                      Stmt pNewStmt)
Insert pNewStmt in front of pCurrentStmt. If pCurrentStmt is null, do nothing.

パラメータ:
pCurrentStmt - show the place to insert.
pNewStmt - statement to be inserted.

deleteStmt

public static void deleteStmt(Stmt pStmt)

addFirstStmt

public static void addFirstStmt(BlockStmt pBlock,
                                Stmt pStmt)

addLastStmt

public static void addLastStmt(BlockStmt pBlock,
                               Stmt pStmt)
Add pStmt at the tail of pBlock if the tail of pBlock is not a branch statement. If the tail of pBlock is a branch statement, then insert pStmt in front of the branch statement.

パラメータ:
pBlock - BlockStmt in which pStmt is to be added.
pStmt - statement to be added.

setStmt

public static void setStmt(LabeledStmt pLabeledStmt,
                           Stmt pStmt)

isCall

public static boolean isCall(IR pIR)
isCall


fold

public static IR fold(IR pIR,
                      FlowRoot pFlowRoot)
fold


createConstNodeFromConstNode

public static IR createConstNodeFromConstNode(IR pConstNode,
                                              FlowRoot pFlowRoot)
createConstNodeFromConstNode


wrapCallNode

public static IR wrapCallNode(IR pCallNode,
                              FlowRoot pFlowRoot)
wrapCallNode If pCallNode is a FunctionExp node, wraps the node with an ExpStmt. Does nothing otherwise.


createConstNodeFromPrimitive

public static ConstNode createConstNodeFromPrimitive(long pIntVal,
                                                     Type pType,
                                                     FlowRoot pFlowRoot)
ceateConstNodeFromPrimitive


createConstNodeFromPrimitive

public static ConstNode createConstNodeFromPrimitive(double pFloatVal,
                                                     Type pType,
                                                     FlowRoot pFlowRoot)
ceateConstNodeFromPrimitive


isOutOfValueRange

public static boolean isOutOfValueRange(Type pType)
isOutOfValueRange


create0ConstNode

public static ConstNode create0ConstNode(Type pType,
                                         FlowRoot pFlowRoot)
create0ConstNode