|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object | +--coins.ir.hir.HIR_Impl | +--coins.ir.hir.HirModify
HirModify class This class contains methods to modify HIR tree.
フィールドの概要 | |
protected HIR |
hir
|
protected IoRoot |
ioRoot
|
クラス coins.ir.hir.HIR_Impl から継承したフィールド |
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage |
インタフェース coins.ir.hir.HIR から継承したフィールド |
OP_CODE_NAME, OP_CODE_NAME_DENSE |
インタフェース coins.ir.IR から継承したフィールド |
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF |
コンストラクタの概要 | |
HirModify(HirRoot pHirRoot)
Construct HirModify object that can be used to invoke methods of HirModyfy in other classes. |
メソッドの概要 | |
void |
adjustLabelInf(HIR pHir,
IrList pLabelCorresp)
adjustLabelInf is called from HIR.copyWithOperandsChangingLabels and adjust labal information for compound HIR subtrees that may contain labeled statements such as SWITCH, LOOP, IF, BLOCK, SEQ, LIST, LabeledStmt. |
void |
changeLabelsInTree(HIR pTree,
IrList pLabelCorrespondence)
changeLabelsInTree Change labels defined in pTree and return the list of labels showing the old-new correspondence. |
protected void |
checkStmtInExp(HIR pHir,
java.util.List pModPairList,
java.util.List pPeelList,
Stmt pAncestorStmt,
boolean pWithinExp)
|
Label |
getNewLabel(Label pOldLabel,
IrList pLabelCorresp)
getNewLabel Get the new label corresponding to pOldLabel by looking up pLabelCorresp list. |
IrList |
makeLabelCorrespondenceList(HIR pTree)
makeLabelCrrespondenceList Change labels defined in pTree and return the list of labels showing the old-new correspondence. |
boolean |
modifyHirIfNecerrary(HIR pHir)
Called from finishHir() to modify HIR or examine HIR if necessary. |
HIR |
popoutStmtInExp(Stmt pStmt)
popoutStmtInExp pops out statements within expressions in front of the statement where the popped out statement can be placed. |
クラス java.lang.Object から継承したメソッド |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
フィールドの詳細 |
protected final IoRoot ioRoot
protected final HIR hir
コンストラクタの詳細 |
public HirModify(HirRoot pHirRoot)
pHirRoot
- Instance of HirRoot to be recorded
in the HirModify object.メソッドの詳細 |
public void changeLabelsInTree(HIR pTree, IrList pLabelCorrespondence)
Change labels defined in pTree and return the list of labels showing the old-new correspondence. pTree should not contain labels listed in (IrList of new labels) so as not to fall in infinite replacement loop. If pTree contains an instance of LoopStmt, IfStmt, SwitchStmt, SubpDefinition, then the labels got by getLoopBackLabel(), getLoopEndLabel(), etc. are also changed.
pLabelCorrespondence
- List of label correspondence
(IrList (IrList of original labels) (IrList of new labels) )public IrList makeLabelCorrespondenceList(HIR pTree)
pTree
- HIR tree to be changed.
public Label getNewLabel(Label pOldLabel, IrList pLabelCorresp)
pOldLabel
- Old label to be changed.pLabelCorresp
- List of label correspondence
(IrList (IrList original labels) (IrList new labels) )
public void adjustLabelInf(HIR pHir, IrList pLabelCorresp)
adjustLabelInf is called from HIR.copyWithOperandsChangingLabels and adjust labal information for compound HIR subtrees that may contain labeled statements such as SWITCH, LOOP, IF, BLOCK, SEQ, LIST, LabeledStmt.
pHir
- copied HIR after changing labels but
before adsjusting label information.pLabelCorresp
- shows correspondence between old labels and
new labels.public HIR popoutStmtInExp(Stmt pStmt)
popoutStmtInExp pops out statements within expressions in front of the statement where the popped out statement can be placed. When an HIR containing a block or a list where expression is expected is produced by optimization, etc., the popoutStmtInExp method changes the HIR to a normal HIR so that other modules can handle it. When a block having ExpStmt as its last statement is included where expression is expected, then statements except the last one are popped out and the block is replaced with the expression reppresented by the last ExpStmt. When a list having an expression as its last element is included where expression is expected, then statements included in the list are popped out and the list is replaced with the last expression in the list. If no modification is necessary, then the given parameter (pStmt) itsself is returned.
pStmt
- statement that may contain statements where
expression is expected.
protected void checkStmtInExp(HIR pHir, java.util.List pModPairList, java.util.List pPeelList, Stmt pAncestorStmt, boolean pWithinExp)
public boolean modifyHirIfNecerrary(HIR pHir)
pHir
- HIR to be modified/examined.
|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |