|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectcoins.ir.hir.HIR_Impl
coins.ir.hir.HirModify
HirModify class This class contains methods to modify HIR tree.
| Field Summary | |
protected HIR |
hir
|
protected IoRoot |
ioRoot
|
| Fields inherited from class coins.ir.hir.HIR_Impl |
fAdditionalChild, fChildCount, fChildNode1, fChildNode2, fDbgLevel, fHirAnnex, fOperator, fParentNode, fType, hirRoot, inversionTable, machineParam, sourceLanguage |
| Fields inherited from interface coins.ir.hir.HIR |
OP_CODE_NAME, OP_CODE_NAME_DENSE |
| Fields inherited from interface coins.ir.IR |
OP_INF, OP_LIST, OP_PROG, OP_SUBP_DEF |
| Constructor Summary | |
HirModify(HirRoot pHirRoot)
Construct HirModify object that can be used to invoke methods of HirModyfy in other classes. |
|
| Method Summary | |
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 |
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. |
| Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
protected final IoRoot ioRoot
protected final HIR hir
| Constructor Detail |
public HirModify(HirRoot pHirRoot)
pHirRoot - Instance of HirRoot to be recorded
in the HirModify object.| Method Detail |
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.
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||